SQL Server 创建、更改、删​​除表 [T-SQL 示例]

⚡ 智能摘要

SQL Server 表以行和列的形式存储数据。Transact-SQL 使用 CREATE TABLE 语句创建表,使用 ALTER TABLE 语句添加或更改列,以及使用 DROP TABLE 语句删除表、其数据及其结构。

  • 🧱 什么是表格: 表格以行和列的形式存储数据,是数据库中存储数据的基本对象。
  • 🛠️ 创建表: CREATE TABLE 语句为每一列定义名称、数据类型以及 NULL 或 NOT NULL 设置。
  • 📋 从现有资源创建: SELECT … INTO 将现有表中选定的列和行复制到一个全新的表中。
  • ➕ 改变表: ALTER TABLE … ADD 向表中添加新列,而无需重新创建该表。
  • 🗑️ 删除表: DROP TABLE 会删除整个表,包括其数据和结构。
  • 🖱️ 桌子设计师: SQL Server Management Studio 还可以通过表设计器以可视化的方式创建和修改表。

SQL Server CREATE、ALTER 和 DROP 表(含 T-SQL 示例)

什么是表?

表格是对象 SQL服务器 它以行列格式存储数据。下图分别显示了行和列。

表格示意图,数据以行和列的形式存储

如何使用 T-SQL 在 SQL Server 中创建表

存储数据的第一步是在数据库中创建表格。 数据库 数据将存储在此处。创建表后,您可以继续向其中插入行。

您可以通过以下方式创建表格:

  • T-SQL:通过定义所有列及其数据类型来创建一个新表。
  • T-SQL:使用现有表创建新表。
  • 使用表格设计器。

让我们详细研究一下。

T-SQL:通过定义所有列及其数据类型来创建新表

以下是创建 SQL Server 表的语法。

语法:

CREATE TABLE tableName
( 
  column_1 datatype [ NULL | NOT NULL ],
  column_2 datatype [ NULL | NOT NULL ],
  ...
);

在这里,

  • 参数tableName表示您要创建的表的名称。
  • 参数column_1、column_2…表示要添加到表中的列。
  • 列的值必须指定为 NULL 或 NOT NULL。如果未指定,SQL Server 默认使用 NULL。

让我们创建一个包含两列的基本表格。

查询:

CREATE TABLE COURSE
(
Course_ID Int,
Course_Name Varchar(10)
)

前提课程: 选择需要创建表的数据库。

步骤1) 点击“执行”按钮运行查询。运行查询之前,该表不存在,如下所示。

在 CREATE 语句运行之前,对象资源管理器中未显示任何 Course 表。

运行查询后,单击“刷新”按钮;现在已生成名为“Course”的新表,如下所示。

执行并刷新后,对象资源管理器中会列出课程表。

步骤2) 插入一些数据。以下屏幕截图显示了新建的 ​​Course 表,该表已准备好接收数据行。

在对象资源管理器中选中新建的课程表后再插入数据

数据插入前的课程表结构及其两列示意图

目前该表已存在,但其中还没有任何数据。

Transact-SQL 提供了 INSERT 语句,用于向表中插入数据。使用此语句,您可以向表中插入一行或多行数据。

语法:

INSERT INTO tableName
(column_1, column_2, ... )
VALUES
(expression_1, expression_2, ... ),
(expression_1, expression_2, ... ),
...;

上面的语法显示了使用 VALUES 关键字向表中插入数据时命令的基本形式。

让我们使用 INSERT 命令插入四行数据。

Insert into COURSE values (1,'SQL');
Insert into COURSE values (2,'Python');
Insert into COURSE values (3,'SQL');
Insert into COURSE values (4,'C');

下图显示插入四行数据已成功。

消息窗格确认已将四行数据插入到课程表中

步骤3) 使用 SELECT 语句查看数据。要在 SQL Server 中查看数据,请使用以下语法:

SELECT expression
FROM tableName
[WHERE condition];

查询示例:

SELECT * FROM COURSE;

表格已创建,目前包含四条记录。请注意,您可以在任何列中创建具有重复值的记录,因为没有限制。 约束.

结果网格显示了 SELECT 语句返回的四个课程行。

T-SQL:使用现有表创建新表

假设您想要创建另一个类似于上面创建的 COURSE 表的表,但您只需要 Course_Name 列而不需要 Course_ID 列。

语法:

SELECT (Column 1, …) INTO <New Table name> FROM <Old Table name>;

查询示例:

SELECT COURSE_NAME INTO COURSE_NAMES FROM COURSE;

步骤1) 点击“执行”按钮运行查询。系统将创建一个名为 COURSE_NAMES 的新表,该表包含一列和四条从旧表复制的记录,如下所示。

使用 SELECT INTO 从现有表创建新的 COURSE_NAMES 表

查询示例:

SELECT * FROM COURSE_NAMES;

下面的结果列出了新 COURSE_NAMES 表中的四个 Course_Name 记录。

结果网格显示了 COURSE_NAMES 表中的 Course_Name 值

使用表设计器

您还可以从中创建表格 SQL Server Management Studio中 使用表格设计器的IDE。

步骤1) 右键单击“表格”>“新建”>“表格”,如下图所示。

右键单击“表”,然后选择“新建”,再选择“对象资源管理器中的表”。

步骤2) 输入列名和 数据类型并选择每一列是否允许空值。

用于定义新表格的表格设计器工具栏

表格设计器网格,包含列名、数据类型和允许空值选项

步骤3) 按 CTRL+S 保存表格,并将名称输入为 Course_Title。

选择“名称”对话框,将新表保存为“Course_Title”。

点击刷新后,会出现一个名为 Course_Title 的新表格,其中包含一个名为 Course_Name 的列,如下所示。

在对象资源管理器中,Course_Title 表只有一个 Course_Name 列。

在 SQL Server 中修改表

在 SQL Server 中,有两种方法可以修改表:

  • T-SQL:通过添加新列来修改表。
  • 使用表格设计器。

T-SQL:通过插入列来更改表

以下是 SQL 中 ALTER 命令的语法:

语法:

 Alter TABLE <Table name> ADD Column1 datatype, Column2 datatype;

查询:

ALTER TABLE dbo.Course_Title ADD Course_Duration VARCHAR(20);

步骤1) 点击“执行”按钮运行查询。现在,Course_Title 表中新增了一个名为 Course_Duration 的列,如下所示。

使用 ALTER TABLE ADD 语句添加 Course_Duration 列

Course_Title 列,包括新增的 Course_Duration 列

使用表设计器

您还可以使用表格设计器从用户界面修改表格。

步骤1) 右键单击现有表格 > 设计,如下图所示。

右键单击 Course_Title 表,然后选择“设计”。

步骤2) 添加列名 Course_Start_Date 并选择其数据类型。

在表格设计器中添加 Course_Start_Date 列及其数据类型

步骤3) 按 CTRL+S 保存新添加的列。如下所示,Course_Title 表中将创建一个名为 Course_Start_Date 的新列。

Course_Title 表显示了已保存的 Course_Start_Date 列

在 SQL Server 中删除表

当不再需要某个表时,就将其删除。

在 SQL Server 中删除表有两种方法:

  • 使用 SQL Server Management Studio。
  • T-SQL:使用 DROP TABLE 删除表。

使用 SQL Server Management Studio

步骤1) 右键单击现有表格 > 删除,选择名为 Course_Title 的表格,如下图所示。

右键单击 Course_Title 表,然后选择“删除”。

步骤2) 在“删除对象”窗口中,单击“确定”。

点击“确定”按钮,弹出删除对象确认窗口。

如下所示,Course_Title 表已从表列表中删除。

删除 Course_Title 表后的对象资源管理器表列表

T-SQL:删除表

以下是删除表的语法。

语法:

DROP TABLE <tableName>;

参数tableName是要删除的表的名称。

查询:

DROP TABLE COURSE_NAMES;

步骤1) 点击“执行”按钮运行查询。如下所示,COURSE_NAMES 表将从表列表中删除。

DROP TABLE 语句删除 COURSE_NAMES 表

删除 COURSE_NAMES 表后,对象资源管理器表列表如下:

或者,源代码显示了一个 DELETE TABLE 命令,该命令旨在仅删除行(数据),同时保持表结构完整,以便以后可以重新使用该表。

语法:

DELETE TABLE <Table name>;

注意: 在标准 T-SQL 中,使用以下命令删除行: DELETE FROM <table>餐桌很快就被清空了。 TRUNCATE TABLE <table>如上所示,使用 DROP TABLE 删除整个表。

有趣的事实!

  • 可以使用 VARBINARY(MAX)、VARCHAR(MAX) 或 XML 类型等大型对象数据类型将 XML 或图像等大型文件存储在列中(SQL Server 不使用 XML 类型)。 Oracle-样式 BLOB 和 CLOB 名称)。
  • DELETE 仅删除行,并且可以在事务中回滚,而 DROP 删除整个表结构;在 SQL Server 中,即使是 DROP,当它在显式事务中运行时也可以回滚。

常见问题

DELETE 操作会删除选定的行,并记录完整的日志。TRUNCATE 操作会快速删除所有行并重置标识值。DROP 操作会删除整个表、其数据及其结构。在 SQL Server 中,这三种操作都可以在显式事务中回滚。

自 SQL Server 2016 起,可以使用 `DROP TABLE IF EXISTS table_name` 命令。该命令会在表存在时将其删除,在表不存在时则不执行任何操作,从而避免错误。在旧版本中,删除表之前需要检查 `OBJECT_ID`。ping.

SQL Server 没有 RENAME TABLE 语句。请改用系统存储过程 sp_rename,例如 EXEC sp_rename 'old_name', 'new_name'。之后再更新依赖的视图、过程和代码,因为 sp_rename 不会自动更改这些引用。

是的。`ALTER TABLE table ALTER COLUMN column new_type` 用于更改列的数据类型,而 `ALTER TABLE table DROP COLUMN column` 用于删除列。更改仅在现有数据兼容的情况下才会成功,因此请先测试转换并备份数据。

在 CREATE TABLE 语句中定义约束,例如 Course_ID INT PRIMARY KEY,或者稍后使用 ALTER TABLE ADD CONSTRAINT 添加约束。 主键 强调独特性,而 外键 连接不同表中的行。

临时表以 # 为前缀,在 tempdb 中创建,并在会话结束时自动删除。常规表则永久存在,直到您手动删除它。临时表适用于存储批处理或存储过程中的短期中间结果。

是的。 GitHub 副驾驶 可以根据自然语言提示生成 CREATE、ALTER 和 DROP TABLE 脚本,并建议列、数据类型和约束。在生产环境中运行之前,务必检查生成的模式、键和空值限制。

人工智能和机器学习工具会根据示例数据和查询模式推荐表结构、数据类型和索引,标记冗余或过大的列,并警告存在风险的 DROP 或 ALTER 操作。开发人员会在应用每项建议之前进行确认。

总结一下这篇文章: