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

⚡ 智能摘要

SQL 命令分为五种子语言,用于管理关系数据库。DDL 定义结构,DML 修改数据,DCL 控制访问权限,TCL 管理事务,DQL 检索数据,每种子语言都有其自身的一套语句和语法。

  • ????️ 直接描述语言(DDL): CREATE、DROP、ALTER 和 TRUNCATE 用于定义和更改表和数据库的架构。
  • ✏️ 数据管理语言(DML): INSERT、UPDATE 和 DELETE 用于修改表中存储的行。
  • ???? 数据链路层 (DCL): GRANT 和 REVOKE 用于授予和移除对数据库对象的访问权限。
  • 🔄 TCL: COMMIT、ROLLBACK 和 SAVEPOINT 控制事务的保存或撤销方式。
  • 🔍 DQL: SELECT 语句检索行,并根据 WHERE 子句进行筛选。
  • 🗄️ 标准语言: 所有主流关系数据库管理系统,从 MySQL 至 Oracle SQL Server 使用 SQL。
  • ⚠️ 主要对比: TRUNCATE 和 DELETE 都会清除行,但 TRUNCATE 是 DDL,不是逐行删除的。

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)
SQL 命令的类型
SQL 类型

下表概述了五个类别,接下来将详细介绍每个类别。

类别 目的 主要命令
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 完全丢弃表。

常见问题

DELETE 是 DML 命令,用于删除选定的行,并且可以回滚。TRUNCATE 是 DDL 命令,用于一次性删除所有行,速度更快,但通常无法回滚。

它们属于数据控制语言(DCL)。GRANT 授予用户对数据库对象的权限,而 REVOKE 撤销这些权限,两者共同控制访问权限和安全性。

是的。文本转 SQL 模型会将自然语言请求转换为针对已知模式的 SELECT 或其他语句。在将查询应用于生产数据之前,务必先检查生成的查询。

是的。通过读取执行计划,AI 可以建议建立索引、重写连接语句或更改 WHERE 子句以降低成本。由于最快的执行计划取决于数据,因此需要对这些建议进行测试。

数据定义语言 (DDL) 定义或更改数据库的结构,例如表和列。数据操作语言 (DML) 通过插入 (INSERT)、更新 (UPDATE) 和删除 (DELETE) 操作更改该结构中存储的数据。结构与内容是二者之间的关键区别。

总结一下这篇文章: