Skip to content

插入

insert into 表名(字段名,...) values (值 1,...);

还有一种 向表中插入所有列:

​ insert into 表名 values(值 1,...);

例如:

insert into departments(department_id,manager_id) values(280,200); 注意:

  1. ​ 列名数与 values 后面的值的个数相等;
  2. ​ 列的顺序与插入的值的顺序一致 ​ 列名的类型与插入的值要一致
  3. ​ 值如果是字符串或者日期需要加引号 ​ 插入值的时候不能超过最大长度

修改

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;