插入
insert into 表名(字段名,...) values (值 1,...);
还有一种 向表中插入所有列:
insert into 表名 values(值 1,...);
例如:
insert into departments(department_id,manager_id) values(280,200); 注意:
- 列名数与 values 后面的值的个数相等;
- 列的顺序与插入的值的顺序一致 列名的类型与插入的值要一致
- 值如果是字符串或者日期需要加引号 插入值的时候不能超过最大长度
修改
update 表名 set 字段=新值,字段=新值 【where 条件】
注意:
1.修改的数据必须和原字段数据类型相同
2.修改的值不能超过限定长度
3.值如果是字符串或者日期要加‘’(单引号)
删除
delete from 表名 【where 筛选条件】
truncate table 表名 区别:delete 可以通过事务找回数据,truncate 不可以
删除表
drop table 表名
如果有外键关联的表,删除相关父表时,必须先删除外键
事务
为什么需要事务
在数据修改的中途,突发紧急情况时会造成数据不一致,所以我们需要事务
什么时事务
事务就是一组不可拆分的 DML sql 语句
例如上述两个 sql,要不然都成功,要不然都失败。
事务的四个基本属性(理论)(ACID)
A 原子性:不可拆分 一套逻辑操作,要么同时完成,要么都失败
C 一致性:数据保持逻辑一致性 事务执行之前与事务执行之后 总的数据保持一致
I 隔离性:一个事务执行时不可被打断 一个事务在执行的时候,不会影响其他事务的数据
D 持久性:事务结束后,数据永久保存,不能回滚
事务的隔离级别(熟悉)
并发事务
脏读:一个线程读取到另外的线程未提交的数据
不可重复读: 一个事务读取到另外一个事务 进行修改 已经提交的数据
幻读:一个事务读取到另外一个事务进行增加,删除后并提交的数据
因此,数据库,提供了 4 种隔离级别
1 :READ-UNCOMMITTED (读未提交) 以上 3 种并发事务都可能发生
2.READ-COMMITTED(RC)( 读已提交) 可以解决 脏读
3.REPEATABLE-READ(RR)(可重复读) 可以解决 脏读和不可重复读
4.SERIALIZABLE (串行化) 可以解决以上所有问题,但是会导致 ,一个事务未提交,其他事务,不可以进行
如何实现事务:
1.设置为不自动提交
set autocommit=0;
2.开启事务
start transaction;
3.执行 sql
update users set balance=balance-10 where id=1; update users set balance=balance+10 where id=2;
4.提交事务,事务结束。
commit;
如果出了问题,就回滚。
rollback;