#DML语言
/*
数据操作语言:
插入:insert
修改:update
删除:delete
*/
#一、插入语句
/*
两种方式区别:
方式一(values):支持一次插入多行,方式二不支持
方式一(values): 支持子查询,方式二不支持
*/
#方式一(经典方式)——————————————————————————————————————————————————————————————————————*****
/*
语法:
insert into 表名(字段名,...)
values (值1,...);
注意:插入值的类型要与列的类型一致或兼容
*/
#案例1、插入值的类型要与列的类型一致或兼容
INSERT INTO`beauty` (id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUES(13,'嬛嬛','女','1990-05-11','12312312212',NULL,10);
INSERT INTO`beauty` (`id`,`name`,`sex`,`borndate`,`phone`,`photo`,`boyfriend_id`)
VALUES(14,'眉庄','女','1988-05-11','12311112212',NULL,10);
#案例2、可以为null的列是如何插入值的----------设计表时默认可以为空(nullable)
#法一:写列名,对应的值写null(如上例)
#法二:不写列名,不写对应的值
INSERT INTO`beauty`(`id`,`name`,`sex`,`borndate`,`phone`,`boyfriend_id`)
VALUES(15,'世兰','女','1985-08-11','12333331234',10);
#案例3、列的顺序是否可以颠倒----------列的顺序可以颠倒
INSERT INTO `beauty`(NAME,sex,phone,boyfriend_id)
VALUES ('安陵容','女','12355551234',10);
#案例4、插入的列和值的个数必须一致
INSERT INTO `beauty`(NAME,sex,phone,boyfriend_id,photo)
VALUES ('祺嫔','女','12344441234',10);
#案例5、可以省略列名,默认所有列,且列的顺序和表中列的顺序一致
INSERT INTO `beauty`
VALUES(17,'余莺儿','女','1988-12-23','12300001234',NULL,10);
-- ---------------插入多行------------------
INSERT INTO `beauty`
VALUES(19,'淳儿','女','1998-12-23','12399991234',NULL,10)
,(20,'纯元','女','1985-12-23','12300000001',NULL,10);
-- ---------------插入子查询----------------(把查询结果插入到表里去)
INSERT INTO `beauty`(id,NAME,phone)
SELECT 21,'曹琴默','12388881234';
#方式二(简洁方式)——————————————————————————————————————————————————————————————————————*****
/*
语法:
insert into 表名
set 列名=值,列名=值......
*/
#案例1、
INSERT INTO `beauty`
SET id=18,NAME='瑛贵人',sex='女',phone='12344441234',boyfriend_id=10;
SELECT * FROM `beauty`;
#二、修改语句
/*
一、修改单表的记录
语法: #执行顺序:
update 表名 1
set 列=值,列=值。。。。。。 3
where 筛选条件; 2
二、修改多表的记录
语法:
92语法:
update 表1 别名,表2 别名
set 列=值,。。。。
where 连接条件
and 筛选条件;
99语法:
update 表1 别名
【连接类型】join 表2 别名
on 连接条件
set 列=值,。。。。
where 筛选条件;
*/
#一、修改单表记录
-- -----------修改单列------------------
#案例1、修改beauty表中嬛嬛的电话
UPDATE `beauty`
SET `phone`='12311111234'
WHERE NAME = '嬛嬛';
-- -----------修改多列-----------------
#案例、修改世兰的名字为华妃,电话为12377771234
UPDATE beauty
SET NAME='华妃',phone='12377771234'
WHERE NAME='世兰';
#二、修改多表的记录
-- -----------内连接---------------------
#案例、修改四郎的老婆们的手机号为01000000002
UPDATE `beauty` AS g
INNER JOIN `boys` AS b
ON g.`boyfriend_id`=b.`id`
SET phone='01000000002'
WHERE b.`boyName`='四郎';
-- ------------外连接--------------------
#案例、修改没有男朋友的女神的男朋友编号为10
UPDATE `beauty` AS g
LEFT OUTER
JOIN `boys` AS b
ON g.`boyfriend_id`=b.`id`
SET g.`boyfriend_id`=10
WHERE b.`id`IS NULL;
#三、删除语句
/*
方式一:delete (删除整行记录)
语法:
1、删除单表 delete from 表名 where筛选条件
2、删除多表
92语法:
delete 表1 的别名,表2 的别名
from 表1 别名,表2 别名
where 连接条件
and 筛选条件;
99语法:
delete 表1 的别名,表2 的别名
from 表1 别名
【连接类型】join 表2 别名
on 连接条件
where 筛选条件
方式二:truncate (删除整个表的记录)
语法:
truncate table 表名;
区别:
1、delete可以加where筛选条件
2、清空表用truncate效率高
3、如果要删除的表中有自增长列
delete删除后再插入数据,自增长列的值从断点开始
truncate删除后再插入数据,自增长列的值从1开始
4、truncate删除没有返回值(不告诉你几行受影响),delete删除有返回值
5、truncate删除不能回滚,delete删除可以回滚
*/
#方式一:delete
-- ---------------删除单表记录------------------
#案例、删除手机号以9结尾的女神信息
DELETE FROM `beauty` WHERE phone LIKE '%9';
-- ---------------删除多表记录(连接)----------
#案例、删除张无忌的女朋友信息
-- 99语法------
DELETE g
FROM `beauty` AS g
INNER JOIN `boys` AS b
ON g.`boyfriend_id`=b.`id`
WHERE b.`boyName`='张无忌';
#案例、删除黄晓明的信息和他女朋友的信息
-- 92语法------
DELETE b,g
FROM `beauty` AS g, `boys` AS b
WHERE g.`boyfriend_id`=b.`id`
AND b.`boyName`='黄晓明';
#方式二:truncate (清空表)
-- -------------------------------------------
#案例、没有案例,不敢删表
DELETE TABLE 表名;
SELECT * FROM `beauty`;
DML语言增删改
最新推荐文章于 2021-06-25 23:40:11 发布