mysql—— 插入,修改,删除——insert语句——update语句——delete语句——DML语言
文章目录
DML语言:数据操作语言
- 插入:insert
- 修改:update
- 删除:delete
1. 插入语句
经典的插入
语法:
insert into 表名(列名,...) values(值1,...);
要求:
-
插入的值的类型要与列的类型一致或兼容
-
不可以为null的列必须插入值。可以为null的列,可以直接赋值为命,或者在?b表名中直接不写该列。
-
列的顺序是否可以调换(但是要保证插入数据和列的顺序对应)
-
列数和值的个数必须一致
-
输入表名时可以省略列名,此时默认所有列;而且列的顺序和表中列的顺序一致
-
插入的值的类型要与列的类型一致或兼容
insert into beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
values(13,'唐艺昕','女','1990-4-23','1898888888',NULL,2); -
不可以为null的列必须插入值。可以为null的列如何插入值?
-
方式一:列表中有可以为mull的值,可以直接对其进行副职为mull。
insert into beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
values(13,'唐艺昕','女','1990-4-23','1898888888',NULL,2); -
方式二:可以在列表中直接不写该项。
insert into beauty(id,NAME,sex,phone)
values(15,'娜扎','女','1388888888');
-
-
列的顺序是否可以调换
insert into beauty(NAME,sex,id,phone)
VALUES('蒋欣','女',16,'110'); -
列数和值的个数必须一致
insert into beauty(NAME,sex,id,phone)
values('关晓彤','女',17,'110'); -
可以省略列名,默认所有列,而且列的顺序和表中列的顺序一致
insert into beauty
values(18,'张飞','男',NULL,'119',NULL,NULL);
第2种插入方法
语法:
insert into 表名
set 列名1=值,列名2=值,...
能为null的值就直接不写
insert into beauty
set id=19,NAME='刘涛',phone='999';
两种方式大pk
-
方式一支持插入多行,方式二不支持
insert into beauty
values(23,'唐艺昕1','女','1990-4-23','1898888888',NULL,2)
,(24,'唐艺昕2','女','1990-4-23','1898888888',NULL,2)
,(25,'唐艺昕3','女','1990-4-23','1898888888',NULL,2); -
方式一支持子查询,方式二不支持
insert into beauty(id,NAME,phone)
select 26,‘宋茜’,‘11809866’;insert into beauty(id,NAME,phone)
select id,boyname,‘1234567’
from boys WHERE id<3;
2. 修改语句
- 修改单表的记录★
- 语法:
update 表名
set 列=新值,列=新值,...
where 筛选条件;
- 修改多表的记录【补充】
-
语法:
sql92语法:
update 表1 别名,表2 别名
set 列=值,...
where 连接条件
and 筛选条件;sql99语法:
update 表1 别名
inner|left|right join 表2 别名
on 连接条件
set 列=值,...
where 筛选条件;
修改单表的记录
-
修改beauty表中姓唐的女神的电话为13899888899
update beauty set phone = '13899888899'
where name like '唐%'; -
修改boys表中id好为2的名称为张飞,魅力值 10
update boys set boyname='张飞',usercp=10
where id=2;
修改多表的记录
-
修改张无忌的女朋友的手机号为114
update boys as bo
inner join beauty b on bo.'id'=b.'boyfriend_id'
set b.'phone'='119',bo.'userCP'=1000
where bo.'boyName'='张无忌'; -
修改没有男朋友的女神的男朋友编号都为2号
update boys as bo
right join beauty b on bo.'id'=b.'boyfriend_id'
set b.'boyfriend_id'=2
where bo.'id' IS NULL;
3. 删除语句
-
方式一:delete
- 语法:
-
单表的删除【★】
delete from 表名 where 筛选条件
没加筛选条件表示把表中所有内容都删掉。 -
多表的删除【补充】
- sql92语法:
delete 表1的别名,表2的别名
from 表1 别名,表2 别名
where 连接条件
and 筛选条件; - sql99语法:
delete 表1的别名,表2的别名
from 表1 别名
inner|left|right join 表2 别名 on 连接条件
where 筛选条件;
-
- 语法:
-
方式二:truncate
语法:
truncate table 表名;
表示把表中的所有内容都删除,truncate不能加筛选条件。
delete
-
单表的删除
案例:删除手机号以9结尾的女神信息
delete from beauty
WHERE phone LIKE '%9'; -
多表的删除
案例1:删除张无忌的女朋友的信息
delete b from beauty b
inner join boys bo on b.'boyfriend_id' = bo.'id'
where bo.'boyName'='张无忌';案例2:删除黄晓明的信息以及他女朋友的信息
delete b,bo from beauty b
inner join boys bo on b.'boyfriend_id' = bo.'id'
where bo.'boyName'='黄晓明';
truncate语句
删除表中所有数据的时候,效率要比delete高。
- 案例:将魅力值>100的男神信息删除
truncate table boys ;
delete pk truncate【面试题★】
- delete可以加where条件,truncate不能加
- truncate删除,效率高一丢丢
- 假如要删除的表中有自增长列
- 用delete删除后,再插入数据,自增长列的值从断点处开始。
- 用truncate删除后,再插入数据,自增长列的值从1开始。
- truncate删除没有返回值,delete删除有返回值(返回受影响的行数)
- truncate删除不能回滚,delete删除可以回滚.
更多推荐
所有评论(0)