这是我平时学习中积累的常用sql语句
希望对大家有用
显示所有数据库
show databases;
进入到数据库里面
use 数据库名字;
显示数据库中所有表
show tables
创建表
create table 表名 (_id int primary key auto_increment, ...);
添加一列
alter table 表名 add 列名 类型(长度);
删除一列
alter table 表名 drop 列名 类型(长度);
修改表名
alter table 表名 rename to 新表名;
修改字段名称
alter table 表名 change 原列名 新列名 类型(长度);
修改字段类型
alter table 表名 modify 列名 类型(长度);
补充主键
alter table 表名 add primary key(键名);
删除一张表
drop table 表名;
删除数据库
drop database 数据库名字;
展现表结构
desc 表名;
显示表的创建语句
show create table 表名
清除表并且创建新的表
truncate 表名;
添加外部约束,外键
alter table 多表名 add foreign key (需要添加约束的key) references 主表名(主表中对应al的key);
auto_increment对int值进行自增,一般针对键
------------------对表进行操作--------------
------多表查询操作-----
方式一,显式的内连接
select A表.*,B表.* from A表 join B表 on 条件表达式(例如user.id = orders.user_id)
方式二,(尽量使用第一种),隐式的内连接
select A表.*,B表.* from A表,B表 where 条件表达式(例如user.id = orders.user_id)
外链接 (原则上使用左外链接)
方式一 , 显示的左外链接,实际上是先查询A表,然后显示出来,再查询B表,有结果就显示结果,没结果显示null,其中left代表的是join左边的表
select A表.*,B表.* from A表 left join B表 on 条件表达式(例如user.id = orders.user_id)
方式二, 显示的右外链接,实际上是先查询B表,然后显示出来,再查询A表,有结果就显示结果,没结果显示null,其中right代表的是join左边的表
select A表.*,B表.* from A表 right join B表 on 条件表达式(例如user.id = orders.user_id)
结果为单个的子查询
select * from 表名 where 字段名 = (select * from 表名 where 表达式)
多个条件下子查询,一般用这个
select * from 表名 where 字段名 in(select * from 表名 where 表达式)
内连接 带多个条件的查询
select * from 表名 where 表达式 and 表达式
-------查-------
查询所有
select * from 表名
查询指定字段
select 字段名,字段名1 from 表名
查询指定字段并去除重复
select distinct 字段名,字段名1 from 表名
查询指定字段并给其一个别名
select 字段名1,字段名2 as '别名1','别名2' from 表名
带条件的查询
select * from 表名 where 字段
查询一个字段有多个条件
select * from 表名 where 字段名 in(xx,xx,xx)
查询一个字段并且分组
select count(*) from 表名 group by 要分组的字段名
查询一个字段并且分组,分组之后有条件
select count(*) from 表名 group by 要分组的字段名 having 条件表达式
通用聚合方法
sum()求和
avg()平均数
max()最大
min()最小
count()统计
having跟where一样,但是where只能在分组前使用,having可以在分组后进行使用
-------改-------
修改字段值
update 表名 set 字段名=字段值,字段名1=字段值1.. [where 表达式]
-------删-------
删除字段
delete from 表名 [where 表达式];
-------增-------
插入一条数据
insert into 表名 (列名,列名1) values (xx,xxx);