DML语言
- 插入:insert
- 修改:update
- 删除:delete
一、插入语句
方式一
语法
insert into 表名(列名,....)
values(值1,...) 值要与列名对应
1.插入的值类型要与列的类型一致或兼容
insert into beauty(id,name,sex,borndate,phone,photo,boyfriend_id)
values(13,'肥清','女','1990-4-23','1112332','1',2)
2.不可以为null的列必须插入值,可以为null的列插入值的方法有两种
(1)直接在对应列加上null
(2)不显式的给它赋值,系统将默认给其赋值为null
3.列的顺序可以调换
4.列数和值的个数必须一致
5.可以省略列名,默认所有列。而且列的顺序和表种列的顺序是一致的
方式二
语法
insert into 表名
set 列名=值,列名=值,...
两种方法的区别
1.方式一可以插入多行,方式二不支持
insert into student
values(1,'张三','男'),
values(2,'李四','男');
2.方式一支持子查询,方式二不支持
insert into student
select 26,'王五';
这个会将王五插入到表里
3.在mysql从多个表中组合字段然后插入到一个新表中,通过一条sql语句实现。具体情形是:有三张表a、b、c,现在需要从表b和表c中分别查几个字段的值插入到表a中对应的字段。对于这种情况,我们可以使用如下的语句来实现:
insert into db1_name(field1,field2) select field1,field2 from db2_name
对于多个表,需要将多个表先连接起来在使用select插入
二、修改语句
1.修改单表的记录
语法:
update 表名
set 列 = 新值,....
where 筛选条件
修改beauty表中的姓唐的电话为12345678911
update beauty phone ='12345678911'
where name like '唐%'
2.修改多表的记录
sql92语法
update 表1 别名,表2 别名
set 列=值,....
where 连接条件
and 筛选条件
sql99语法
update 表1 别名,
inner|left|right join 表2 别名
on 连接条件
set 列=值
where 筛选条件
修改张无忌的女朋友的手机号为114
update boys bo
inner join beauty b on bo.id = b.boyfriend_id
set b.phone =114
where bo.boyName ='张无忌'
这样就会把beauty表里的张无忌的女朋友的手机号修改为114
修改没有男朋友的女神的男朋友编号都为2号
update beauty b
left join boy bo
on b.boyfriend = bo.id
set b.boyfriend = 2
where b.boyfriend is null
三、删除语句
单表的删除
方式一、delete
语法:
delete from 表名 where 筛选条件
方式二、truncate
truncate table 表名;
不能加where条件,一删就全删了,就可以跑路了。
多表的删除
语法
delete 表一的别名,表二的别名//这里想两个都写的话,是两个表里的相关信息都进行删除
from 表一 别名 join 表二 别名 on连接条件
where 筛选条件
删除张无忌的女朋友的信息
delete b
from boy bo join beauty b on bo.id = b.boyfriend_id
where b.boyName ='张无忌';
删除黄晓明的信息以及他女朋友的信息
delete b,bo
from beauty b
inner join boy bo on b.boyfriend_id = bo.id
where bo.boyName = '黄晓明';
delete 和 truncate区别
1.delete支持where 但是truncate不支持
2.truncate删除,效率比较高
3.假如要删除的表中有自增长列,如果用delete删除后,再插入数据,自增长列的值从断点开始,
而truncate删除后,再插入数据,自增长列的值从1开始
这个是什么意思呢?
比如说,有一个学生表,
学号 | 姓名 |
1 | 张三 |
2 | 李四 |
NULL | NULL |
如果在表设置里勾选了学号自增,那么你在插入数据的时候,不需要注明学号,系统会自动给你将学号增1
那么,如果使用delete删除了上面这个表的话,在插入数据('王五')那么此时虽然表里只有一条数据,但是王五的学号是3
如果用的是truncate的话,插入的王五的号就是1
4.truncate删除没有返回值,而delete删除有返回值
5.truncate不能回滚,delete删除可以回滚