MySQL之DML(数据操作语言)

本文详细介绍了数据库操作中的插入、修改和删除语句。插入语句包括多种方式,如指定列名插入、设置值等,并支持插入多行和子查询。修改语句涉及单表和多表记录的更新,通过`UPDATE`语句实现。删除语句则有`DELETE`和`TRUNCATE`两种方式,前者支持条件删除,后者用于快速清空表。文中通过实例解析了各种操作的使用方法和注意事项。
摘要由CSDN通过智能技术生成

当当当当~~~~欢迎大家阅读,今天我们学习 数据操作语言

插入语句

一、语法:

(一)方式一:

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

1、插入的值的类型要与列的类型一致或兼容

SELECT*FROM beauty;
INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUES(13,'刘亦菲','女','1990-4-4','123456789',NULL,2);

2、不可以为null 的列必须插入值。可以为null的列如何插入值?

方式一:对应值的部分插入null(字段写上,值使用null)

INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUES(13,'刘亦菲','女','1990-4-4','123456789',NULL,2);

方式二:列和值都不写(字段和值都省略)

INSERT INTO beauty(id,NAME,sex,borndate,phone,boyfriend_id)
VALUES(13,'刘亦菲','女','1990-4-4','123456789',2);

3、列的顺序可以调换(字段的个数和顺序不一定与原始表中的字段个数和顺序一致)

INSERT INTO beauty( NAME,id,sex,borndate,phone,photo,boyfriend_id)
VALUES('刘亦菲',13,'女','1990-4-4','123456789',NULL,2);

4、列数和值的个数必须一致(必须保证值和字段一一对应)

INSERT INTO beauty(id,NAME,sex,borndate,phone)
VALUES(13,'刘亦菲','女','1990-4-4','123456789');

5、可以省略列名,默认所有列,而且列的顺序和表中列的顺序一致

INSERT INTO beauty
VALUES(13,'刘亦菲','女','1990-4-4','123456789',NULL,2);

(二)方式二:

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

例:
INSERT INTO beauty
SET id=13,name='刘亦菲',phone='123456789'...

(三)两种方式大pk

1、方式一支持插入多行,方式二不支持

INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUES(13,'刘亦菲','女','1990-4-4','123456789',NULL,2)
,(13,'刘亦菲','女','1990-4-4','123456789',NULL,2)
,(13,'刘亦菲','女','1990-4-4','123456789',NULL,2);

2、方式一支持子查询,方式二不支持

INSERT INTO beauty(id,NAME,phone)
SELECT id,boyname,'123456789'
FROM boys
WHERE id<3;

修改语句

一、语法

1、修改单表的记录★

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

2、修改多表的记录【补充】

sql92语法:

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

sql99语法:

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

 

二、案例

1、修改单表的记录★案例

案例1:修改beauty表中姓刘的女神的电话为13899888899
UPDATE beauty
SET phone='13899888899'
WHERE NAME LIKE '刘%';

案例2:修改boys表中id号为2的名称为张飞,魅力值 10
UPDATE boys 
SET boyname='张飞',usercp=10
WHERE id=2;

2、修改多表的记录 案例

案例1:修改张无忌的女朋友的手机号为1234567
UPDATE boys bo
INNER JOIN beauty b
ON bo.`id`=b.`boyfriend_id`
SET b.`phone`='1234567'
WHERE bo.`boyName`='张无忌';

案例2:修改没有男朋友的女神的男朋友编号都为2号
UPDATE boys bo
RIGHT JOIN beauty b
ON bo.`id`=b.`boyfriend_id`
SET b.`boyfriend_id`=2
WHERE  b.`id` IS NULL

 删除语句

一、语法

(一)方式一:delete

1、单表的删除

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

2、多表的删除【补充】

(1)sql92:

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

(2)sql99:

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

(二)方式二:truncate

truncate table 表名;(整张表都被删除)
无法做到单一删除,只能一删全删

二、案例

(一)方式一:delete

1、单表的删除

案例1:删除手机号以9结尾的女神信息
DELETE FROM beauty 
WHERE phone LIKE'%9';

2、多表的删除【补充】

案例1:删除张无忌的女朋友的信息
DELETE b
FROM beauty b
INNER JOIN boys bo
ON b.`boyfriend_id`=bo.`id`
WHERE bo.`boyName`='张无忌';

案例2:删除黄晓明以及他女朋友的信息
DELETE b,bo
FROM beauty b
INNER JOIN boys bo
ON b.`boyfriend_id`=bo.`id`
WHERE bo.`boyName`='黄晓明';

(二)方式二:truncate

案例1:将魅力值>100的男神信息删除
TRUNCATE TABLE boys;后面不能加任何条件

(三)delete PK truncate★【面试题】

1、delete可以加where 条件,truncate不能加
2、truncate删除,效率高一丢丢
3、假如要删除的表中有自增长列,
如果用delete删除后,再插入数据,自增长列的值从断点开始
而truncate删除后,再插入数据,自增长列的值从1开始
4、truncate删除没有返回值,delete删除有返回值(返回受影响的行数)
5、truncate删除不能回滚,delete删除可以回滚

以上就是数据操作语言啦,希望我的文章对你有所帮助,如果有错误的地方还望大家批评指正,谢谢大家阅读! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值