MySQL学习记录:第二章 DML语言

第二章 DML语言

/*
数据操作语言:
插入 insert
修改 update
删除 delete
*/

一、插入语句

1、方式一:经典方式

/*
语法

insert into 表名(列名,...) values(值1,...)

*/

SELECT * FROM beauty
SELECT * FROM boys
(1)插入的值类型要与列的类型一致或兼容
INSERT INTO beauty(id,name,sex,borndate,phone,photo,boyfriend_id)
VALUES(13,'唐艺昕','女','1987-10-9','18209179777',NULL,5);

INSERT INTO boys(id,boyName,userCP) VALUES(5,'张若昀',700);
(2)不可以为null的列必须插入值,可以为null的列如何插入值?

#字段和个数可以和原始表的字段和个数不一致
#方式一:字段写上,值使用NULL

INSERT INTO beauty(id,name,sex,borndate,phone,photo,boyfriend_id)
VALUES(13,'唐艺昕','女','1987-10-9','18209179777',NULL,5);

#方式二:字段和值都省略

INSERT INTO beauty(id,name,sex,borndate,phone)
VALUES(14,'王鸥','女','1982-10-28','18209177777');
(3)列的顺序是否可以调换
INSERT INTO beauty(id,borndate,phone,name,sex)
VALUES(15,'1981-6-3','18209172777','杨蓉','女');
(4)列数和值个数必须一致
INSERT INTO beauty(id,name,sex,phone)
VALUES(16,'吴昕','女','1982-10-28','18209177777');
(5)可以省略列名,默认所以列,而且列的顺序和表的列顺序一致
INSERT INTO beauty
VALUES(16,'吴昕','女','1983-1-29','18209379777',NULL,NULL);

2、方式二

/*
语法

insert into 表名
set 列名=值,列名=值,....

*/

INSERT INTO beauty
SET id=17,`name`='戚薇',sex='女',phone='18238976545';

3、两种方式对比

(1)方式一支持插入多行,方式二不支持
INSERT INTO boys
VALUES(6,'何炅',NULL),  (7,'撒贝宁',NULL), (8,'魏晨',NULL),
 (9,'白敬亭',NULL),(10,'大张伟',NULL),(11,'刘昊然',NULL);
(2)方式一支持子查询,方式二不支持
INSERT INTO boys(id,boyName,userCP)
SELECT 12,'魏大勋',NULL UNION
13,'测试',NULL;

二、修改语句

/*
1、修改单表的记录*
语法

update 表名
set 列名=新值,列名=新值,...
where 筛选条件;

2、修改多表的记录(级联更新)
sql92语法

update 表1 别名,表2 别名
set 列= 值,...
where 连接条件
and 筛选条件

sql99语法

update 表1 别名
inner|left|right join 表2 别名
on 连接条件
set 列= 值,...
where 筛选条件

*/

1、修改单表的记录

SELECT * FROM beauty
SELECT * FROM boys

#案例:修改beauty表中ID为18的女神姓名

UPDATE beauty SET `name`='测试' WHERE id=18;

2、修改多表的记录(级联更新)

#案例:修改张无忌的女朋友的手机号为18276540114

UPDATE boys b INNER JOIN beauty g ON b.id=g.boyfriend_id
SET g.phone='18276540114' WHERE b.boyName = '张无忌';

#案例:修改没有男朋友的女神的男朋友编号为13号

UPDATE beauty g LEFT JOIN boys b ON b.id=g.boyfriend_id
SET g.boyfriend_id = 13 WHERE b.id IS NULL;

三、删除语句

/*
方式一:delete
1、单表的删除*
语法

delete from 表名 where 筛选条件 【limit 条目数】;

2、多表的删除
sql92语法

delete 表1的别名,表2的别名
from 表1 别名,表2 别名
where 连接条件
and 筛选条件;

sql99语法

delete 表1的别名,表2的别名
from 表1 别名
inner|left|right join 表2 别名
on 连接条件
where 筛选条件;

方式二:truncate
语法

truncate table 表名;

两种方式对比
1、delete 可以加where条件,truncate不能加
2、truncate删除,效果高一些
3、假如要删除的表中有自增长列:
用delete删除后,自增长列的值从断点开始,
用truncate删除后,再插入数据,自增长列的值从1开始
4、truncate删除没有返回值,delete删除有返回值
5、truncate删除不能回滚,delete删除可以回滚
*/

1、方式一:delete

(1)单表的删除
SELECT * FROM beauty;
SELECT * FROM boys;

#案例:删除手机号以9结尾的女神信息

DELETE FROM beauty WHERE phone like '%9';
(2)多表的删除

#案例:删除张无忌的女朋友信息

DELETE b
FROM beauty b INNER JOIN boys bo ON b.boyfriend_id=bo.id
WHERE bo.boyName='张无忌';

#案例:删除黄晓明的信息以及他女朋友的信息

DELETE b,bo
FROM beauty b INNER JOIN boys bo ON b.boyfriend_id=bo.id
WHERE bo.boyName='黄晓明';

2、 方式二:truncate

#案例:将boys表信息删除

TRUNCATE TABLE boys;

====================================================

分享,多担待。望有帮助

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值