-- DML语言
/*
数据操作的语言
插入:insert
修改:update
删除:delete
*/
1.插入
-- 插入语句
/*
语法:insert into 表名(列名...) values(值...);
*/
-- 方式一
-- 1.插入值的类型要与列的类型一致或兼容
INSERT INTO beauty(`id`,`name`,`sex`,`borndate`,`phone`,`photo`,`boyfriend_id`)
VALUES(13,'麦克雷','男','1984.7.1','13535356464',NULL,2);
-- 2.可以为Null的列如何插入值?
-- 方式一 写null值
-- 方式二 插入的字段不写 自动填充默认值或Null
INSERT INTO beauty(`id`,`name`,`sex`,`borndate`,`phone`,`boyfriend_id`)
VALUES(13,'麦克雷','男','1984.7.1','13535356464',2);
-- 3.列的顺序是否可以调换,可以
-- 4.列数和值数必须一致
-- 5.可以省略列名,默认所有列,并且列的顺序和表中的顺序一致。
-- 方式二
/*
insert into 表名 set 列名=值,列名=值...;
*/
INSERT INTO beauty SET id=19,NAME='张飞',phone='110';
-- 两种方式比较
-- 1.方式一支持多行插入,方式二不支持
INSERT INTO beauty
VALUES(13,'麦克雷','男','1984.7.1','13535356464',NULL,2),
VALUES(14,'天使','女','1999.6.1','120',NULL,3),
...;
-- 2.方式一支持子查询,方式二不支持
INSERT INTO beauty(id,NAME,phone) SELECT 55,'骚猪','13929292929';
2.修改
-- 修改
/*
1.修改单表的记录☆
语法:update 表名 set 列=新值,列=新值... where 筛选条件
2.修改多表的记录
sql92:
update 表1 别名,表2 别名 set 列=新值.. where连接条件 and 筛选条件
sql99:
update 表1 别名 inner(left)right join 表2 别名 on 连接条件 set列=新值 where 筛选条件;
*/
-- 修改单表记录
-- 1.修改beauty表中,姓苍的电话为110
UPDATE beauty SET phone = '110' WHERE NAME LIKE '苍%';
-- 2.修改boys表中id=2的名称为张飞,魅力值为10
UPDATE boys SET boyName = '张飞',userCP = 10 WHERE id = 2;
-- 修改多表记录
-- 1.修改张无忌的女朋友的手机号为114
UPDATE boys bo
JOIN beauty be
ON bo.`id`=be.`boyfriend_id`
SET be.`phone`='110'
WHERE bo.`boyName`='张无忌';
-- 2.修改没有男朋友的 女神的男朋友编号都为2号
UPDATE beauty SET boyfriend_id =2 WHERE boyfriend_id IS NULL;
3.删除
-- 删除语句
/*
delete
1.单表删除
语法一:delete from 表名 where 筛选条件
2.多表删除
sql92: delete 别名 from 表1 别名,表2 别名 where 连接条件 and 筛选条件;
sql99: delete 别名 from 表1 别名 inner left right join 表2 别名 on 连接条件 where 筛选条件
truncate
trancate table 表名;
*/
-- delete
-- 单表删除
-- 删除手机号以9结尾的女神信息
DELETE FROM beauty WHERE phone LIKE '%9';
-- 多表删除
-- 删除张无忌的女朋友的信息
DELETE be
FROM beauty be
INNER JOIN boys bo
ON be.`boyfriend_id`=bo.`id`
WHERE bo.`boyName`='张无忌';
-- 删除黄晓明的信息和它女朋友的信息
DELETE be,bo
FROM beauty be
INNER JOIN boys bo
ON be.`boyfriend_id`=bo.`id`
WHERE bo.`boyName`='黄晓明';
-- truncate语句
-- 只能删除整个表,后面不能加筛选条件
-- delete 和 truncate比较
/*
1.delete可以加where条件,truncate不能加
2.truncate删除,效率高一些
3.加入要删除的表中有自增长列
如果用delete删除后,再插入值,自增长列的值从断点开始
而truncate删除后,再插入值,自增长列的值从1开始
4.truncate删除没有返回值,delete删除有返回值
5.truncate删除不能回滚,delete删除可以回滚
*/