目录
1,数据库运算符优先等级
1,括号:最高优先级,可以用括号改变运算顺序。
2,一元减号(负号):用于表示负数。
3,乘法、除法和取模:*
、/
、%
。
4,加法和减法:+
、-
。
5,比较运算符:=
、>
、<
、>=
、<=
、<>
、!=
。
6,逻辑非:NOT
。
7,逻辑与:AND
、&&
。
8,逻辑或:OR
、||
。
9,BETWEEN
、CASE
、WHEN
、THEN
、ELSE
、END
。
10,LIKE
、IN
、IS NULL
、IS NOT NULL
。
11,位运算符:&
、|
、^
、<<
、>>
。
12,逻辑 XOR:XOR
。
13,赋值运算符:=
, +=
, -=
, *=
, /=
, %=
, &=
, |=
, ^=
, <<=
, >>=
.
14,IS
运算符:IS [NOT]
。
15,NULL
安全的等于运算符:<=>
。
16,REGEXP
:用于进行正则表达式匹配。
17,INTERVAL
:用于处理日期和时间的间隔。
18,COLLATE
:用于指定字符集的排序规则。
19,DIV
:整除运算符。
20,UNION
:用于合并多个 SELECT 语句的结果集。
21,EXISTS
:用于检查子查询是否返回值。
22,ANY/SOME
和 ALL
:子查询的比较操作符。
2,MySQL常见事务的函数
BEGIN
或START TRANSACTION
:开始一个新的事务。COMMIT
:提交当前事务,将所有已执行的操作保存到数据库。ROLLBACK
:回滚当前事务,撤销自上次提交以来的所有操作。SAVEPOINT
:在事务中创建一个保存点,可以在事务回滚时恢复到该保存点。ROLLBACK TO
:将事务回滚到指定的保存点。RELEASE SAVEPOINT
:释放指定的保存点,释放后不能再回滚到该保存点。-
SET TRANSACTION
:用于设置事务的隔离级别和其他属性。例如,SET TRANSACTION ISOLATION LEVEL
可以设置事务的隔离级别。 -
AUTOCOMMIT
:用于控制是否自动提交事务。默认情况下,每条语句都会被当作一个独立的事务并自动提交,但可以使用SET AUTOCOMMIT
来更改这一行为。 -
@@GLOBAL.tx_isolation
和@@SESSION.tx_isolation
:这些系统变量用于获取或设置全局和会话级别的事务隔离级别。 -
@@GLOBAL.autocommit
和@@SESSION.autocommit
:这些系统变量用于获取或设置全局和会话级别的自动提交状态。 -
保存点(Savepoints):可以使用
SAVEPOINT
创建事务中的保存点,以便在需要时回滚到特定的保存点。 -
死锁(Deadlock):当多个事务相互等待对方释放资源时可能发生死锁。MySQL使用死锁检测和超时机制来处理死锁情况。
-
SHOW ENGINE INNODB STATUS
:用于查看InnoDB引擎的状态信息,包括事务的详细信息和死锁情况
3,MySQL事务和索引
MySQL事务: 事务是一组SQL操作的逻辑单元,它们被当作一个单独的工作单元来执行。事务的主要目的是确保数据库在不同操作之间保持一致性和完整性,即使在出现错误或异常情况下也能保持数据的有效状态。MySQL事务遵循ACID属性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。
- 原子性(Atomicity):事务内的操作要么全部执行成功,要么全部回滚,确保数据的完整性。
- 一致性(Consistency):事务执行后,数据库从一个一致状态转换到另一个一致状态,维护数据的合法性。
- 隔离性(Isolation):多个事务可以并发执行,每个事务都好像在独立运行,避免相互干扰。
- 持久性(Durability):一旦事务提交,其结果就会永久保存在数据库中,即使系统崩溃也不会丢失。
MySQL索引: 索引是一种数据结构,用于加速数据库的数据检索操作。它类似于书中的目录,可以帮助数据库更快地定位和访问数据行,从而提高查询性能。索引可以在特定列或列组上创建,以便在执行查询时快速缩小搜索范围。
- 主键索引:用于唯一标识每一行数据,确保数据的唯一性和快速检索。
- 唯一索引:确保数据列中的值是唯一的,但可以包含空值。
- 普通索引:最基本的索引类型,用于加速数据的检索操作。
- 联合索引:在多个列上创建索引,可以加速涉及这些列的查询,但需要权衡选择哪些列创建索引。
- 全文索引:用于全文搜索,可以在文本字段中进行关键词搜索。
索引的选择和设计需要根据数据库的具体需求和查询模式进行权衡,过多或不恰当的索引可能会导致性能下降和存储开销。