DML语言学习
data Manipulation languge 数据操作语言 增删改
插入语言
语法:
方式一:
insert into 表名(列名,…) values (值1,…);
1.要求插入值的类型要与列的类型一致或兼容
insert into beauty (id,name,sex,borndate,phone,photo,boyfriend_id) values(14,‘唐艺昕’,‘女’,‘1989-1-1’,‘17688888888’,null,‘5’);
2.不可以为null的值必须插入列,可以为null的值如何插入值
方式一:写列值为null
insert into beauty (id,name,sex,borndate,phone,photo,boyfriend_id) values(14,‘唐艺昕’,‘女’,‘1989-1-1’,‘17688888888’,null,‘5’);
方式二:不写列不写值
insert into beauty (id,name,sex,borndate,phone,boyfriend_id) values(14,‘唐艺昕’,‘女’,‘1989-1-1’,‘17688888888’,‘5’);
3.列的顺序是可以调换
insert into beauty(id,phone,name) value(15,17699999999,‘刘涛’);
4.列数和值的个数必须匹配
5.可以省略列名,默认所有列,而且列的顺序和表中列的顺序一致
insert into beauty value(16,‘刘燕’,‘女’,‘1999-1-1’,‘17899999999’,null,15);
方式二:
insert into 表名 set 列名=值,列名=值,…
对比:
方式一支持插入多行,但方式二不支持
insert into 表名 value (a,b),(c,d),(e,f);
方式一支持子查询,方式二也不支持
insert into 表名 value select …;
insert into beauty(id,name,phone) select id,boyName,15599999999 from boys where id = 19;
修改语言
语法:
修改单表的记录
update 表名 set 列=新值,列=新值,… where 筛选条件;
case 1 :修改姓唐的电话为138888888
update beauty set phone = 138 where name like “唐%”;
cass 2 :修改id为2的名称为张飞,魅力值为10;
update boys set boyName=‘张飞’,usercp=10;
修改多表的记录
sql92:
update 表一 别名 表二 别名 set 列=值 … where 连接条件 and 筛选条件;
sql 99;
update 表一 别名 join表二 别名 on 连接条件 set 列=值 … where 筛选条件;
case1 张无忌的女朋友手机号为114;
update beauty b inner join boys bo on b.boyfriend_id = bo.id set b.phone = 110 where bo.boyName = “张无忌”;
case2:修改没有男朋友的女的男朋友编号为张飞
update beauty b inner join boys bo on b.boyfriend_id is null set b.boyfriend_id = bo.id where bo.boyName = “张飞”;
删除语言
方式一:
单表的删除(重点)
delete from 表名 where 筛选条件
case1 : 删除手机号为九结尾的女神信息
delete from beauty where phone like “%9”;
多表的删除(补充)
case2: 删除张无忌的女朋友的信息
sql 92 : delete 要删除的表的别名 from表,别名,表二,别名 where 连接条件 and 筛选条件
sql99 : delete 要删除的表的别名 from表,别名 join 表二,别名 on 筛选条件 where 连接条件
delete be from boys b inner join beauty be on be.boyfriend_id = b.id where b.name = "张无忌"
case3:删除黄晓明和他女朋友的信息(两表都删除,级联删除)
delete be,b from boys b inner join beauty be on be.boyfriend_id = b.id where b.name = “黄晓明”
方式二:
删除整表的数据(清空数据)
truncate table 表名; 不允许加where
两种方式对比
1.delete可以加where条件,truncate不能加
2.truncate删除正因为没有where,效率更高
3.假如要删除的表中有自增长列,如果delete删除后,再加入从断点开始,而truncate从1开始。
4.truncate删除没有返回值,delete删除有返回值
5.truncate删除后不能回滚,delete删除可以回滚