DML:增删改表中数据
1. 添加数据
语法:
insert into 表名(列名1,列名2,...,列名n) values (值1,值2,...,值n);
注意:
- 列名与值要一一对应
- 如果表名后不定义列名,默认给所有列添加值
insert into 表名 values (值1,值2,...,值n);- 除了数字类型,其他类型需要用引号引起来(单引双引均可)
2. 删除数据
语法:delete from 表名 [where 条件];
注意:
- 如果不加条件,删除表中所有数据
- 如果要删除所有记录
- delete from 表名; #不推荐使用,有多少条记录执行多少次删除语句,效率低。
- truncate table 表名; #推荐使用,先删除表,然后再创建一张一模一样的空表。(清空表中数据),效率高。
3. 修改数据
语法:update 表名 set 列名1=值1,列名2=值2,...,列名n=值n [where 条件];
注意
- 如果不加任何条件,则会将表中所有记录全部修改
DQL:查询表中数据
1. 语法
select
字段列表
from
表名列表
group by
分组字段
having
分组之后的条件限定
order by
排序
limit
分页限定
2. 基础查询
多个字段的查询
- select 字段名1,字段名2,...字段名n from 表名;
- 注意:如果查询所有字段可以用*来替代字段列表
去除重复
- distinct #只有两个结果集数据完全一样才可以去除
- select distinct 字段1,字段2 from 表名;
计算列
- 一般可以使用四则运算来计算一些列的值。(一般只会进行数值型的计算)
- select 字段1,字段2,字段1+字段2 from 表名;
- select 字段1,字段2,字段1+ifnull(字段2,0) from 表名;
- ifnull(表达式1,表达式2) #null参与的运算,计算结果都为null
- 表达式1 哪个字段需要判断是否为null
- 表达式2 如果该字段为null后的替换值
起别名
- as
- select 字段1,字段2,字段1+ifnull(字段2,0) as 别名 from 表名;
- as也可以省略
- select 字段1,字段2,字段1+ifnull(字段2,0) 别名 from 表名;
3. 条件查询
- where子句后跟条件
- 运算符
- > 、< 、 <= 、 >= 、 = 、 <>(不等于)
- between...and
- in(集合)
- like:模糊查询
- 占位符:
- _:单个任意字符
- %:多个任意字符
- is null
- and 或&&
- not 或 !
- or 或 ||
4. 排序查询
- 语法:order by 子句
- order by 排序字段1 排序方式1 , 排序字段2 排序方式...
- 排序方式:
- ASC:升序(默认)
- DESC :降序
- 注意:如果有多个排序条件,当前边的条件值一样时,才会判断第二条件
5. 聚合函数
将一列数据作为一个整体,进行纵向的计算
count:计算个数
- 一般选择非空的列:主键
- count(*)
max:计算最小值
min:计算最小值
sum:计算和
avg:计算平均值
#注意:聚合函数的计算会排除null值
解决方案:
- 选择不包含非空的列进行计算
- ifnull函数
6. 分组查询
- 语法:group by 分组字段
- 注意:
- 分组之后查询的字段:分组字段、聚合函数
- where和having的区别:
- where在分组之前进行限定,如果不满足这个条件则不参与分组
- having是在分组之后进行限定,如果不满足结果,则不会被查询出来
- where后不可以跟聚合函数,having可以进行聚合函数的判断
7. 分页查询
- 语法:limit 开始的索引,每页查询的条数
- 公式:开始的索引=(当前的页码-1)*每页显示的条数
- limit语法只能在mysql数据库中使用,完成分页