mysql基础【SQL语句】
1.SQL通用语法
1.1 SQL语句可以单行或多行书写,以分号结尾
SQL语句支持灵活的格式化方式,既可以写成一行,也可以跨多行书写,便于复杂查询的组织与阅读。
示例:
单行书写:
-- 查询员工表中指定ID的员工信息
--
-- 功能说明:
-- 从 `employee` 表中检索所有字段(*),筛选条件为 id = 1
--
SELECT * FROM employee WHERE id = 1;
多行书写:
-- 查询指定部门下所有员工的基本信息
--
-- 功能说明:
-- 从 `employee` 表中提取 name(姓名)、job(职位)、salary(薪资)三个字段
-- 筛选条件:仅返回 dept_id = 2 的员工记录
-- 目的:用于生成部门人员清单或薪资报表
--
-- 字段解释:
-- - name: 员工姓名,字符串类型
-- - job: 当前岗位名称,如“开发工程师”、“项目经理”
-- - salary: 月薪或年薪,数值类型(单位:元)
--
SELECT name, -- 员工姓名job, -- 岗位名称salary -- 薪资金额
FROM employee -- 员工信息主表
WHERE dept_id = 2; -- 筛选条件:仅查询部门编号为 2 的员工
注意: 每条SQL语句必须以分号
;
结尾,这是MySQL等数据库识别语句结束的标志。如果省略分号,可能会导致执行失败或解析错误。
1.2 使用空格/缩进来增强可读性
良好的代码风格能极大提高团队协作效率和后期维护性。虽然SQL不强制要求格式化,但建议合理使用空格、换行和缩进来提升语句的可读性。
示例:
-- 更新用户表中所有状态为“活跃”的用户信息
--
-- 功能说明:
-- 对 `user` 表中满足条件的记录执行字段更新操作
-- 具体操作包括:
-- 1. 将 age(年龄)字段值加 1(常用于生日自动增长场景)
-- 2. 将 updated_at(最后更新时间)字段设置为当前时间
-- 筛选条件:仅更新 status(状态)为 'active' 的用户
--
-- 字段说明:
-- - age: 用户年龄,整数类型,此处进行自增操作
-- - updated_at: 时间戳字段,用于追踪记录的最后更新时间
-- - status: 状态标识字段,'active' 表示账户处于激活状态
--
-- 函数说明:
-- - NOW(): MySQL 内置函数,返回当前日期和时间(格式:YYYY-MM-DD HH:MM:SS)
--
UPDATE user
SET age = age + 1, -- 年龄加一岁updated_at = NOW() -- 更新时间为当前系统时间
WHERE status = 'active'; -- 仅对状态为“活跃”的用户生效
注意:大多数数据库客户端(如 MySQL Workbench、DBeaver)都支持自动格式化功能,可一键美化SQL语句。
1.3 MySQL中的SQL语句不区分大小写,关键字建议大写
MySQL对SQL语句的大小写是不敏感的,也就是说:
SELECT * FROM user;
select * from user;
Select * From User;
这三条语句在MySQL中效果完全相同。
建议:
- 关键字(如 SELECT、FROM、WHERE、UPDATE 等)使用大写
- 表名、列名、变量名使用小写或驼峰命名法
示例:
-- 查询所有状态为“活跃”的用户基本信息
--
-- 功能说明:
-- 从 `users` 表中筛选出当前账户状态为“活跃”的用户,
-- 并返回其姓名(name)和邮箱(email)两个字段的信息。
-- 该查询用于提取有效用户数据,支持业务展示或后续处理。
--
-- 字段说明:
-- - name: 用户的姓名,字符串类型,用于标识用户身份
-- - email: 用户的电子邮箱地址,常用于登录、通信或唯一性校验
-- - status: 用户账户状态字段,'active' 表示正常启用状态
-- 其他可能值包括:'inactive'(未激活)、'suspended'(暂停)、'deleted'(逻辑删除)
--
SELECT name, -- 用户姓名email -- 用户邮箱地址
FROM users -- 用户信息主表
WHERE status = 'active'; -- 筛选条件:仅返回状态为“活跃”的用户
这样做的好处是:
- 更容易区分关键字与标识符
- 提高代码可读性和一致性
- 方便团队协作时统一编码规范
1.4、注释:让代码更易理解
在SQL中添加注释是一种非常好的习惯,尤其适用于复杂的查询逻辑或临时调试。
MySQL支持两种类型的注释方式:
1.4.1单行注释
方法一:双破折号(标准SQL)
-- 这是一个单行注释
SELECT * FROM product;
方法二:井号 #
(MySQL特有)
# 查询所有商品信息
SELECT * FROM product;
⚠️ 注意:
#
注释仅在MySQL中有效,其他数据库(如PostgreSQL、Oracle)不支持此语法。
1.4.2多行注释
使用 /* */
包裹内容,适合较长的说明。
/*
这是一个多行注释,
用于解释复杂的查询逻辑。
例如:统计每个部门的人数。
*/
SELECT dept_id, COUNT(*) AS count
FROM employee
GROUP BY dept_id;
1.5小结
规则 | 说明 |
---|---|
分号结尾 | 所有SQL语句必须以 ; 结束 |
格式自由 | 支持单行或多行书写 |
空格缩进 | 建议合理使用,提升可读性 |
大小写 | 不区分大小写,关键字建议大写 |
注释方式 | -- 或 # (单行),/* */ (多行) |
2.SQL分类
小结:
DDL 负责“建模”,DML 负责“写数据”,DQL 负责“读数据”,DCL负责“管权限”。合理使用各类语句,能有效提升数据库操作的效率与安全性。
3.DDL语句(数据定义语言)
3.1数据库操作
3.1.1查询数据库
3.1.1.1查询所有数据库
使用 SHOW DATABASES;
可以查看当前MySQL服务器中所有的数据库列表,适用于快速了解现有数据库结构。
3.1.1.2查询当前使用的数据库
使用 SELECT DATABASE();
可以获取当前连接所处的数据库名称,帮助确认操作上下文是否正确。
3.1.2创建数据库
CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则];
IF NOT EXISTS
:避免重复创建已存在的数据库,防止报错。DEFAULT CHARSET
:指定数据库默认字符集(如 UTF8MB4),确保支持中文等多语言。COLLATE
:设置排序规则,影响字符串比较方式。
💡 建议:在实际开发中,始终推荐加上
IF NOT EXISTS
来提升脚本的健壮性。
3.1.3删除数据库
DROP DATABASE [IF EXISTS] 数据库名;
IF EXISTS
:防止因误删不存在的数据库而报错。- 执行此命令会永久删除该数据库及其所有表和数据,请谨慎使用!
3.1.4使用数据库
USE 数据库名;
- 执行后,后续的所有SQL操作将作用于该数据库,直到再次切换或退出连接。
整体示例:
SHOW DATABASES;
查看现有数据库
CREATE DATABASE IF NOT EXISTS itcat;
安全创建新库:
USE itcat;
切换至该库
SELECT DATABASE();
并查询当前所处的数据库
CREATE DATABASE IF NOT EXISTS people;
安全创建新库(指定字符集):
DROP DATABASE IF EXISTS people;
安全删除旧库
3.2表操作
3.2.1创建表
使用 CREATE TABLE
命令创建新表,语法如下:
CREATE TABLE 表名 (字段1 字段1类型 [COMMENT 注释],字段2 字段2类型 [COMMENT 注释],...字段n 字段n类型 [COMMENT 注释]
) [COMMENT '表注释'];
示例代码:
CREATE TABLE tb_user (id INT COMMENT '编号',name VARCHAR(50) COMMENT '姓名',age INT COMMENT '年龄',gender VARCHAR(1) COMMENT '性别'
)COMMENT '员工表';
- 每个字段需指定名称、类型;
- 可选添加
COMMENT
提供说明; - 最后一个字段后不能有逗号;
- 可设置默认字符集、引擎等参数。
3.2.2查询表信息
3.2.2.1查看当前数据库所有表
SHOW TABLES;
3.2.2.2 查看表结构
DESC 表名;
显示字段名、类型、是否为空、主键等信息。
3.2.2.3 查看建表语句
SHOW CREATE TABLE 表名;
返回完整的建表 SQL,包含字符集、排序规则、索引等细节,适合用于迁移或备份。
整体示例1:
SHOW DATABASES;
查看现有数据库USE itcat;
切换至数据库itcat
SHOW TABLES;
查看当前数据库所有表- (由于当前数据库没有表,所以显示空)
- 在数据库
itcat
中创建一个名为tb_user
的表
DESC tb_user;
查看当前表表结构
SHOW CREATE TABLE tb_user;
返回完整的tb_user
的建表SOL
整体示例2:
- 在数据库
itcat
中建立一张完整的表emp
,并进行查询操作:
3.2.3修改表结构
ALTER TABLE
是修改表结构的主要命令,支持多种操作方式。
3.2.3.1 修改表名
ALTER TABLE 表名 RENAME TO 新表名;
示例:将
emp
表重命名为employee
ALTER TABLE emp RENAME TO employee;
3.2.3.2 添加字段
ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束];
示例:为
emp
表增加“昵称”字段
ALTER TABLE emp ADD nickname VARCHAR(20) COMMENT '昵称';
3.2.3.3 修改字段名与数据类型
(1)同时修改字段名和类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束];
示例:将
nickname
改为username
,类型改为VARCHAR(30)
ALTER TABLE emp CHANGE nickname username VARCHAR(30) COMMENT '用户名';
(2)仅修改字段类型
ALTER TABLE 表名 MODIFY 字段名 新类型(长度);
示例:将
username
的长度从 30 改为 50
ALTER TABLE emp MODIFY username VARCHAR(50);
📌 注意:MODIFY
保留原字段名,只更改类型或长度。
3.2.3.4删除字段
ALTER TABLE 表名 DROP [COLUMN] 字段名;
示例:删除
emp
表中的nickname
字段
ALTER TABLE emp DROP nickname;
📌 注意:删除字段后无法恢复,需谨慎操作
整体示例1:
DESC emp;
首先查看原表emp中的内容
ALTER TABLE emp ADD nickname VARCHAR(20) COMMENT '昵称';
- 为
emp
表添加一个名为nickname
的新字段,数据类型为VARCHAR(20)
,并添加中文注释“昵称”
ALTER TABLE emp CHANGE nickname username VARCHAR(30) COMMENT '用户名';
- 修改
emp
表中的字段:将原有字段nickname
重命名为username
,同时将其数据类型修改为VARCHAR(30)
,并添加中文注释“用户名”
ALTER TABLE emp DROP username;
删除emp
表中的username
字段
ALTER TABLE emp RENAME TO employee;
将表emp
重命名为employee
3.2.4 删除表
3.2.4.1 删除整个表(包括结构和数据)
DROP TABLE [IF EXISTS] 表名;
IF EXISTS
可避免因表不存在而报错;- 执行后表结构和所有数据都将被永久删除,不可恢复!
3.2.4.2 清空表数据但保留结构
TRUNCATE TABLE 表名;
- 快速清空表中所有数据;
- 保留表结构、索引、触发器等;
- 自增主键会重置为初始值(通常为 1);
- 相比
DELETE
更高效,且不记录逐行日志。
整体示例1:
DROP TABLE IF EXISTS tb_user;
- 删除表
tb_user
并 使用了IF EXISTS
安全条件,防止表不存在时报错
3.3 DDL 核心操作速查表
操作类型 | 命令语法 | 功能说明 | 注意事项 |
---|---|---|---|
创建数据库 | CREATE DATABASE [IF NOT EXISTS] 数据库名称 [DEFAULT CHARSET 字符集] [COLLATE 排序规则]; | 创建一个新的数据库 | 建议使用 IF NOT EXISTS 避免报错,推荐字符集为 utf8mb4 |
使用数据库 | USE 数据库名称; | 切换到指定数据库进行操作 | 后续所有表操作都在该数据库中执行 |
查询数据库 | SHOW DATABASES; SELECT DATABASE(); | 查看所有数据库 / 当前正在使用的数据库 | 用于确认环境和上下文 |
删除数据库 | DROP DATABASE [IF EXISTS] 数据库名称; | 删除指定的数据库及其所有数据 | ⚠️ 高危操作,不可恢复!建议加 IF EXISTS |
创建表 | CREATE TABLE 表名称 ( 字段名1 数据类型 [COMMENT '字段1注释'], 字段名2 数据类型 [COMMENT '字段2注释'], ... <br) COMMENT '表注释'; | 定义一张新表的结构 | 最后一个字段后不能有逗号;建议添加表和字段注释 |
查看表信息 | SHOW TABLES; DESC 表名称; SHOW CREATE TABLE 表名称; | 查看当前库中所有表 / 查看表结构 / 查看完整建表语句 | DESC 可查看字段类型、是否为空、主键等信息 |
修改表结构 | ALTER TABLE 表名称 ... | 修改表的结构(字段或表名) | 所有操作均影响表结构,需谨慎执行 |
→ 添加字段 | ADD 字段名 数据类型 [COMMENT '注释'] | 为表增加一个新字段 | 新字段默认允许为 NULL |
→ 修改字段名和类型 | CHANGE 原字段名 新字段名 数据类型 [COMMENT '新注释'] | 同时更改字段名称和数据类型 | 可同步更新注释 |
→ 仅修改字段类型 | MODIFY 字段名 新数据类型 | 不改名,只修改字段的数据类型或长度 | 字段名保持不变 |
→ 删除字段 | DROP [COLUMN] 字段名 | 删除表中的某个字段 | ⚠️ 删除后数据永久丢失!不可恢复 |
→ 重命名表 | RENAME TO 新表名 | 将表名更改为新的名称 | 不影响表中数据 |
删除表 | DROP TABLE [IF EXISTS] 表名称; | 永久删除表及其所有数据 | ⚠️ 高危操作,建议加 IF EXISTS 提高脚本容错性 |
清空表数据 | TRUNCATE TABLE 表名称; | 删除表中所有数据,保留表结构 | 自增主键会重置为 1,执行效率高于 DELETE |
✅ 提示:
- 所有 DDL 语句必须以 分号
;
结尾。- 关键字建议大写,表名、字段名使用小写加下划线(如
user_info
),提升可读性。- 建议始终为表和字段添加
COMMENT
,便于团队协作与后期维护。
3.4 MySQL 常用数据类型详解
在创建表时,合理选择字段的数据类型是数据库设计的关键环节。它直接影响存储空间、查询性能以及数据完整性。以下是 MySQL 中常见的 字符串类型 和 数值类型 的详细说明。
3.4.1 字符串类型(String Types)
类型 | 大小 | 描述 | 使用建议 |
---|---|---|---|
CHAR(n) | 固定长度:0–255 bytes | 定长字符串,长度固定为 n 字节 | 适用于长度固定的字段,如性别、状态码等;性能较好 |
VARCHAR(n) | 可变长度:0–65535 bytes | 变长字符串,实际占用空间随内容变化 | 适用于长度不固定的文本,如用户名、地址;节省空间但略慢于 CHAR |
TINYTEXT | 0–255 bytes | 短文本数据 | 存储短消息或描述 |
TEXT | 0–65,535 bytes | 长文本数据 | 适合文章、评论等内容 |
MEDIUMTEXT | 0–16,777,215 bytes | 中等长度文本数据 | 用于较长文档 |
LONGTEXT | 0–4,294,967,295 bytes | 极大文本数据 | 适用于超大文本,如书籍内容 |
TINYBLOB | 0–255 bytes | 不超过 255 字节的二进制数据 | 小型图片、图标等 |
BLOB | 0–65,535 bytes | 二进制形式的长文本数据 | 图片、音频片段等 |
MEDIUMBLOB | 0–16,777,215 bytes | 中等长度二进制数据 | 较大的文件 |
LONGBLOB | 0–4,294,967,295 bytes | 极大二进制数据 | 大型文件,如视频 |
实际应用示例:
-- 用户名:通常长度不固定,推荐使用 VARCHAR
username VARCHAR(50) COMMENT '用户名'-- 性别:只有 M/F 或 男/女,长度固定,推荐使用 CHAR
gender CHAR(1) COMMENT '性别'-- 个人简介:可能较长,使用 TEXT
bio TEXT COMMENT '用户简介'-- 头像图片(二进制):使用 BLOB
avatar BLOB COMMENT '用户头像'
💡 注意:
CHAR
是定长,无论是否填满都占满指定字节数;VARCHAR
是变长,只占实际使用的空间,因此更适合动态内容;- 对于中文字符,在 UTF8MB4 编码下每个字符占 3~4 字节,需注意长度限制。
3.4.2 数值类型(Numeric Types)
类型 | 大小 | 有符号范围 | 无符号范围 | 描述 | 使用场景 |
---|---|---|---|---|---|
TINYINT | 1 byte | (-128, 127) | (0, 255) | 小整数 | 标记位、状态码(如:0=关闭,1=开启) |
SMALLINT | 2 bytes | (-32768, 32767) | (0, 65535) | 大整数 | 年龄、评分等较小整数 |
MEDIUMINT | 3 bytes | (-8388608, 8388607) | (0, 16777215) | 大整数 | ID 序列(非主键) |
INT / INTEGER | 4 bytes | (-2147483648, 2147483647) | (0, 4294967295) | 大整数 | 主键、数量、金额等通用整数 |
BIGINT | 8 bytes | (-2^63, 2^63-1) | (0, 2^64-1) | 极大整数 | 分布式系统 ID、时间戳(毫秒级) |
FLOAT | 4 bytes | ±3.402823466E+38 | 0 和 ±1.75494351E-38 到 ±3.402823466E+38 | 单精度浮点数 | 科学计算、图形处理 |
DOUBLE | 8 bytes | ±1.7976931348623157E+308 | 0 和 ±2.2250738585072014E-308 到 ±1.7976931348623157E+308 | 双精度浮点数 | 高精度科学计算 |
DECIMAL(M,D) | 可变 | 依赖于 M 和 D | 依赖于 M 和 D | 精确定点数 | 金融金额、财务数据(避免浮点误差) |
实际应用示例:
-- 年龄:一般不超过 100,可用 SMALLINT
age SMALLINT UNSIGNED COMMENT '年龄'-- 薪资:需要高精度,推荐使用 DECIMAL
salary DECIMAL(10,2) COMMENT '月薪(单位:元)'-- 用户ID:常见使用 INT 或 BIGINT
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '用户唯一标识'-- 评分:可选 FLOAT 或 DECIMAL,取决于精度要求
rating DECIMAL(3,2) COMMENT '商品评分(如 4.50)'-- 时间戳(毫秒):使用 BIGINT 存储 Unix 时间戳
created_at BIGINT UNSIGNED COMMENT '创建时间(毫秒)'
📌 注意:
UNSIGNED
表示无符号,只能存储正数,范围翻倍;DECIMAL(M,D)
中:
M
是总位数(精度)D
是小数位数(标度)- 示例:
DECIMAL(10,2)
表示最多 10 位数字,其中 2 位是小数,即最大值为 99999999.99
3.4.3 数据类型选择建议总结
场景 | 推荐类型 | 原因 |
---|---|---|
固定长度文本(如性别、状态) | CHAR(1) | 性能好,存储高效 |
可变长度文本(如姓名、邮箱) | VARCHAR(n) | 节省空间,灵活性强 |
大段文本(如文章) | TEXT 或 MEDIUMTEXT | 支持大量字符 |
图片、文件等二进制数据 | BLOB / LONGBLOB | 存储原始数据 |
整数计数(如用户ID、订单号) | INT 或 BIGINT | 范围广,性能优 |
金额、价格类 | DECIMAL(M,D) | 避免浮点误差,确保精确 |
浮点运算(如科学计算) | FLOAT / DOUBLE | 精度足够且效率高 |
3.4.4 补充说明:字符集与排序规则
在定义表或字段时,还应考虑字符集和排序规则:
CREATE TABLE user (id INT,name VARCHAR(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
);
utf8mb4
:支持完整 Unicode,包括 Emoji 和中文;COLLATE utf8mb4_unicode_ci
:区分大小写?否(ci = case insensitive),按 Unicode 规则比较。
✅ 推荐设置:
DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci
3.4.5 数据类型选择原则
原则 | 说明 |
---|---|
匹配业务需求 | 根据字段实际用途选择最合适的类型 |
节省存储空间 | 优先使用最小满足需求的类型(如用 TINYINT 存储状态) |
保证精度 | 金额类使用 DECIMAL ,避免浮点误差 |
提升性能 | 固定长度字段(CHAR)比变长字段(VARCHAR)快 |
兼容性 | 使用标准字符集(utf8mb4)以支持多语言 |
4.DML语句(数据操作语言)
DML(Data Manipulation Language,数据操作语言)用于对数据库中的数据进行操作,主要包括添加(INSERT)、修改(UPDATE) 和 删除(DELETE) 三种操作。
4.1 添加数据
4.1.1 INSERT INTO
语法
INSERT INTO
语句用于向表中添加新的数据行。根据实际需求,可以有多种写法:
4.1.1.1 指定字段添加数据
INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...);
- 字段名:需要插入数据的具体字段。
- 值:对应字段的值,类型需与字段定义一致。
4.1.1.2 给全部字段添加数据
INSERT INTO 表名 VALUES (值1, 值2, ...);
- 值:按表结构顺序提供每个字段的值。
4.1.1.3 批量添加数据
INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES
(值1_1, 值1_2, ...),
(值2_1, 值2_2, ...),
...;
- 多行值:每行一个
(值1, 值2, ...)
,用逗号分隔。
4.1.2 注意事项
- 字段顺序:插入数据时,指定的字段顺序需与值的顺序一一对应。
- 字符串和日期:应包含在引号中(单引号或双引号)。
- 数据范围:确保插入的数据符合字段的定义范围(如长度、类型等)。
4.2 修改数据
4.2.1 UPDATE
语法
UPDATE
语句用于修改表中已存在的数据。
UPDATE 表名
SET 字段名1 = 新值1, 字段名2 = 新值2, ...
[WHERE 条件];
- SET:指定要修改的字段及新值。
- WHERE:可选,用于限定修改的行。若省略,将修改表中所有行。
4.2.2 注意事项
- 条件筛选:合理使用
WHERE
子句,避免误修改大量数据。 - 事务管理:在生产环境中,建议在事务中执行
UPDATE
,以便必要时回滚。
4.3 删除数据
4.3.1 DELETE
语法
DELETE
语句用于删除表中的数据行。
DELETE FROM 表名 [WHERE 条件];
- WHERE:可选,用于指定删除的行。若省略,将删除表中所有数据。
4.3.2 注意事项
- 条件筛选:务必使用
WHERE
子句,避免误删数据。 - 不可恢复:删除操作是永久性的,需谨慎执行。
- 字段删除:若仅需清空某个字段的值,可使用
UPDATE
语句(如UPDATE 表名 SET 字段名 = NULL
)。
4.4 DML 核心操作速查表
操作类型 | 命令语法 | 功能说明 | 注意事项 |
---|---|---|---|
添加数据 | INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...); | 向表中插入新数据行 | 字段顺序需与值顺序一致;字符串和日期需加引号 |
批量添加 | INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1_1, 值1_2, ...), (值2_1, 值2_2, ...), ...; | 一次性插入多行数据 | 每行值用逗号分隔,提高效率 |
修改数据 | UPDATE 表名 SET 字段名1 = 新值1, 字段名2 = 新值2, ... [WHERE 条件]; | 更新表中指定数据 | 使用 WHERE 筛选具体行,避免误改 |
删除数据 | DELETE FROM 表名 [WHERE 条件]; | 删除表中指定数据行 | 使用 WHERE 筛选具体行,避免误删;不可恢复 |
4.5 实践示例
4.5.1 添加数据示例
-- 给指定字段添加数据
INSERT INTO employee (id, name, age, gender) VALUES (1, '张三', 30, '男');-- 批量添加数据
INSERT INTO employee (id, name, age, gender) VALUES
(2, '李四', 28, '女'),
(3, '王五', 35, '男');
4.5.2 修改数据示例
-- 修改指定ID的员工年龄
UPDATE employee SET age = 31 WHERE id = 1;-- 修改所有女性员工的职位为“助理”
UPDATE employee SET job = '助理' WHERE gender = '女';
4.5.3 删除数据示例
-- 删除指定ID的员工记录
DELETE FROM employee WHERE id = 2;-- 删除所有年龄大于40的员工记录
DELETE FROM employee WHERE age > 40;
4.6 DML 操作最佳实践
- 数据验证:插入或更新数据前,确保数据的正确性和完整性。
- 使用事务:在生产环境中,将 DML 操作放入事务中,确保数据的一致性和可恢复性。
- 合理使用索引:对经常作为
WHERE
条件的字段建立索引,提高查询和更新效率。 - 备份数据:执行批量修改或删除操作前,建议先备份相关数据,防止误操作。
4.7 小结
DML 语句是数据库操作中最常用的部分,掌握 INSERT
、UPDATE
和 DELETE
的正确用法,能够高效地管理数据库中的数据。同时,注意操作的安全性和数据的一致性,避免误操作带来的损失。在实际开发中,结合业务需求灵活运用这些语句,可以极大提升数据处理的效率和准确性。
后续更新。。。