事务 transaction
DDL、DML、DCL、DTL
概念:一组必须同时成功或者失败的DML语句构成了一个事务
~insert / ~delete / ~update /select
特性:ACID
- Atomicity : 原子性 : 操作不可分
- Consistency : 一致性: 操作发生前和发生后,数据的状态都必须一致
- Isolation : 隔离性: 事务之间是隔离的
- Durability : 持久性 : 事务对数据的更改是持久
事务操作:
- set autocommit=0 事务的自动提交行为,0表示不自动提交,1表示自动提交
- 开始事务 :start transaction
- 结束事务:commit 提交 / rollback 回滚
- 自动行为:
- 从上一次的事务结束到下一次事务结束所有的操作默认为一个事务
- 当事务遇到DDL语句时会自动提交
- 报错,自动提交
下面是我自己的 整理部分,上面结构清晰,下面细节太多
transaction事务:
四大特性:ACID
A:原子性:要么都完成,要么都不完成,是一个整体
START TRANSACTION;#开启事务
SET autocommit=0;#自动提交不开启,为1自动开启
INSERT INTO eas_student VALUES(DEFAULT,"赵柳","1995-08-08 00:00:00","M","物联网","计算机科学与技术",20,"2013级","T");
#进行一系列的DML语句(对数据 的操作),如果遇见DDL(表示进行另一个事务),这些DML语句就是一个整体
SELECT * FROM eas_student;
COMMIT;#这个单词(提交)和rollback(回滚,不执行)是结束事务的标志,
#ROLLBACK;
以上的步骤是一个整体要么都成功,要么都不成功
C:一致性:进行事务 的 操作,数据 的完整性没有改变,
(假如你给了别人一元钱,别人多了1元,你少了1元)
I:隔离性:一个事务是一个整体,在没有进行事务的提交,别人是不能访问你修改的任意的一条数据。
#另一个数据库 的软件对本数据进行查询,并没有发现数据 有什么改变,只能等上一个软件,对那个事务进行了提交,或回滚, 在这个软件才能操作新数据
USE eas;
SELECT * FROM eas_student;
D:持久性:如果一个事务被提交,那么他的所有 的更改的DML的操作都确定了,
(意思是:如果你对数据进行了删除操作,并提交了数据,
那么你想执行返回的 操作(ctrl+z)是不可能 的,只能通过备份的插入语句对数据进行还原)
这句话挺重要的:
进行一系列的DML语句(对数据 的操作),如果遇见DDL
(对表结构 的修改,表示进行另一个事务的开始,自动commit)和错误代码也会自动提交,这些DML语句就是一个整体
A :atomicity
C:consistency
I :Isolation
D:durability
权限管理:
#给其他管理员操作数据库的权限,root是最大的管理员
#创建一个新的管理员action,密码为action123,localhost是ip地址
CREATE USER action@localhost IDENTIFIED BY "action123";
/*授予action一个数据库或多个数据库的权限,有增删改查,全部这五种权限,
还可以给数据库中的哪个表/全部表的权限*/
GRANT ALL ON eas.`*` FROM action@localhost;
# 使权限生效
FLUSH PRIVILEGES;
#取消授权(但不关闭连接,本次权限还是可以操控表)
REVOKE ALL ON eas.`*` FROM action@localhost;
# 使权限生效
FLUSH PRIVILEGES;
#查看权限信息
SHOW GRANTS FOR action@localhost;
#把权限给每一个客户端
grant all on emall.* to action@'%' identified by 'action123' with grant option;
flush privileges;
select * from daul;//这个daul表示一个虚表,为了让select 语句不出错,from后面必须跟表名
default,在insert语句中,默认值不写,用default代替,不用写表名后面的字段列表
last_insert_id ():找到这个表的最后一个id