DML数据操作语言
来对数据库表中的数据进行增删改
添加数据
给指定的字段添加数据
INSERT INTO 表名(字段1,字段2,……)VALUES (值1,值2,……);
给全部字段添加数据
INSERT INTO 表名 VALUES (值1,值2,……);
批量添加数据
INSERT INTO 表名(字段1,字段2,……)VALUES (值1,值2,……),(值1,值2,……),(值1,值2,……);
INSERT INTO 表名 VALUES (值1,值2,……),(值1,值2,……),(值1,值2,……);
TIP:
插入数据时,指定的字段顺序要与值得顺序时一一对应的。
字符串和日期型数据应该包含在引号中
插入的数据大小,应该在字段的规定范围内
修改数据
修改指定数据和全部数据
UPDATE 表名 SET 字段1=值,字段2=值2,……[WHERE 条件];
TIP:修改语句的条件可以有,也可以没有,如果条件没有,则会修改整张表的所有数据。
删除数据
删除指定数据和全部数据
DELETE FROM 表名 [WHERE条件];
TIP:
DELETE语句的条件可以有,也可以没有,如果条件没有,则会删除整张表的所有数据。
DELETE语句不能删除某一个字段的值(可以使用UPDATE把字段设置为NULL)
DQL数据查询语言
用来查询数据库中表的记录
语法结构
SELECT 字段列表
FROM 表名列表
WHERE 条件列表
GROUP BY 分组字段列表
HAVING 分组后条件列表
ORDER BY 排序字段列表
LIMIT 分页参数
(这也是DQL语句的执行顺序)
SELECT IALLDISTINCTT {* table.*|[table.field1[as alias1] [,table.field2 [as alias2]]
[, ...]] } FROM table name [as table alias ]
[left|out|inner join table name2] #联合查询
[ WHERE ...] #指定结果需满足的条件
[GROUP BY ...] #指定结果按照哪几个字段来分组
[ HAVING ...] #过滤分组的记录必须满足的次要条件
[ORDER BY...] #指定查询记录按一个或者多个条件排序
[LIMIT {[offset,] row_count | row_count OFFSET offset }] ;#指定查询的记录从哪条至哪条
基础查询
查询多个字段
SELECT 字段1,字段2,字段3…… FROM 表名;
查询所有字段
SELECT * FROM 表名;
设置别名
SELECT 字段1[AS 别名1],字段2[AS 别名2]…FROM 表名;
去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;
条件查询 (WHERE)
语法
SELECT 字段列表 FROM 表名 WHERE 条件列表;
条件
比较运算符 | 功能 |
---|---|
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
= | 等于 |
<>或 != | 不等于 |
BETWEEN…AND… | 在某个范围之内(含最大、最小值) |
IN(…) | 在IN之后的列表中的值,多选一 |
LIKE 占位符 | 模糊匹配(_匹配单个字符,%匹配任意个字符) |
IS NULL | 是NULL |
逻辑运算符 | 功能 |
---|---|
AND 或 && | 并且(多个条件同时成立) |
OR 或 | 或者(多个条件任意一个成立) |
NOT 或 ! | 非,不是 |
聚合函数 (COUNT MAX MIN AVG SUM)
定义
将一列数据作为一个整体,进行纵向计算
常见聚合函数
函数 | 功能 |
---|---|
COUNT | 统计数量 |
MAX | 最大值 |
MIN | 最小值 |
AVG | 平均值 |
SUM | 求和 |
TIP:NULL值不参与所有聚合函数的运算。
语法
SELECT 聚合函数(字段列表) FROM 表名;
分组查询 (GROUP BY )
语法
SELECT 字段列表 FROM [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件];
WHERE 与HAVING区别
执行时机不同: WHERE 是分组之前进行过滤,不满足WHERE 条件,不参与分组;而HAVING 是分组之后对结果进行过滤。
判断条件不同: WHERE 不能对聚合函数进行判断,而HAVING 可以。
TIP:
执行顺序:WHERE > 聚合函数 > having
分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义
排序查询 (ORDER BY)
语法
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式2, 字段2 排序方式2;
排序方式
ASC:升序(默认值)
DESC:降序
TIP:如果是多个字段排序,当第一个字段的值相同时,才会根据第二个字段进行排序
分页查询 (LIMIT)
语法
SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数;
TIP:
起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数
分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。
如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10。
DCL数据控制语言
用来创建数据库用户、控制数据库的访问权限
用户管理
查询用户
USE mysql;
SELECT * FROM user;
创建用户
CREATE USER '用户名@主机名' IDENTIFIED BY '密码';
修改用户密码
ALTER USER '用户名@主机名' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY '新密码';
删除用户
DROP USER '用户名@主机名';
权限控制
常见权限
权限 | 说明 |
---|---|
ALL,ALL PRIVILEGES | 所有权限 |
SELECT | 查询数据 |
INSERT | 插入数据 |
UPDATE | 修改数据 |
DELETE | 删除数据 |
ALTER | 修改表 |
DROP | 删除数据库/表/视图 |
CREATE | 创建数据库/表 |
查询权限
SHOW GRANTS FOR '用户名@主机名';
授予权限
GRANT 权限列表 ON 数据库名.表名 TO '用户名@主机名';
撤销权限
REVOKE 权限列表 ON 数据库名.表名 TO '用户名@主机名';
TIP:
多个权限之间使用逗号分隔
授权时,数据库名和表名可以使用*进行通配,代表所有