DML:增删改表中的数据
- 添加数据:
- 语法:
INSERT INTO TABLE_NAME(COLUMN_NAME1,COLUMN_NAME2,...,COLUMN_NAMEn) VALUES(VALUE1,VALUE2,...,VALUEn)
注意:- 列名和值要一一对应。
- 如果默认给所有的列添加值,则可以省略列名那一项
INSERT INTO TABLE_NAME VALUES(VALUE1,VALUE2,...,VALUEn);
- 除了数值类型,其他的类型都需要使用引号引起来(单引号和双引号效果相同
- 语法:
- 删除数据:
- 语法
DELETE FROM TABLE_NAME [WHERE CONDITION]
注意:
1. 如果不加条件,表中所有的数据都会别删除
2. 如果要删除所有的记录
DELETE FROM TABLE_NAME;#不推荐使用。有多少记录就会执行多少次删除操作,效率比较低
TRUNCATE TABLE TABLE_NAME;推荐使用,效率比较高,先删除表,然后再创建一张一样的表,即执行了DROP 和 CREATE 两步操作
- 语法
- 修改数据:
- 语法:
UPDATE TABLE_NAME SET COLUMN_NAME1=VALUE1,COLUMN_NAME2=VALUE2,..., COLUMN_NAMEn=VALUEn [WHERE CONDITION];
注意: 如果不加任何条件,默认修改表中所有的记录
- 语法:
DQL:查询语句
- 语法体系:
SELECT 字段列表(表示多个查询字段用逗号分隔)FROM 表名列表(可以进行多表查询)WHERE 条件列表 GROUP BY 分组字段 HAVING 分组之后的显示的条件 ORDER BY 排序方式 LIMIT 分页限定;
- 基础查询:
- 多个字段查询
SELECT 字段名1,字段名2,... FROM TABLE_NAME
如果需要查询所有的字段,可以使用*代表所有的字段 - 去除重复
SELECT DISTINCT 字段列表 FROM TABLE_NAME;
- 计算列
一般可以使用四则运算计算一些列的值
SELECT 字段1+字段2,字段3*字段4, ... FROM TABLE_NAME;
如果四则运算时,遇上有的列中有NULL值,往往的出来的值也是NULL,这时可以用IFNULL(字段,替代值)函数来将NULL值替代 - 起别名
- AS 关键字:AS后面跟别名。
- 用法举例:
SELECT math+English AS 总分 FROM TABLE_NAME
- 多个字段查询
- 条件查询
- 语法 :where 条件
- 运算符号:
* > ,<, <=, >=,=,<> – <>相当于 != 即不等于 这里的相等判断是一个‘=’
* AND(&&),BETWEEN A AND B(在AB之间),OR(等同于||或者IN(A,B,C))
* 如果判断表中数据的值是不是NULL,可以用IS或者IS NOT进行判断。
WHERE COLUMN IS NULL
* LIKE 模糊查询
* _:单个任意字符
* %:多个任意字符
* 举例:SELECT * FROM stu WHERE NAME LIKE '张%'
查询姓张的学生
- 排序查询:
- 语法:
SELECT * FROM TABLE_NAME ORDER BY COLUMN_NAME1 排序方式1,COLUMN_NAME2 排序方式2
当前面排序的列中,有相同的值时,才会使用后面的排序方式 - 排序方式:
- ASC:升序(默认)
- DESC:降序
- 语法:
- 聚合函数:将一例数据作为一个整体,进行纵向的计算。
- count:计算个数(选择不包含空的列,一般为主键)
- max:计算最大值
- min:计算最小值
- sum:计算和
- avg:计算平均值
- 语法:
SELECT FUN_NAME(COLUMN_NAME) FROM TABLE_ANME
- 集合函数的计算排除了NULL值,所以用count的时候就会出问题
解决方法:COUNT(IFNULL(COLUMN,0))
将NULL值换成0
- 分组查询:
- 语法:
SELECT 查询字段 FORM TANBLE_NAME GROUP BY COLUMN_NAME
- 举例:查询男女同学的平均成绩对比
SELECT sex,AVG(score) FROM stu GROUP BY sex;
- 查询字段: 分组字段,聚合函数1,聚合函数2,…(以这样的形式,如果查询字段用的不是分组字段,如例子中的sex,那么查询出来的数据就不会以分组的形式显示,分组查询就失去了原本的意义。
- where和having的区别
where在分组之前进行限定,having在分组之后限定
where后不可以跟聚合函数的判断,having可以
- 语法:
- 分页查询
- 语法:
SELECT 查询字段 FROM TABLIE_NAME LIMIT START,NUMBER
START:表示从第几个开始
NUMBER:表示每页显示的数据个数 - 规律:每一页开始的索引=(当前页码 - 1)*每页显示的数据的条数
- 分页操作在不同的数据库有所不同,这里的分页操作只适合MySQL数据库
- 语法:
- 聚合函数后空格可以跟一个字符串,后面可以直接用该字符串替代聚合函数