MySQL DML 数据操作语言 增删改操作

本文详细介绍了DML(Data Manipulation Language)中的核心指令,包括INSERT(插入)、UPDATE(更新)和DELETE(删除),并提供了丰富的实例进行说明。此外,还探讨了DROP、TRUNCATE和DELETE在删除数据时的不同,特别是它们在速度和是否可回滚事务上的区别。了解这些基础操作对于数据库管理至关重要。
摘要由CSDN通过智能技术生成

1.什么是DML

Data Manipulation Language,数据操作语言,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入、更新与删除,是必须要掌握的指令,DML和SQL中的SELECT俗称CRUD(增删改查)。

2.插入

  • 插入单行
    方法1语法: INSERT INTO 表名 [(字段1,字段2,…)] VALUES (字段1的值,字段2的值,…);
    举例: INSERT INTO stu (id,name) VALUES (NULL, ‘Tom’);
    方法2语法: INSERT INTO 表名 SET 字段1=值1, 字段2=值2, …; 不常用
    举例: INSERT INTO stu SET id=NULL, name=‘Jerry’;

  • 批量插入
    方法1语法: INSERT INTO 表名 [(字段1,字段2,…)] VALUES (字段1的值,字段2的值,…),(字段1的值,字段2的值,…),…;
    举例: INSERT INTO stu (id, name) VALUES (NULL,‘Lucy’),(NULL, ‘Lily’);
    方法2语法: INSERT INTO 表名 [(字段1,字段2,…)] 数据来源于后面到的SELECT语句;
    举例1: INSERT INTO stu3 SELECT * FROM student; – 如果主键值一样会报错
    举例2: INSERT INTO stu (id,name) SELECT NULL,name FROM student;

注意:
值和字段需要一一对应
如果是字符型或日期类型,值需要用单引号引起来;如果是数值类型,不需要用单引号
字段和值的个数必须一致,位置对应
字段如果不能为空,则必须插入值
可以为空的字段可以不用插入值,但需要注意:字段和值都不写;或字段写上,值用NULL代替
表名后面的字段可以省略不写,此时表示所有字段,顺序和表中字段顺序一致

3.更新

  • 更新单表
    语法: UPDATE 表名 [[AS] 别名] SET [别名.]字段 = 值,[别名.]字段 = 值 [WHERE条件];
    举例: UPDATE stu SET name=‘齐天大圣’ WHERE id=11;
  • 更新多表
    语法: UPDATE 表1 [[AS] 别名1],表名2 [[AS] 别名2] SET [别名.]字段 = 值,[别名.]字段 = 值 [WHERE条件];
    举例: UPDATE stu,stu3 SET stu.name=‘汤姆’,stu3.name=‘Tom’ WHERE stu.id=1 OR stu3.id=9; – 慎用,stu的name都改为汤姆,stu3的name都改为了Tom。要注意连接条件。
    举例2: UPDATE stu,stu3 SET stu.name=‘Tom’,stu3.name=‘汤姆’ WHERE stu.id=stu3.id; – 可以达到预期效果

注意:
有些表名可能名称⽐较长,为了方便操作,可以给这个表名起个简单的别名,更方便操作。
如果没有别名的时候,表名就是别名。
推荐使用单表更新。

4.删除

  • 单表删除
    语法: DELETE [别名] FROM 表名 [[AS] 别名] [WHERE条件];
    举例: DELETE FROM stu WHERE id = 14;
    注意:
    如果没有别名的时候,表名就是别名
    如果有别名,delete后面必须写别名
    如果没有别名,delete后面的别名可以省略不写。

  • 多表删除
    语法: DELETE [别名1,别名2] FROM 表1 [[AS] 别名1],表2 [[AS] 别名2] [where条件];
    举例: DELETE stu,stu3 FROM stu,stu3 WHERE stu.id=stu3.id;
    注意:
    别名可以省略不写,但是需要在DELETE后面跟上表名,多个表名之间⽤逗号隔开。

  • 使用 TRUNCATE
    语法: TRUNCATE 表名:-- 相当于先删除表,然后再建一个一模一样结构的表

5. DROP/TRUNCATE/DELETE的区别

  • DROP (删除表):删除数据内容和定义,释放空间。属于DDL,不能放入事务中回滚。
  • TRUNCATE 只清空表中的数据,相当于删除表之后再建一个一模一样结构的表。属于DDL,不能放入事务中回滚。
  • DELETE 用于删除表中的行。属于DML,可以放入事务中回滚。
  • 删除速度 一般来说: DROP> TRUNCATE > DELETE
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值