事务的隔离级别
https://www.cnblogs.com/huanongying/p/7021555.html
事务:通俗的场景就是,当异常发生时,sql的回滚。
(可以用说与做来进行类比数据库的事务的提交)
设置隔离级别
SET [SESSION|GLOBAL] TRANSACTION ISOLATION LEVEL [READ UNCOMMITTED|READ COMMITTED|REPEATABLE READ|SERIALIZABLE]
查看当前事务的隔离级别
当前会话
select @@tx_isolation;
查看系统的
select @@global.tx_isolation;
隔离级别(在理解隔离级别之前要理解会话和提交的概念)
- read uncommited
- read commited
- REPEATABLE read
mysql默认的隔离级别
可重复的的好处在于,一个会话中多次读是一致的,当多个会话执行update table_name set balance = balance - 1 这种操作时候,能过保证 数据的一致性【读的时候是读取本会话中的,写的时候使用的是其它会话commit之后的值】 - serializable
date 类型
datetime类型
TIMESTAMP类型
时间概念:
当前日期和时间(年月日和时分秒)
当前日期(年月日)
当前时间(时分秒)
获取某个字段,这些函数在进行数据统计的时候比较常用,例如按月份统计订单数量
年 year()
月 month()
日 day() 每个月第几天
时 hour()
其它内容
Explatin调试命令
索引
视图
show tables; 查看的表包含视图
show create table 查看建表语句
show full tables; 可以查看哪些是视图
show create view [view_name] 查看建视图语句
存储过程
存储函数
触发器
可以这样去理解触发器,时机和动作,和自动调用。这让我想到了切面。
before
after
insert
update
delete
2*3 =6
BEFORE INSERT - 在数据插入表之前被激活触发器。
AFTER INSERT - 在将数据插入表之后激活触发器。
BEFORE UPDATE - 在表中的数据更新之前激活触发器。
AFTER UPDATE - 在表中的数据更新之后激活触发器。
BEFORE DELETE - 在从表中删除数据之前激活触发器。
AFTER DELETE - 从表中删除数据之后激活触发器。
实际问题
很少使用物理删除了,都是通过is_deleted进行逻辑删除。
update 修改数据库,条件出错导致大量改动