SQL 命令:DQL、DDL、DML、DCL 和 TCL 及示例

什么是 SQL?
SQL 是一种用于检索和管理关系数据库中的数据的数据库语言。
SQL 是数据库管理的标准语言。所有 RDBMS 系统,如 MySQL、MS Access、 OracleSybase、Postgres 和 SQL Server 都使用 SQL 作为其标准数据库语言。SQL 编程语言使用各种命令来执行不同的操作。我们将通过示例学习 SQL 中的 DCL、TCL、DQL、DDL 和 DML 命令。
为什么使用 SQL?
以下是使用 SQL 的重要原因:
- 它帮助用户访问数据。 RDBMS 系统.
- 它可以帮助你描述数据。
- 它允许您定义数据库中的数据并操作特定的数据。
- 借助 SQL 命令,您可以创建和删除数据库和表。
- SQL 允许你在数据库中使用函数,并创建视图和存储过程。
- 您可以设置表、过程和视图的权限。
SQL简史
以下是一些重要的地标 SQL的历史:
- 1970 年——Edgar F.“Ted”Codd 博士描述了数据库的关系模型。
- 1974年——结构化查询语言(Structured Query Language)问世,最初名为SEQUEL。 IBM.
- 1979 - Oracle 发布了首个基于 SQL 的商用数据库 IBM的 System R 研究原型。
- 1986 年——ANSI 发布了第一个 SQL 标准,SQL-86。
- 1989 年——SQL-89 作为该标准的第一个修订版问世。
- 1992 年——SQL-92 (SQL2) 成为主要基线,至今仍被大多数数据库引用。
- 1999 年——SQL:1999 (SQL3) 发布,具有触发器、递归查询和面向对象等功能。
- 2003 年 – SQL:2003 增加了窗口函数、序列生成器和 XML 相关功能。
- 2006 年 – SQL:2006 增加了对 XML 查询语言 (XQuery) 的支持。
- 2008 年 – SQL:2008 引入了 TRUNCATE 语句和 INSTEAD OF 触发器。
- 2011 年 – SQL:2011 改进了对时态数据库的支持。
- 2016 年 – SQL:2016 增加了 JSON 支持和行模式匹配 (MATCH_RECOGNIZE)。
- 2019 年 – SQL/MDA(第 15 部分)标准增加了多维数组支持。
- 2023 年 – SQL:2023 增加了原生 JSON 数据类型和属性图查询 (SQL/PGQ)。
- 2024 年——GQL,自 SQL 以来第一个新的 ISO 数据库语言,作为图查询配套标准发布。
- 2026 – SQL:2023 仍然是当前标准,ISO/IEC 正在制定下一个修订版。
SQL 命令类型
以下是五种常用的 SQL 命令:
- 数据定义语言(DDL)
- 数据操纵语言(DML)
- 数据控制语言(DCL)
- 事务控制语言 (TCL)
- 数据查询语言 (DQL)

下表概述了五个类别,接下来将详细介绍每个类别。
| 类别 | 目的 | 主要命令 |
|---|---|---|
| DDL | 定义结构 | 创建、删除、修改、截断 |
| DML | 修改数据 | 插入、更新、删除 |
| DCL | 控制访问 | 授予,撤销 |
| TCL集团 | 管理交易 | 提交、回滚、保存点 |
| 数据质量 | 检索数据 | 选择 |
什么是 DDL?
数据定义语言 (DDL) 帮助您定义数据库结构或模式。让我们来学习 DDL 命令及其语法。SQL 中的主要 DDL 命令包括 CREATE、DROP、ALTER 和 TRUNCATE。
CREATE
CREATE 语句用于定义数据库结构或模式:
语法:
CREATE TABLE TABLE_NAME (COLUMN_NAME DATATYPES[,....]);
例如:
Create database university; Create table students; Create view for_students;
下降
DROP 命令从关系数据库管理系统中删除表和数据库。
语法:
DROP TABLE ;
例如:
Drop object_type object_name; Drop database university; Drop table student;
改变
ALTER 命令允许您更改数据库的结构。
语法: 在表格中添加新列:
ALTER TABLE table_name ADD column_name COLUMN-definition;
要修改表中现有的列:
ALTER TABLE MODIFY(COLUMN DEFINITION....);
例如:
Alter table guru99 add subject varchar;
截短
此命令用于从表中删除所有行并释放包含表的空间。
语法:
TRUNCATE TABLE table_name;
计费示例:
TRUNCATE table students;
什么是数据操作语言?
数据操作语言 (DML) 允许您通过插入、修改和删除数据来修改数据库实例。它负责执行数据库中所有类型的数据修改。SQL 中重要的 DML 命令包括:
- 插入
- 更新
- 删除
插入
此语句用于向表格的行中插入数据。
语法:
INSERT INTO TABLE_NAME (col1, col2, col3,.... col N) VALUES (value1, value2, value3, .... valueN); Or INSERT INTO TABLE_NAME VALUES (value1, value2, value3, .... valueN);
例如:
INSERT INTO students (RollNo, FIrstName, LastName) VALUES ('60', 'Tom', Erichsen');
更新
此命令用于更新或修改表中某一列的值。
语法:
UPDATE table_name SET [column_name1= value1,...column_nameN = valueN] [WHERE CONDITION]
例如:
UPDATE students SET FirstName = 'Jhon', LastName= 'Wick' WHERE StudID = 3;
删除
此命令用于从表中删除一行或多行。
语法:
DELETE FROM table_name [WHERE condition];
例如:
DELETE FROM students WHERE FirstName = 'Jhon';
什么是DCL?
数据控制语言 (DCL) 包含 GRANT 和 REVOKE 等命令,用于授予权限。其他命令则用于控制数据库系统的参数。
格兰特
此命令用于授予用户对数据库的访问权限。
语法:
GRANT SELECT, UPDATE ON MY_TABLE TO SOME_USER, ANOTHER_USER;
例如:
GRANT SELECT ON Users TO'Tom'@'localhost;
Rev好
此命令可用于收回用户的权限。
语法:
REVOKE privilege_nameON object_nameFROM {user_name |PUBLIC |role_name}
例如:
REVOKE SELECT, UPDATE ON student FROM BCA, MCA;
TCL是什么?
事务控制语言(TCL)命令用于处理数据库内部的事务。它们直接操作下文所述的状态。 交易管理.
承诺
此命令用于将所有交易保存到数据库。
语法:
Commit;
例如:
DELETE FROM Students WHERE RollNo =25; COMMIT;
回滚
Rollback 命令允许您撤销尚未保存到数据库的事务。
语法:
ROLLBACK;
计费示例:
DELETE FROM Students WHERE RollNo =25;
保存点
此命令可帮助您在事务中设置保存点。
语法:
SAVEPOINT SAVEPOINT_NAME;
计费示例:
SAVEPOINT RollNo;
什么是DQL?
数据查询语言(DQL)用于从数据库中获取数据。它只使用一个命令:SELECT。
选择
此命令可帮助您根据 WHERE 子句描述的条件选择属性。
语法:
SELECT expressions FROM TABLES WHERE conditions;
例如:
SELECT FirstName FROM Student WHERE RollNo > 15;
DELETE vs TRUNCATE vs DROP
这三个命令都会删除数据,但它们删除的数据类型以及删除操作是否可以回滚有所不同。混淆它们是初学者常犯的错误。
| 方面 | 删除 | 截短 | 下降 |
|---|---|---|---|
| 类别 | DML | DDL | DDL |
| 删除 | 选定行 | 所有行 | 整张桌子 |
| WHERE 子句 | 允许 | 不允许 | 不适用 |
| 回滚 | 可能存在 | 通常不 | 不可能 |
| 结构保持 | 是 | 是 | 没有 |
简而言之,使用 DELETE 删除特定行,使用 TRUNCATE 快速清空表,使用 DROP 完全丢弃表。
