DML(Data Manipulation Language)语句:用于添加、修改、删除和查询数据库记录,并检查数据完整性,常用关键字:insert、update、delete、select等。
1.插入表数据(insert)
语法:
#方式一:经典的插入语句 insert into 表名(字段1,字段2...字段n) values('值1','值2'...'值n') #方式二:insert into 表名 set 字段1=值1,字段2=值2...字段3=值3
USE girls;
#1.插入的值与列类型一致或兼容
INSERT INTO beauty(id, name, sex, borndate, phone, photo, boyfriend_id)
VALUES(20, '刘涛', '女', '1999-01-23', '13113112325', NULL, 2);
#2.可以省略列名,默认所有列,而且插值的顺序和表中列的顺序一致
INSERT INTO beauty VALUES(21, '唐艺昕', '女', '1999-01-23', '13113112325', NULL, 2);
#3.可以批量插入
INSERT INTO beauty
VALUES(22, '毛晓彤', '女', '1999-01-23', '13113112325', NULL, 2),
(23, '杨幂', '女', '1999-01-23', '13113112325', NULL, 2),
(24, '古力娜扎', '女', '1999-01-23', '13113112325', NULL, 2);
#4.使用set插值
INSERT INTO beauty
SET id=25, name='钟欣桐', phone='12345678910', borndate='1999-02-23';
方式一和方式二的区别:
- 方式一支持多行插入,方式二不支持
- 方式一支持子查询,方式二不支持
#子查询单行插入
INSERT INTO beauty(id, name, phone)
SELECT 26, '宋铁', '112345';
#子查询多行插入
INSERT INTO beauty(id, name, phone)
SELECT id, boyName, '1234567'
FROM boys
WHERE id < 3;
2.修改表数据(update)
语法:
修改单表记录: update 表名 set 列名1=值1,列名2=值2...列名n=值n where 筛选条件 修改多表记录: (1)sql92语法: update 表1 别名,表2 别名 set列=值... where 连接条件 and 筛选条件 (2)sql99语法(推荐): update 表1 别名 inner|left|right| join 表2 别名 on 连接条件 set 列=值,... where 筛选条 件
#案例1:修改beauty表中姓杨的女神电话为13800138000
UPDATE beauty
SET phone = '13800138000'
WHERE name like '杨%';
#案例2:修改boys表中id号为2的名称为叶问,魅力值为90
UPDATE boys
SET boyName='叶问', userCp=90
WHERE id=2;
#案例3:修改张无忌的女朋友手机号为5201314
#sql92语法:
UPDATE beauty b, boys bo
SET phone='5201314'
WHERE b.boyfriend_id = bo.id
and bo.boyName='张无忌';
#sql99语法:
UPDATE beauty b
INNER JOIN boys bo
ON b.boyfriend_id = bo.id
SET phone='5201314'
WHERE bo.boyName='张无忌';
3.删除语句(delete)
语法:
单表删除: delete from 表名 where 筛选条件 多表删除: (1)sql92语法: delete 表名1,表名2 from 表名1,表名2 where 连接条件 and 筛选条件 (2)sql99语法(推荐): delete 表名1 inner|left|right|join 表名2 on 连接条件 where 筛选条件
#案例1:删除手机号为9结尾的女神信息
DELETE FROM beauty WHERE phone LIKE '%9';
#案例2:删除张无忌女朋友的信息
#sql92语法:
DELETE beauty FROM beauty, boys
WHERE beauty.boyfriend_id = boys.id
AND boys.boyName='张无忌';
#sql99语法:
DELETE b
FROM beauty b
INNER JOIN boys bo
ON bo.id = b.boyfriend_id
WHERE bo.boyName='张无忌';
#案例3:删除黄晓明以及他女朋友的信息
#sql99语法
DELETE b, bo
FROM beauty b
INNER JOIN boys bo
ON bo.id = b.boyfriend_id
WHERE bo.boyName='黄晓明';
#sql92语法
DELETE b, bo FROM beauty b, boys bo
WHERE bo.id = b.boyfriend_id
AND bo.boyName='黄晓明';
4.清空表(truncate)
语法:
truncate table '表名'
delete和truncate作对比:
- delete可加筛选条件,truncate不可以
- truncate效率更高
- 假如在删除自增列的时候:delete删除后,再插入新数据,自增列的值从断点开始;truncate删除后,再插入数据,自增列从1开始
- truncate删除没有返回值,delete删除有返回值
- truncate删除不能回滚,delete删除可以回滚