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