DML(Data Manipulation Language)数据操纵语言:insert update delete,对表中的数据的增删改
一.DML
一.数据的插入
一.语法
插入单行
insert into 表名(字段名1,字段名2,…) values (值1,值2,…)
插入多行
insert into 表名(字段名1,字段名2,…) values (值1,值2,…),(值1,值2,…),(值1,值2,…)…;
二.特点
1.字段和值列表一一对应
包含类型,约束等必须匹配
2.数值型的值,不用单引号
非数值型的值,必须使用单引号
3.字段顺序无要求
正常插入
insert into student (stuid,stuname,gender,borndate) values(1,'Tom','m','1954-4-9');
插入空字段:
<1>可以将字段名少写来忽略
insert into student (stuid,stuname,gender) values(2,'Tom','m');
两次对比
<2>将值写成null
insert into student (stuid,stuname,gender,borndate) values(1,'Tom','m',null);
默认字段插入
用default,使其成为默认值
insert into student (stuid,stuname,gender,borndate) values(1,'Tom',default,'1954-4-9');
可以省略字段名,默认所有字段
insert into 表名 values (值1,值2,…)
insert into student values (3,'jack','m','1902-2-6');
二.数据的删除
方法一:delete语句
delete from 表名 where 筛选条件;
方法二:truncate语句
truncate table 表名;
两者区别
1.delete可以加筛选条件
truncate不能添加where条件,一次性删除所有数据
2.truncate效率更高
3.delete删除数据,可以还原,truncate不能还原
二.事务
一.事务概述
一个事务是由一条或多条sql语句构成,这一条或多条sql语句要么全部执行成功,要么全部执行失败,默认情况下,每条单独的sql语句就是一个单独的事务
隐式事务
没有明显的开启和结束标记
显式事务
具有明显的开启和结束标记
一般由多条sql语句组成,必须具有明显的开启和结束标记
步骤
1.取消隐式事务自动开启功能
show variables like '%auto%';
set autocommit = 0;
2.开启事务
start transaction;
3.编写事务需要的sql语句
4.结束事务
commit;
5.回滚
rollback;
二.事务的 ACID
事务具有四个特征:原子性( Atomicity )、一致性( Consistency )、隔离性( Isolation )和持久性( Durability )。这四个特性简称为 ACID 特性。
1 、原子性
事务是数据库的逻辑工作单位,不可分割,事务中包含的各操作要么都做,要么都不做
2 、一致性
事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库系统 运行中发生故障,有些事务尚未完成就被迫中断,这些未完成事务对数据库所做的修改有一部分已写入物理数据库,这时数据库就处于一种不正确的状态,或者说是 不一致的状态。
3 、隔离性
一个事务的执行不能其它事务干扰。即一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰。 事务的隔离级别有4级,可以查看这篇博客,关于MySQL的事务处理及隔离级别
4 、持续性
也称永久性,指一个事务一旦提交,它对数据库中的数据的改变就应该是永久性的,不能回滚。接下来的其它操作或故障不应该对其执行结果有任何影响。