DML语言

13

概念:数据操作语言,对数据表的增删改操作。

插入语句

一、方式一
语法:
insert into 表名(字段名,...) values(值,...);
特点:
1、要求值的类型和字段的类型要一致或兼容
2、字段的个数和顺序不一定与原始表中的字段个数和顺序一致 但必须保证值和字段一一对应
3、假如表中有可以为null的字段,注意可以通过以下两种方式插入null值
①字段和值都省略
②字段写上,值使用null
4、字段和值的个数必须一致
5、字段名可以省略,默认所有列

INSERT INTO beauty(NAME,sex,id,phone) VALUES('关晓彤','女',17,'110');
INSERT INTO beauty VALUES(18,'张飞','男',NULL,'119',NULL,NULL);

二、方式二
语法:
insert into 表名 set 字段=值,字段=值,...;
INSERT INTO beauty SET id=19,NAME=‘刘涛’,phone=‘999’;

两种方式 的区别:
1.方式一支持一次插入多行,方式二不支持,语法如下:
insert into 表名【(字段名,..)】 values(值,..),(值,...),...;
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);


2.方式一支持子查询,方式二不支持,语法如下:
insert into 表名 查询语句;
INSERT INTO beauty(id,NAME,phone) SELECT 26,'宋茜','11809866';
INSERT INTO beauty(id,NAME,phone) SELECT id,boyname,'1234567' FROM boys WHERE id<3;

修改语句

一、修改单表的记录 ★
语法:update 表名 set 字段=值,字段=值 【where 筛选条件】;
UPDATE boys SET boyname='张飞',usercp=10 WHERE id=2;
注意:绝大多数情况都要加where条件,指定修改,否则为整表更新。

二、修改多表的记录【补充】
sql92语法:
update 表1 别名,表2 别名 set 列=值,… where 连接条件 and 筛选条件;

sql99语法:
update 表1 别名  left|right|inner join 表2 别名 on 连接条件  set 字段=值,字段=值 【where 筛选条件】;

修改多表的记录 
案例 1:修改张无忌的女朋友的手机号为119 
UPDATE boys bo INNER JOIN beauty b ON bo.`id`=b.`boyfriend_id` SET b.`phone`='119',bo.`userCP`=1000 WHERE bo.`boyName`='张无忌'; 

案例2:修改没有男朋友的女神的男朋友编号都为2号 
UPDATE boys bo RIGHT JOIN beauty b ON bo.`id`=b.`boyfriend_id` SET b.`boyfriend_id`=2 WHERE bo.`id` IS NULL;

删除语句

方式一:使用delete
1.、删除单表的记录★
语法:delete from 表名 【where 筛选条件】【limit 条目数】
注意:删除时若不加WHERE条件,删除的是整张表的数据。

2.、级联删除[补充]
语法:
delete 表1的别名1,表2的别名2 from 表1 别名 
inner|left|right join 表2 别名 
on 连接条件
【where 筛选条件】

1.单表的删除 
案例:删除手机号以9结尾的女神信息 
DELETE FROM beauty WHERE phone LIKE '%9'; 
2.多表的删除
案例:删除张无忌的女朋友的信息 
DELETE b FROM beauty b INNER JOIN boys bo ON b.`boyfriend_id` = bo.`id` WHERE bo.`boyName`='张无忌'; 
案例:删除黄晓明的信息以及他女朋友的信息 
DELETE b,bo FROM beauty b INNER JOIN boys bo ON b.`boyfriend_id`=bo.`id` WHERE bo.`boyName`='黄晓明';

方式二:使用truncate 清空整张表
语法:truncate table 表名
将魅力值>100的男神信息删除 
TRUNCATE TABLE boys ;

两种方式的区别【面试题】★
1.truncate删除后,如果再插入,标识列从1开始,delete删除后,如果再插入,标识列从断点开始
2.delete可以添加筛选条件,truncate不可以添加筛选条件
3.truncate效率较高,是把表销毁,再按原表的格式创建一张新表
4.truncate没有返回值、delete可以返回受影响的行数
5.truncate不可以回滚, delete可以回滚