#DML语言
/*
数据操作语言:
插入:insert
修改:update
删除:delete
*/
#一、插入语句
/*
语法:
insert into 表名(列名...) values(值1,...);
*/
#1.插入的值的类型要与列的类型一致或兼容
INSERT INTO beauty(id, NAME, sex, phone, boyfriend)
VALUES(12, '张三', '13525252525', NULL);
#2.列的顺序是否可以调换
#可以调换,但要一一对应,列数和值数必须一致
#方式二:
/*
语法:
insert into 表名
set 列名=值, 列名=值....
*/
#两种方式大PK
1、方式一支持插入多行,方式二不支持
INSERT INTO beauty
VALUES(12, '张三', '13525252525', NULL),
VALUES(13, '张三三', '13525252565', NULL),
VALUES(14, '张四', '13525256525', NULL)
2、方式一支持子查询,方式二不支持
INSERT INTO beauty(id, NAME, sex, phone, boyfriend)
SELECT 12, '张三', '13525252525', NULL;
INSERT INTO beauty(id, NAME, sex, phone, boyfriend)
SELECT id, NAME, sex, phone, boyfriend
FROM beauty_2 WHERE id>16;
#二、修改语句
/*
1、修改单表中的记录
语法:
update 表
set 列1=新值,列2=新值.....
where 筛选条件(不加where,所有的值都改变);
2、修改多表中的记录【补充】
语法:
update 表1 别名, 表2 别名
set 列=值
where 连接条件
and 筛选条件;
sql99语法:
update 表1 别名
inner|left|right join 表2 别名
on 连接条件
set 列=值....
where 筛选条件;
*/
#1.修改单表的记录
UPDATE beauty SET id=5, NAME='李四' WHERE NAME='张三';
#2.修改夺表的记录
UPDATE boys bo
INNER JOIN beauty b ON bo.'id'=b.'boyfriend_id'
SET b.'phone'='114'
WHERE bo.boy='张无忌';
#三、删除语句
/*
方式一:delete
语法:
1、单表删除
delete from 表名 where 筛选条件;
不加where 筛选条件,该表所有内容都删除;
2、多表删除【补充】
sql92语法:
delete 表1的别名
from 表1 别名, 表2 别名
where 连接条件
and 筛选条件;
sql99语法:
delete 表1的别名,表2的别名
from 表1 别名
inner|left|right join 表2 别名 on 连接条件
where 筛选条件;
方式二:truncate
语法: truncate table 表名;
(清空,不允许加where语句)
*/
#1、单表删除
DELETE FROM beauty WHERE phone LIKE '%156%';
#2、多表删除
SELECT b1, b2 FROM beauty b1 INNER JOIN boy b2 ON b1.name = b2.name
WHERE b1.boyName='张无忌';
#3、truncate语句(清空,不允许加where语句)
TRUNCATE TABLE boys;
# delete PK truncate
1. DELETE 可以加where 条件,truncate 不可以
2.truncate删除,效率高一丢丢
3.假如我们要删除的表中有自增长列,如果用delete删除后,
再插入数据,自增长列从断点开始。
而 TRUNCATE 删除后在插入语句,自增长列从1开始.
4.truncate 删除没有返回值,delete 删除有返回值。
5.truncate 删除不能回滚,delete删除可以回滚