当前位置: 首页 > news >正文

MySQL 关键字总结,并结合 SQL 类型(DDL / DML / DQL / DCL / TCL) 说明每类关键字的作用、使用场景和示例

1. SQL 类型与关键字分类总览

SQL 类型主要作用常用关键字
DDL(数据定义语言)定义/修改数据库结构CREATE, DROP, ALTER, RENAME, TRUNCATE
DML(数据操作语言)对数据进行增删改INSERT, UPDATE, DELETE, REPLACE
DQL(数据查询语言)查询数据SELECT, WHERE, GROUP BY, ORDER BY, HAVING, LIMIT, DISTINCT, JOIN
DCL(数据控制语言)控制用户权限GRANT, REVOKE
TCL(事务控制语言)控制事务提交和回滚COMMIT, ROLLBACK, SAVEPOINT, SET TRANSACTION

2. 各类关键字详解

2.1 DDL(数据定义语言)

用于定义或更改数据库结构(表、列、索引等)。

关键字作用使用场景示例
CREATE创建数据库/表/索引等新建表结构CREATE TABLE users (id INT, name VARCHAR(50));
DROP删除数据库/表/视图等永久删除结构DROP TABLE users;
ALTER修改表结构添加列、修改列类型、删除列ALTER TABLE users ADD email VARCHAR(100);
RENAME修改表/数据库名称更改命名RENAME TABLE users TO members;
TRUNCATE清空表数据(不记录日志)重置数据表TRUNCATE TABLE users;

2.2 DML(数据操作语言)

用于对表中的数据进行增加、修改和删除。

关键字作用使用场景示例
INSERT插入数据添加新记录INSERT INTO users (name, email) VALUES ('Tom', 'tom@a.com');
UPDATE更新数据修改已存在记录UPDATE users SET email='new@a.com' WHERE id=1;
DELETE删除数据删除记录DELETE FROM users WHERE id=1;
REPLACE插入数据(如果主键存在则替换)主键冲突自动替换REPLACE INTO users (id, name) VALUES (1, 'Jerry');

2.3 DQL(数据查询语言)

用于从数据库中查询数据,是使用最频繁的部分。

关键字作用使用场景示例
SELECT查询数据获取表数据SELECT * FROM users;
DISTINCT去重去掉重复记录SELECT DISTINCT name FROM users;
WHERE条件过滤筛选数据SELECT * FROM users WHERE age > 18;
GROUP BY分组统计数据SELECT age, COUNT(*) FROM users GROUP BY age;
HAVING分组后条件过滤筛选聚合结果SELECT age, COUNT(*) FROM users GROUP BY age HAVING COUNT(*) > 2;
ORDER BY排序按指定顺序排序SELECT * FROM users ORDER BY age DESC;
LIMIT限制结果数量分页SELECT * FROM users LIMIT 10 OFFSET 20;
JOIN连接表多表查询SELECT * FROM users JOIN orders ON users.id=orders.user_id;

2.4 DCL(数据控制语言)

用于权限管理。

关键字作用使用场景示例
GRANT授权给用户赋权限GRANT SELECT, INSERT ON mydb.* TO 'user1'@'localhost';
REVOKE撤销权限收回用户权限REVOKE INSERT ON mydb.* FROM 'user1'@'localhost';

2.5 TCL(事务控制语言)

用于事务操作,保证数据一致性。

关键字作用使用场景示例
START TRANSACTION开始事务批量操作前开启事务START TRANSACTION;
COMMIT提交事务确认保存更改COMMIT;
ROLLBACK回滚事务撤销操作ROLLBACK;
SAVEPOINT设置保存点局部回滚SAVEPOINT sp1;
SET TRANSACTION设置事务隔离级别改变事务行为SET TRANSACTION ISOLATION LEVEL READ COMMITTED;

3. 注意事项与最佳实践

  1. 关键字区分场景

    • SELECT 永远不会直接修改数据(查询型)

    • INSERT / UPDATE / DELETE 会改数据(要注意事务)

    • CREATE / DROP / ALTER 会改结构(不可逆)

  2. 命名避免关键字冲突
    如果列名叫 orderdesc 这种关键字,需用反引号包裹:

    SELECT `order` FROM orders;
    
  3. 大小写规范

    • 关键字 建议全大写(便于和字段区分)

    • 表名、字段名建议小写(跨平台兼容)

  4. 事务管理

    • 查询用 DQL,不需要事务

    • DML 建议放事务中,避免数据不一致

  5. 性能优化

    • WHERE 前加索引列

    • 避免 SELECT *,改为指定列名

4、MySQL 中的关键字 & 保留字(Reserved Keywords)

MySQL 的关键字在语法中具有特殊意义,其中一些是保留字(Reserved),使用它们作为表名或列名时需加反引号(``)引用。下面是部分版本示例:

  • MySQL 8.0 中,UNSIGNEDZEROFILL 等都被标记为保留(Reserved)关键字 MySQL开发者专区Oracle Docs。

  • UNSIGNED 在多个版本中都是保留字,包括 5.7、9.0 版本 MySQL开发者专区+1。

MySQL 官方还提供了 INFORMATION_SCHEMA.KEYWORDS 系统表,用于查看当前版本所有关键字及其保留状态 MySQL开发者专区。


5、UNSIGNED / SIGNED / ZEROFILL 等关键字详解与使用场景

UNSIGNED

  • 作用:用于数值类型(如 INT / BIGINT)时,移除负值范围,只允许 ≥0 值,并显著提升最大可存储值范围。例如 INT 原范围 -2.1B ~ 2.1B,变为 0 ~ 4.2B Stack OverflowPlanetScale。

  • 应用场景:适用于主键 ID、计数值等绝不会出现负数的字段。如使用自动自增的 INT,若不需要负数,推荐加 UNSIGNED,以扩展正值范围 Devart Blog。

  • 注意:从 MySQL 8.4 起,对于浮点 (FLOAT / DOUBLE / DECIMAL),UNSIGNED 已被标记为废弃,建议改用 CHECK 约束 MySQL开发者专区。

ZEROFILL

  • 作用:在数值展示时左侧自动补零。例如 INT(5) ZEROFILL,插入 42,会显示为 00042。一般与 UNSIGNED 联用。

  • 应用场景:适用于固定位数展示要求,如订单号、序列号等视觉格式统一场景。

  • 注意ZEROFILL 也列为保留关键字,使用时需注意语法兼容与版本支持情况。

SIGNED

  • 默认数值类型若未标明,就是有符号(SIGNED)。显式写 SIGNED 无实际作用,但可作为提醒或与 UNSIGNED 对比使用。


6、根据 SQL 类型看关键字使用场景区别

下面是关键字在不同 SQL 类型中的主要用途对照:

SQL 类型关键字示例用途或注意事项
DDLUNSIGNED, ZEROFILL, CREATE, ALTER, DROP定义字段属性(如UNSIGNED 修饰数据类型),以及表结构操作。需注意保留关键字。
DML无专用关键字修改数据时无需用这些类型修饰关键字。
DQL无专用关键字查询时通常不使用这些字段属性关键字。
DCL / TCL无关关键字权限和事务操作与这些关键字无关联。

简言之,像 UNSIGNED / ZEROFILL 这类关键字主要在 DDL 定义阶段 使用,用来描述列数据类型行为,与数据插入/查询无关。

http://www.dtcms.com/a/332618.html

相关文章:

  • 华为实验综合小练习
  • Android RxJava变换操作符详解
  • MuMu模拟器Pro Mac 安卓手机平板模拟器(Mac中文)
  • 9.对象介绍
  • iOS App TF 上架多工具协作实战,一次高效的应用内测分发流程
  • 【数据结构初阶】--排序(三):冒泡排序、快速排序
  • Tomcat部署JDK8项目启动失败:系统化诊断指南
  • 【科研绘图系列】R语言绘制多种饼图
  • OpenCV 阈值处理
  • 基于定制开发开源AI智能名片与S2B2C商城小程序的H5页面小游戏营销模式创新研究
  • 综合案例:Python 函数知识整合 — 学生成绩管理系统
  • fastdds.ignore_local_endpoints 属性
  • 自动化框架pytest(1)
  • Vue3 Element-plus 封装Select下拉复选框选择器
  • Vue3 + Element Plus 实现可搜索、可折叠、可拖拽的部门树组件
  • 基于element-plus的基础表单样式
  • [微服务]ELK Stack安装与配置全指南
  • Pytest项目_day17(随机测试数据)
  • 大模型微调分布式训练-大模型压缩训练(知识蒸馏)-大模型推理部署(分布式推理与量化部署)-大模型评估测试(OpenCompass)
  • 专题:2025跨境电商市场布局、供应链与产业带赋能报告 |附130+份报告PDF、原数据表汇总下载
  • Sparse-ICP—(3) 点到面稀疏迭代最近点算法(matlab版)
  • PDF Replacer:高效便捷的PDF文档内容替换专家
  • 国内多光谱相机做得好的厂家有哪些?-多光谱相机品牌厂家
  • 8月4日实训考察:重庆五一职院走进成都国际影像产业园
  • ffmpeg-调整视频分辨率
  • 网站与政务新媒体自查情况的报告工具功能
  • Web攻防-大模型应用LLM搭建接入第三方内容喂养AI插件安全WiKI库技术赋能
  • 编程练习---邮费计算
  • 计算机网络 THU 考研专栏简介
  • SDN控制器是什么?它在网络里的作用相当于什么?