DML
一:对数据操作
1:插入数据
①:直接插入
INSERT INTO 表名(字段值)VALUES (实际值);
②:间接插入
INSERT INTO 表名 查询语句(其他表的一些数据);
2:修改数据
UPDATE 表名 SET (字段名)=(实际值(或者其他表的查询));
3:删除数据
①:删除数据
DELETE FROM 表名 WHERE 条件;
②:清空数据
TRUNCATE TABLE 表名; #清空表中数据
二:事务
1.提交回滚机制
COMMIT ROLLBACK
2.事务:
①:定义:在一个会话中的多个DML操作要么全部成功(COMMIT),要么全部失败(ROLLBACK)
②:四大特性(ACID)
--原子性():指事务是一个不可分割的工作单位,事务中的所有操作要么全部成功要么全部失败
--一致性:指事务必须使数据库从一个一致性的状态换到另外一个一致性的状态
--隔离性:多个用户(客户端)并发访问数据库的时候,数据库为每一个用户开启一个事务,这些事务之间可以同时访问数据库,但是 事务之间是无法访问的,只有当事务完成最终操作的时候,其他事务才可以看到结果
--持久性:指事务一旦被提交,他对数据库中数据的改变就是永久性的
③:四大特性之隔离性
--脏读:指一个事务读取另一个未提交的事务的数据
--不可重复读:在一个事务内读取表中的某一行数据,多次读取的结果不一样
不可重复读和脏读的区别:脏读是读取前一事务未提交的脏数据,不可重复读是读取前一事务已经提交的数据
--虚读(幻读):指在一个事务内读取到了别的事务插入的数据,导致前后读取不一致
幻读和不可重复读都是读取了另一条已经提交的事务,所不同的是不可重复读查询的都是同一行数据,幻读是针对的是一批数据整体
为了解决上面的问题,数据库引入了隔离级别,sql标准中定义了四种隔离级别
--1.READ UNCOMMITED 级别:脏读,不可重复读,幻读都是允许的
--2.READ COMMITED级别:脏读是不允许的,不可重复读和幻读是允许的(ORACLE数据库默认级别)
--3.REPEATABLE级别:只允许幻读,不允许不可重复读和脏读
--4.SERIALIZABLE级别:脏读,不可重复读,幻读都是不允许的
--隔离级别越来越苛刻,但是数据库性能越来越差
七:锁
解决并发问题