SQL数据库语言
DDL 数据定义语言:
create 创建表、视图、索引...
drop 删除表、视图、索引...
alter 修改表
truncate 截断
DML 数据操控语言 (重点):
insert 插入数据
update 修改数据
delete 删除数据
select 查询数据
DCL 数据控制语言:
grant 授权
revoke 回收授权
TCL 事务控制语言 transaction control :
start transaction 开始事务(begin)
commit 提交
rollback 回滚
DDL
组合主键:primary key(字段名1,字段名2)
alter修改:
给表中添加字段:alter table 表名 add 字段名 数据类型;
修改字段列长度:alter table 表名 modify 字段名 数据类型(长度);
DDL
insert插入另一张表的数据(字段的个数和类型要保持一致):
insert into 表名1[(字段名1,字段名2,... ,字段名n)]select 字段名1,字段名2,... ,字段名n from 表名2;
update更新数据:update 表名 set 字段名=值,... [where 条件表达式];
注:主键字段主要用于查询条件,一般不会更新
级联删除:alter table 外键所在表名 add constraint fk_外表名_外字段名 foreign key(外字段名) references 主键所在表名(主字段名);
select查询:select *[(字段名1,字段名2,... ,字段名n)] from 表名 [where 条件表达式];
条件式
比较运算:
= > >= < <= !=
逻辑运算:
and or not(取反)
null值:
is null
is not null
like(模糊查询):
通配符:% 匹配任意字符
_匹配一个任意字符
between…and…范围匹配:
顺序必须从小到大
between包含等于条件
limit(mysql特有的):
limit n; n表示最多返回几条记录
limit m,n; m表示偏移量,下标从0开始
order by给结果排序:
order by 字段名 asc(升序)/desc(降序);
select语句顺序:
select * from 表名
where 条件式
order by 排序
limit 限制;
常用函数
时间加减:
select date_add(原始时间now(),时间间隔);
时间间隔语法:interval 数字 时间单位
提取时间的某个部分:
select extract(时间部分 from 原始时间now());
类型转换:
eg:select cast('11' as signed)+1;
select cast('12.55555' as decimal(5,2));
拼接字符串:
select concat(值1,值2,... ,值n);
求长度:
char_length 按字符为单位统计长度
length 按字节为单位统计长度
utf8mb4编码下,汉字一个字符占三个字节,英文一个字符占一个字节
标准sql:
select 字段名1,
case
when 条件式1 then 值1
when 条件式2 then 值2
...
else 值n
end
from 表名;
组函数:
最大值、最小值:max(字段名)、min(字段名)
求和:sun(字段名)
求个数:count(字段名) 排除null值
count(*)查看一共有多少行
平均值:avg(字段名)
去除重复(distinct):
eg:select distinct 字段名1 from 表名;//去除重复后的字段名1有哪些
select count(distinct 字段名2) from 表名;//有几种字段名2
查询帮助:
?contents 总目录
分组语法:
select 字段名 from 表名
group by 字段名
having 分组条件;
分组后对select,order by的限制:
select,order by中的字段名必须和group by 中的字段名一样
其他没有包含在group by语句中的字段名必须和组函数一起使用
执行顺序的先后:
where -> group by -> having -> select -> order by -> limit
语法顺序:
select 字段名 from 表名
where 条件式1
group by 字段名 having 条件式2
order by 顺序
limit 限制;
为字段取别名:
方法一:select 字段名 别名 from 表名;
方法二:select 字段名 as 别名 from 表名;
为表取别名:
方法一:select * from 表名 别名;
方法二:select 别名.* from 表名 别名;