一、mysql数据库运算符的优先级
可以分为以下几种:
- 算数运算符
- 比较运算符
- 逻辑运算符
- 位运算符
1.1 算数运算符
+ | 加法 |
- | 减法 |
* | 乘法 |
/或DIV | 除法 |
%或MOD | 取余 |
1.2比较运算符
= | 等于 | |
<>, != | 不等于 | |
> | 大于 | |
< | 小于 | |
<= | 小于等于 | |
>= | 大于等于 | |
BETWEEN | 在两值之间 | >=min&&<=max |
NOT BETWEEN | 不在两值之间 | |
IN | 在集合中 | |
NOT IN | 不在集合中 | |
<=> | 严格比较两个NULL值是否相等 | 两个操作码均为NULL时,其所得值为1;而当一个操作码为NULL时,其所得值为0 |
LIKE | 模糊匹配 | |
REGEXP 或 RLIKE | 正则式匹配 | |
IS NULL | 为空 | |
IS NOT NULL | 不为空 |
1.3逻辑运算符
NOT 或 ! | 逻辑非 |
AND | 逻辑与 |
OR | 逻辑或 |
XOR | 逻辑异或 |
1.4位运算符
& | 按位与 |
| | 按位或 |
^ | 按位异或 |
! | 取反 |
<< | 左移 |
>> | 右移 |
1.5运算符的优先级
从高到底排列
- 括号:用于分组表达式,具有最高优先级。
- 乘法、除法和取模运算符:
*
、/
和%
。 - 加法和减法运算符:
+
和-
。 - 比较运算符:
=
,<>
,!=
,<
,<=
,>
,>=
,LIKE
,NOT LIKE
,IN
,NOT IN
,BETWEEN
,IS NULL
,IS NOT NULL
。 - 逻辑运算符:
NOT
,AND
,OR
。
最低优先级为: :=
最高优先级为: !、BINARY、 COLLATE。
二、mysql事务
事务就是用来处理操作量大,复杂程度高的,用来维护数据库的完整性,sql要么全部执行,要么全部不执行
一般来说事务必须满足4个条件,原子性,隔离性,一致性,持久性
2.1原子性
一个事务中的所有操作,要么全部完成,要么全部不完成,执行过程中发生错误,回滚到事务开始前的原始状态。
2.2一致性
在事务开始执行和事务结束执行以后,数据的原始表结构没有被改变,和原始的数据库执行规则没有被改变,事务开始执行前是什么样子,结束以后也是什么样子。
2.3隔离性
多个事务之间执行中或不影响,级别分为:未提交,读提交,可重复读,串行化
2.4持久性
数据都落在盘中,系统故障也不会丢失
三、mysql索引
索引是为了加快数据库的查询速度和性能
它类似于书中的目录,可以快速定位到特定的数据行,而无需完全扫描整个表
可以分为单列索引和组合索引
- 单列索引,即一个索引只包含单个列,一个表可以有多个单列索引。
- 组合索引,即一个索引包含多个列。
索引虽然能够提高查询性能,但也需要注意以下几点:
- 索引需要占用额外的存储空间。
- 对表进行插入、更新和删除操作时,索引需要维护,可能会影响性能。
- 过多或不合理的索引可能会导致性能下降,因此需要谨慎选择和规划索引。
3.1唯一索引
唯一索引确保索引中的值是唯一的,不允许有重复值。
可以使用 CREATE UNIQUE INDEX 语句来创建唯一索引。
3.2主键索引
唯一标识表中的每一行,主键必须是唯一、非空且不重复的。
3.3复合索引
基于多个列创 建索引,可以包含多个列的组合,提高多列条件的查询性能。
3.4联合唯一索引
将多个列合并组合为索引,这么多个列的整数数据在数据库中的出现是唯一的
3.5全文索引
目前支持在InnoDB和MyISAM存储引擎,适用于CHAR,VARCHAR和TEXT列,常用在字符串内的全文索引,建立倒排索引的机制进行全文索引