SQL 命令的类型2025年3月17日 | 阅读 12 分钟 SQL 是一种结构化查询语言,用于处理结构化数据。结构化数据通常以关系或表的形式存储。 当我们以表或关系的形式存储数据时,我们需要 SQL 命令。此外,还需要这些命令来检索存储在表中的数据。 ![]() 让我们通过实际示例深入探讨 SQL 命令的分类。我们将使用 MySQL 数据库来编写所有查询。 (A) DDL
让我们更详细地了解 DDL 类别中的每个命令。 1. CREATE在 SQL 中,当我们希望 **在数据库中创建新数据库或新表时**,我们使用 **CREATE** 命令。 创建新数据库的语法 创建表的语法 示例 1 编写一个查询来创建一个名为 school 的数据库。 查询 ![]() 在这里,我们执行了一个 CREATE DATABASE 查询,后跟数据库名称 'SCHOOL'。 我们将执行以下命令来验证是否已创建 'SCHOOL' 数据库。 ![]() 上述命令的结果验证了 'SCHOOL' 数据库已成功创建。 示例 2 编写一个查询在 'SCHOOL' 数据库中创建一个名为 t_school 的表。 要创建 't_school' 表,我们必须先选择 'SCHOOL' 数据库。 要在 MySQL 中选择数据库,我们将执行以下查询。 ![]() 我们执行了 'USE 命令',后跟数据库名称 'SCHOOL'。 现在,在此查询执行后,我们将执行以下查询。 ![]() 在这里,我们执行了一个 CREATE TABLE 查询,后跟表名 't_school'。 我们将执行以下命令来验证是否已创建 't_school' 表。 ![]() 上述命令结果验证了 't_school' 表已在 'SCHOOL' 数据库中成功创建。 2. ALTER在 SQL 中,当我们希望修改表结构时,我们将使用 ALTER 命令。使用 **alter 命令,我们可以对表进行结构性更改,例如添加新列、删除现有列、更改现有列的数据类型以及重命名现有列**。 在编写使用 ALTER 命令的查询之前,让我们先看一下语法。 ALTER 命令添加新列的语法 ALTER 命令删除现有列的语法 ALTER 命令重命名现有表列的语法 ALTER 命令更改现有列数据类型的语法 示例 1 编写一个查询,在 t_school 表中添加一个数据类型为 VARCHAR 的新列 Board_of_Education。 在执行向 't_school' 表添加新列的查询之前,我们将执行以下查询以查看表结构。 ![]() ![]() 在这里,我们在表 t_school 上执行了 'ALTER 命令',后跟 ADD 关键字、列名 'Board_of_Education'、数据类型 VARCHAR 和大小 20。这仅意味着一个名为 'Board_of_Education' 的新列,数据类型为 VARCHAR,大小为 20,将被添加到现有的 't_school' 表中。 现在,我们将再次对 t_school 表应用 DESC 命令。 ![]() 这验证了新列 'Board_of_Education' 已成功添加到 t_school 表中。 示例 2 编写一个查询以从 t_school 表中删除列 Board_of_Education。 在执行从 't_school' 表中删除列的查询之前,我们将执行以下查询以查看表结构。 ![]() ![]() 我们已在表 t_school 上执行了 'ALTER 命令',后跟 DROP COLUMN 关键字和列名 'Board_of_Education'。这仅意味着名为 'Board_of_Education' 的现有列将从 't_school' 表中删除。 现在,我们将再次对 t_school 表应用 DESC 命令。 ![]() 这验证了 'Board_of_Education' 列已成功从 t_school 表中删除。 示例 3 使用 alter 命令将 t_school 表中的列 Number_of_Students 重命名为 'Count_Students'。 在执行从 't_school' 表重命名列的查询之前,我们将执行以下查询以查看表结构。 ![]() 我们在表 t_school 上执行了 'ALTER 命令',后跟 RENAME COLUMN 关键字。这里,Number_of_Students 是旧列名,TO 关键字后面的列名 Count_Students 是新列名。这仅意味着 't_school' 表中现有的 'Number_of_Students' 列将被 'Count_Students' 替换。 现在,我们将再次对 t_school 表应用 DESC 命令。 这验证了 'Number_of_Students' 列已在 t_school 表中成功重命名为 'Count_Students'。 示例 4 编写一个查询以更改 t_school 表中 'Number_of_Students' 的数据类型,并将新数据类型设置为 'VARCHAR',大小为 '20'。 在执行修改 't_school' 表中列数据类型和大小的查询之前,我们将执行以下查询以查看表结构。 ![]() ![]() 我们已在表 t_school 上执行了 'ALTER 命令',后跟 MODIFY 关键字。这里,ID 是列名,VARCHAR 是 ID 列的新数据类型,后跟大小 20。 现在,我们将再次对 t_school 表应用 DESC 命令。 ![]() 3. DROP**DROP 命令用于从数据库中删除或删除表记录和表的结构。** 语法 示例 编写一个查询以从 SCHOOL 数据库中删除 t_school 表。 查询 ![]() 在这里,我们对表 't_school' 执行了 DROP TABLE 命令。 我们将执行以下命令来验证 't_school' 表是否存在。 ![]() 上述命令结果验证了 't_school' 表已成功从 'SCHOOL' 数据库中删除。 4. TRUNCATETRUNCATE 命令用于删除表记录,**但表的结构在数据库中保持不变。** 语法 示例 编写一个查询以从 't_school' 表中删除所有记录。 在执行从 't_school' 表中删除记录的查询之前,我们将执行 SELECT 查询以查看表中存在的记录。
![]() 在这里,我们在表 t_school 上执行了 'TRUNCATE 命令'。这仅意味着 't_school' 表中的所有记录都将被删除,而表结构在数据库中保持不变。 现在,我们将再次对 t_school 表应用 SELECT 查询。 ![]() 上面的结果显示 't_school' 表中的所有记录都已成功删除。 5. RENAMERename 命令用于为现有表赋予新名称。 重命名表的语法 示例 编写一个查询将 t_school 表重命名为 tbl_school。 在执行将 't_school' 表重命名为 tbl_school 的查询之前,我们将执行 SHOW TABLES 命令。 ![]() ![]() 我们已在表 t_school 上执行了 'RENAME 命令',后跟 'TO' 关键字和新的表名。这仅意味着 't_school' 表现在将被重命名为 tbl_school。 现在,我们将再次执行 SHOW TABLES 命令。 ![]() 上面的结果显示列表中不存在 t_school 表。相反,列表中存在 tbl_school,这意味着该表已成功重命名为 tbl_school。 (B) DML
让我们更详细地了解 DML 类别中的每个命令。 1. INSERTINSERT 命令 **用于在表中插入记录**。我们可以一次为单个表插入单条或多条记录。 语法 示例 编写一个查询向 t_school 表插入 10 条记录。 查询 ![]() 由于我们想在表中插入十条记录,因此我们没有写十次 INSERT 命令,而是写了一个 INSERT 命令来一次插入多条记录。 2. SELECT**SELECT 命令用于从表中检索记录**。根据我们的要求,我们可以检索表中的所有记录或一些特定记录。每当我们想从表中检索一些特定记录时,我们就必须在 SELECT 查询中指定 WHERE 子句。WHERE 子句将包含一个条件,任何匹配该条件的记录都将作为输出的一部分。 检索所有记录的语法 检索特定记录的语法 示例 1 编写一个查询以检索 t_school 表中所有记录的所有列值。 查询 在这里,我们在 t_school 表上执行了一个带有星号 (*) 的 SELECT 查询。这将检索 t_school 表中所有记录的所有列值。 输出
所有记录已从 t_school 表中成功检索。 示例 2 编写一个查询以检索具有超过 11 个教室的学校的所有列值。 查询 我们在 t_school 表上执行了一个带有星号 (*) 的 SELECT 查询,后跟 WHERE 子句条件。由于 WHERE 子句条件,只有 'Number_of_classrooms' 列中值大于 11 的记录才会被检索。 输出
t_school 表中有九所学校,拥有超过 11 个教室。 3. UPDATEUPDATE 命令作用于表中的值。每当我们希望更新表中任何记录的值时,我们都会在 SQL 中使用 UPDATE 命令。 语法 示例 编写一个查询以更新 ID 为 9 的记录,并将 Number_of_Teachers 和 Number_of_Classrooms 的更新值分别设置为 125 和 9。 查询 ![]() 我们将执行 SELECT 查询以验证 ID 为 9 的记录的教师和教室数量是否已更新。
4. DELETEDELETE 命令用于从表中删除记录。 语法 示例 编写一个查询以从 t_school 表中删除 ID 为 6 的记录。 查询 ![]() 我们将执行 SELECT 查询以验证 ID 为 6 的记录是否已被删除。
结果显示 ID 为 6 的记录已成功从 t_school 表中删除。 (C) DCL
1. GRANT 可以使用 GRANT 命令将访问权限分配给用户,以用于数据库和表。 2. REVOKE 可以使用 REVOKE 命令撤销已分配给用户的所有访问权限。 (D) TCL
1. COMMIT 要保存特定事务中执行的所有操作,我们需要在事务完成后立即执行 commit 命令。 2. ROLLBACK 使用 SQL 中的 rollback 命令,您可以回滚到事务的最后一个保存状态。 3. SAVEPOINT 使用 SAVEPOINT 命令,您可以为事务的特定部分指定名称。 示例 ![]() ![]() ![]() ![]() ![]() 到目前为止,我们已经开始了一个事务,向其中插入了记录,提交了事务,并且还创建了一个在插入后创建的 SAVEPOINT ins。 ![]() ![]() 我们删除了一条记录并创建了一个名为 del 的 savepoint,但后来我们认为我们需要刚刚删除的记录。所以,我们将回滚到 SAVEPOINT ins。 ![]()
回滚到 ins 后,我们可以看到所有记录都被检索回来了(包括删除的记录)。 下一主题SQL 中的 TCL 命令 |
我们请求您订阅我们的新闻通讯以获取最新更新。