目录
1、DML基本介绍。
分类 全称 说明 DML Data Manipulation Language 数据操作语言。用来对数据库表中的数据进行增删改。
(插入、删除、修改)
2、插入、修改、删除三个关键字。
- 插入。INSERT INTO ...
- 修改。UPDATE ... SET ...
- 删除。DELETE FROM ...
3、插入数据的语法。
(1)给指定字段插入数据。
INSERT INTO 表名(列名1,列名2, …) VALUES(值1, 值2)
(2)给所有字段添加数据。
INSERT INTO 表名 VALUES(值1,值2,…)
(3)批量添加数据。
注释:
- 第一条sql语句:为当前表中指定字段添加多个数据。
- 第二条sql语句:为当前表中所有的字段添加多个数据
(4)非空字段(NOT NULL)插入数据说明。
- 若某个字段非空,那么在插入数据的时候一定需要数据。(非空列,一定要赋值!)
(5)sql中"值"的说明??
- 文本类型、日期类型都要使用单引号。(
CHAR
,VARCHAR
,TEXT,DATE...)
如插入日期('2024-10-31')、性别('男')等等。- 数值类型。在mysql当中,尽量不使用单引号。
- mysql 当中的""(双引号)有特殊用法!!
(6)为赋值的列,默认为空(NULL)!
4、修改数据的语法。
(1)基本语法结构。
- "[]"表示可有可无。
- 全表修改——>没有WHERE子句。慎用!!
UPDATE 表名 SET 字段名1=值1 ,字段名2=值2 , ...[ WHERE 条件];
(2)sql语句支持加减乘除。
- 如给员工表的每个员工工资都加1000元。
update emp set salary = salary + 1000;
(3)给部分列(字段值)修改。
- 添加WHERE子句。
- 支持比较运算、逻辑运算。
(4)mysql中的与、或、非。
- 与:AND。
- 或:OR。
- 非:NOT。检查一个列的值是否为空:IS NOT NULL。
(5)mysql中的等于、不等于。
- 等于:"="。
- 不等于有两种:"<>"与"!="。"<>"是标准 SQL 中的不等于运算符。它们两个的功能是一样的。
5、删除数据的语法。
(1)基本语法结构。
- 删除所有——>没有WHERE字句,慎用!!!
DELETE FROM 表名 [WHERE 条件];
#没有WHERE字句,慎用! DELETE FROM 表名;(2)补充与注意。
1、DELETE 语句的条件可以有,也可以没有。
2、如果没有条件,则会删除整张表的所有数据。
3、DELETE 语句不能删除某一个字段的值 。(如果要删除某一字段的值,可以使用 UPDATE ,将这个字段设置为NULL就行!)
(3)删除数据——TRUNCATE。
1、基本介绍。
- 在 MySQL 中,TRUNCATE 语句用于快速删除表中的所有数据,并且通常比使用 DELETE 语句更快。效率更快!!
- 这是因为 TRUNCATE 是一个 DDL(数据定义语言)操作,而 DELETE 是一个 DML(数据操作语言)操作。
- TRUNCATE 会重置表,但不会删除表结构本身。(先删除表(DROP 表),再重新创建一张表(CREATE 表))
2、关键点与注意事项。
- 快速删除。TRUNCATE 语句通过释放表的数据页来删除所有行,这比 DELETE 语句逐行删除要快得多。
- 重置 AUTO_INCREMENT。TRUNCATE 会将表的 AUTO_INCREMENT 计数器重置为初始值(通常是 1,除非在表创建时指定了其他值)。会恢复自增列的值!
- 如果是DELETE删除某一列或者某张表的所有数据,通常主键"id"不会置为"1"。也就是不会恢复自增列的值!
- 不触发触发器。TRUNCATE 不会触发 DELETE 触发器。
- 无法回滚。
- TRUNCATE 是一种 DDL 操作,因此它隐式地提交事务,并且不能被回滚。
- DELETE执行删除数据,可以回滚。
- 回滚是事务的知识!
- 权限要求。执行 TRUNCATE 语句需要表的 ALTER 或 DROP 权限。
- 外键约束。如果表被其他表的外键约束所引用,则不能对该表执行 TRUNCATE 操作
3、使用语法。
- "[]"内可以省略不写。
TRUNCATE [TABLE] 表名;
- 不能添加WHERE字句!!也就是不能带条件。
4、怎样选择??
- 备份数据。在执行 TRUNCATE 之前,确保已经备份了需要保留的数据。因为 TRUNCATE 操作是不可逆的。
- 外键约束。如果表有外键约束,你可能需要先删除或禁用这些约束,然后才能执行 TRUNCATE。
- 触发器。如果你依赖于 DELETE 触发器来执行某些操作(如日志记录),则 TRUNCATE 不是一个合适的选择。