目录
1.事务
事务的特性:ACID
ACID属性是数据库事务处理的核心,它们共同确保了在并发和故障情况下,数据库能够保持数据的一致性和完整性。
- A(Atomicity):原子性
- 事务被视为最小单位,操作要么全部完成,要么全部不执行
- 在执行过程中,如果发生故障,事务将被回滚到开始事务之前的状态。
- C(Consistency):一致性
- 事务必须确保数据库从一个一致的状态转换到另一个一致的状态
- 一致性状态指的是数据库中的数据应该满足所有的完整性约束
- I(Isolation):隔离性
- 数据库系统提供一定的隔离级别,防止多个事务并发执行时相互干扰
- 隔离性确保事务在并发环境中独立执行,不会相互冲突或产生不一致的结果
- D(Durability):持久性
- 一旦事务被提交,它对数据库的更改应该是永久的
- 即使发生系统故障,提交事务发生的更改不会丢失
2.DQL
DQL:Data Query Language 主要用于从数据库中检索和查询数据。
1.核心语法
SELECT
基本语法
SELECT 列名 FROM 表名;
如果要选取多个列,列之间用 , 隔开
SELECT 列1,列2,...,列n FROM 表名;
要查询所有字段:
SELECT * FROM 表名;
字段别名 AS
为了增强语句的易读性,通常在所选字段与别名之间使用关键字AS表示别名的使用
SELECT 字段名 AS 别名 FROM 表名;
或省略 AS 关键字
SELECT 字段名 别名 FROM 表名;
去除重复行 DISTINCT
作用于单列:返回列中所有不重复的值
SELECT DISTINCT 列名 FROM 表名;
作用于多列:根据列的组合值去除重复的行。当指定的列的值都相等时,才会认为这些行是重复的
SELECT DISTINCT 列1, 列2 FROM 表名;
分页查询 LIMIT
SELECT 列名 FROM 表名 LIMIT 起始行数,每页显示的行数;
例如:查询用户表的内容,从第6行开始,每页显示10条数据
SELECT * FROM user LIMIT 5,10;
行号从0开始。LIMIT 后也可以只跟一个参数。表示需要返回的行数,从第一行开始获取数据
查询user表中前五条数据
SELECT * FROM user LIMIT 5;
WHERE子句
基本语法
SELECT 列名 FROM 表名 WHERE 列名 运算符 条件值;
例如:查询user表中 id为1的用户所有信息
SELECT * FROM user WHERE id=1;
常用运算符
1.比较运算符
运算符 | 作用 |
---|---|
= | 等于 |
!= | 不等于 |
< | 小于 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
BETWEEN min AND max | 介于min与max之间,包含min和max |
IN(value1,value2,...) | 在集合(value1,value2,...)中 |
IS NULL | 为空 |
IS NOT NULL | 不为空 |
LIKE | 模糊匹配 |
2.逻辑运算符
运算符 | 说明 |
---|---|
AND | 逻辑与 |
OR | 逻辑或 |
ORDER BY子句
按照一定规则进行排序
基本语法
SELECT 列名 FROM 表名 ORDER BY 列1,列2;
例1:查询user表中的数据,并以年龄进行排序
SELECT * FROM user ORDER BY age;
例2:查询user表中的数据,先以年龄进行排序,后以性别进行排序
SELECT * FROM user ORDER BY age,sex;
升降序
ORDER BY排序默认以升序进行排序
- ASC:升序
- DESC:降序
例:查询user表中的数据,并以年龄进行降序排序
SELECT * FROM user ORDER BY age DESC;
GROUP BY 与 HAVING子句
GROUP BY
GROUP BY 通常结合聚合函数进行使用,以便将结果集中的行分组为较小的集合,并对每个这样的集合执行聚合操作。
基本语法
SELECT 列名 FROM 表名 GROUP BY 列名;
HAVING
HAVING 为条件筛选,紧随GROUP BY子句之后,用于对分组后的数据进行条件过滤。
基本语法
SELECT 列名 FROM 表名 GROUP BY 列名 HAVING 分组条件;
HAVING子句与WHERE子句的区别
- WHERE子句:在数据分组之前对原始记录进行过滤,它不能对聚合函数的结果进行过滤。
- HAVING子句:在数据分组之后对聚合结果进行过滤。如果查询中包含了GROUP BY子句,并且你希望对分组后的结果进行条件筛选,那么就需要使用HAVING子句。