DML语言增删改

#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`;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值