携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情
DML数据操作语言
添加:insert
方式一
insert into 表名(列名,...) values(值1,...);
注意:
- 插入的值的类型要与列的类型一致或兼容
- 非空的列必须有值,除非设置了默认约束
- 如果有自动增长的列,那么填该列,也会自动增长填入内容
- 除了数字类型,所有的值都需要单引号包裹
方式二
insert into 表名set 列名=值,列名=值,...
修改:update
修改单表
update 表名set 列=新值,列=新值,...where 筛选条件;
修改多表
#sql92语法:
update 表1 别名,表2 别名set 列=值,...where 连接条件and 筛选条件;
#sql99语法:
update 表1 别名inner|left|right join 表2 别名on 连接条件set 列=值,...where 筛选条件;
删除:delete
单表删除
#根据条件删除数据
delete from 表名 where 筛选条件
#删除整个表,不可恢复
truncate table 表名;
多表删除
#sql92语法:
delete 表1的别名,表2的别名from 表1 别名,表2 别名where 连接条件and 筛选条件;
#sql99语法:
delete 表1的别名,表2的别名from 表1 别名inner|left|right join 表2 别名 on 连接条件where 筛选条件;
DQL数据查询语言
基础查询
语法
select 查询列表 from 表名;
#查询所有列的数据,查询列表可以用*代替
select * from 表名;
起别名
#使用as关键字给查询的字段或者表名起别名
select a.xxx as name, 查询列表 from 表名 as a;
#as关键字可以省略,原名和别名之间打个空格即可
select a.xxx name, 查询列表 from 表名 a;
去重
当我们查询出来的字段结果有重复的数据时,可以使用 DISTINCT关键字去重
select DISTINCT job from emp;
计算表达式
查询的表达式+:加,-:减,*:乘,/:除,%:取余数
isfull()
判断数据是否为空,当为空时用一个值来替换他
#在a表中查询工资字段,当数据为空(null)时,用0替换它
select isfull(sal, 0) '工资' from a
条件查询
语法
#关键字where
select 查询列表 from 表名 where 筛选条件;
运算符
-
条件运算符
=:等于 >:大于 <:小于 !=,<>:不等于 >= <= %, mod:取模 -
逻辑运算符
and(且):多个条件都符合 or(或):多个条件只符合一个即可 not(非):对结果取反 支持where、on、having语句中使用
范围查找
- is null:注意null值与null字符串值
- between 值1 and 值2。针对数字比较多
- in (值1, 值2, 值3, ...)
- not in(值1, 值2, 值3, ...)
like模糊查找
%:零或一个或多个字符
_:一个字符
排序查询
关键字 order by,支持 单个字段名、别名、表达式、函数、多个字段,order by子句在查询语句的最后面,除了limit子句
#查询a表的所有字段,根据sal字段升序排序,默认是升序
select * from a order by sal;
desc:降序
asc:升序
select * from a order by sal desc;
分页查询
Mysql独有,limit语句放在查询语句的最后
#offset要显示条目的起始索引(起始索引从0开始)
#size 要显示的条目个数
select 查询列表 from 表 limit 【offset,】size;
分组查询
在分组查询中,查询列表必须是出现在分组的字段列表中的字段或者是被聚合函数处理的字段。否则查询出的字段默认取第一条
可以执行这条语句让查询语句中查询列表不是分组条件时报错
set @@sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
语法
select 查询列表- from 表-【where 筛选条件】- group by 分组的字段列表- having 分组后的筛选-【order by 排序的字段】;
分组函数
注意:聚合函数不能存在于where语句中,也不是一定要与分组配合使用
- count:统计函数
- sum:求和
- avg:求平均
- max:最大值
- min:最小值
用聚合函数作为筛选条件时,条件必须写在 having子句中