如何使用查询在 SQL Server 中创建表
使用查询在 SQL Server 中创建表:
- 在 SQL Server Management Studio 中,单击工具栏上的按钮New Query
- 键入或粘贴脚本(下面的示例)
CREATE TABLE - 单击工具栏上的按钮! Execute
下面是一个示例:
单击 SSMS 工具栏上的“新建查询”按钮将打开一个新查询。单击“执行”运行查询。
创建表脚本
下面是上面示例中的 SQL 脚本:
CREATE TABLE Status( StatusId int IDENTITY(1,1) NOT NULL, StatusName varchar(50) NOT NULL, DateCreated datetime NOT NULL CONSTRAINT DF_Status_DateCreated DEFAULT (getdate()), CONSTRAINT PK_Status PRIMARY KEY CLUSTERED (StatusId) )
该脚本执行以下操作:
- 创建表
- 添加 3 列
- 设置其数据类型
- 指定 StatusId 是一个标识列,并且第一条记录的值将为 1,并且每个后续记录的值将递增 1
- 指定“状态名称”列中的任何值的最大长度为 50
- 指定不允许 NULL 值
- 为“创建日期”列设置当前日期的默认值
- 将状态 ID 字段设置为主键
这是一个仅创建一个小表的基本脚本。您可以同样轻松地运行一个脚本来创建整个数据库,其中所有对象、数据和权限都一次性完成。
改进脚本
创建数据库对象时,最好检查对象是否已存在。这可以防止在脚本尝试创建数据库中已有的表时发生错误。
仅当表尚不存在时才运行
可以将以下行添加到上述脚本中,以便仅当数据库中尚不存在该表(或具有相同名称的表)时,CREATE TABLE 脚本才会运行:
IF NOT EXISTS (SELECT * FROM sysobjects WHERE name=‘Status’ AND xtype=‘U’)
所以整个脚本会变成:
IF NOT EXISTS (SELECT * FROM sysobjects WHERE name=‘Status’ AND xtype=‘U’) CREATE TABLE Status( StatusId int IDENTITY(1,1) NOT NULL, StatusName varchar(50) NOT NULL, DateCreated datetime NOT NULL CONSTRAINT DF_Status_DateCreated DEFAULT (getdate()), CONSTRAINT PK_Status PRIMARY KEY CLUSTERED (StatusId) )
替换表(如果已存在)
如果该表已存在,也可以重写该脚本以替换该表。这可以通过首先删除现有表,然后创建新表来完成。
SQL Server 2016
SQL Server 2016 引入了 DROP IF EXISTS 子句。因此,在SQL Server 2016中,我们可以将以下内容添加到脚本的顶部:
DROP TABLE IF EXISTS [TaskTracker].[Status]
(任务跟踪器是数据库的名称。状态是表的名称)。
DROP TABLE IF EXISTS [TaskTracker].[Status] CREATE TABLE Status( StatusId int IDENTITY(1,1) NOT NULL, StatusName varchar(50) NOT NULL, DateCreated datetime NOT NULL CONSTRAINT DF_Status_DateCreated DEFAULT (getdate()), CONSTRAINT PK_Status PRIMARY KEY CLUSTERED (StatusId) )
SQL Server 2014 及更早版本
如果使用早期版本的 SQL Server,则可以使用以下命令删除现有表:
IF EXISTS (SELECT * FROM sysobjects WHERE name=‘Status’ AND xtype=‘U’) DROP TABLE Status
所以整个脚本会变成:
IF EXISTS (SELECT * FROM sysobjects WHERE name=‘Status’ AND xtype=‘U’) DROP TABLE Status CREATE TABLE Status( StatusId int IDENTITY(1,1) NOT NULL, StatusName varchar(50) NOT NULL, DateCreated datetime NOT NULL CONSTRAINT DF_Status_DateCreated DEFAULT (getdate()), CONSTRAINT PK_Status PRIMARY KEY CLUSTERED (StatusId) )
从现有表生成脚本
可以通过 SSMS GUI 中的对象资源管理器从现有表生成 SQL 脚本。执行此操作时,SQL Server 将从表中生成所有 SQL 代码并创建脚本。
为此,只需右键单击表格并选择,然后按照提示进行操作。Script table as…
这不仅限于表,还可以使用相同的方法编写任何数据库对象的脚本。
如果您不熟悉创建 SQL 脚本,可以尝试使用 GUI 创建表,然后从表中生成 SQL 脚本。
