SQL 创建表

众所周知,表对于存储和管理数据很有用,它们是行和列的组合。为此,我们必须使用 SQL Server 创建表语句,其基本语法是:

CREATE TABLE [TableName]
(
    Column_Name1 Data_Type(Size) [NULL | NOT NULL],
    Column_Name2 Data_Type(Size) [NULL | NOT NULL],
     …
    Column_NameN Data_Type(Size) [NULL | NOT NULL]
);

SQL Server 创建表语法项。

  • 表名:如果输入已存在的名称,将抛出错误。
  • 列名:表中唯一的列,可为空或不可为空。
  • 数据类型:列将持有的有效数据类型。例如:Int、Money、Varchar、Nvarchar 和 Date。
  • 大小:Varchar、nvarchar 和 Char 等数据类型需要指定大小。因此,请在此处提供一个有效数字。
  • NULL 或 NOT NULL:如果选择 NULL 选项,则该列将接受正常值和 NULL 值。否则,将抛出错误,提示该列不能为空。

SQL 创建表示例

在此示例中,我们在数据库中创建一个新的 Customer 表。

CREATE TABLE [Customer]
(
  [CustomerKey] [int] NOT NULL,
  [Name] [varchar](150) NULL,
  [DateOfBirth] [date] NULL,
  [EmailAddress] [nvarchar](50) NULL,
  [Profession] [nvarchar](100) NULL
)
GO

命令执行成功,您可以在对象资源管理器中看到新创建的表。

Messages
-------
Command(s) completed successfully.

从上面的 SQL Server 创建表代码中,您可以看到我们声明了 5 列

  • 我们的第一列是 CustomerKey,数据类型为 Integer,不允许 NULL 值。
  • Name 列属于 Varchar 数据类型,允许 NULL 值。我们还将大小指定为 150,这意味着这两列都将接受最多 150 个字符。
  • 第三列是 DateOfBirth,数据类型为 Date,允许 NULL 值。这将只允许我们输入日期值。
  • EmailAddress 和 Profession 列属于 NVarchar 数据类型,允许 NULL 值。

注意:在服务器中创建表之前,建议始终检查表是否存在。

让我向您展示对象资源管理器中的新表。请展开“列”文件夹以查看可用列。如果您没有找到它,请单击对象资源管理器中的刷新按钮。

SQL Server 创建带标识列的表

在此示例中,我们创建一个带标识列的表。为此,我们将 Customer Key 列定义为标识列。这将自动生成从 1 开始并递增 1 的数字。(这是可选的,如果您愿意,可以完全删除 IDENTITY (1, 1) 部分)

CREATE TABLE [Customer11]
(
  [CustomerKey] [int] IDENTITY(1,1) NOT NULL,
  [FirstName] [varchar](50) NULL,
  [LastName] [varchar](50) NULL,
  [BirthDate] [date] NULL,
  [EmailAddress] [nvarchar](50) NULL,
  [Yearly Income] [money] NULL,
  [Profession] [nvarchar](100) NULL
)
GO
Messages
-------
Command(s) completed successfully.

查看新创建的表

SQL Create Table With IDENTITY Column Example 4

创建带主键的表

如何创建带主键列的表。我们只需在 Customer key 后添加 PRIMARY KEY 关键字。这将在 Customer key 列上创建一个主键。

CREATE TABLE [Customer111]
(
  [ID] [int] IDENTITY(1,1) NOT NULL,
  [CustomerKey] [int] NOT NULL PRIMARY KEY,
  [FirstName] [varchar](50) NOT NULL ,
  [LastName] [varchar](50) NULL,
  [BirthDate] [date] NULL,
  [EmailAddress] [nvarchar](50) NULL,
  [Yearly Income] [money] NULL,
  [Profession] [nvarchar](100) NULL
)
GO
Create Table With primary Key Example 5

SQL Server 创建带标识、主键、唯一和检查约束的表

CREATE TABLE 语句有助于创建带标识列、主键约束、唯一键和检查约束列的表。

我建议您参考主键、唯一键、默认约束和检查约束文章。如您所见,

  • 姓氏将接受唯一值。
  • 如果用户未向“职业”列提供值,则它将“软件开发人员”写入为默认值。
  • 检查约束检查年龄值是否在 0 到 100 之间。
CREATE TABLE [Customer11111]
(
  [ID] [int] IDENTITY(1,1) NOT NULL,
  [CustomerKey] [int] NOT NULL PRIMARY KEY,
  [FirstName] [varchar](50) NOT NULL ,
  [LastName] [varchar](50) NOT NULL UNIQUE,
  [Age] [int] NULL,
  [EmailAddress] [nvarchar](50) NULL,
  [Yearly Income] [money] NULL,
  [Profession] [nvarchar](100) NOT NULL DEFAULT ('Software Developer'),
  CONSTRAINT CK_Customer11111_Age CHECK([Age] > 0 AND [Age] <= 100)
)
GO
Messages
-------
Command(s) completed successfully.

如果您在对象资源管理器中展开定义,您可以看到所有这些约束。

View Table and constraints in Object Explorer 7

从另一个表创建表

它提供 Select Into 语句,用于使用现有表以及数据(如果有)来创建表。我们将使用的数据是:

Employee Table

以下查询使用 Employee 定义创建 Customer1111111 表,并插入 Employee 表中存在的所有记录。

SELECT  [EmpID], [FirstName], [LastName], [Education]
 ,[Occupation], [YearlyIncome], [Sales], [HireDate]
 INTO [dbo].[Customer1111111]
  FROM [dbo].[Employee]
Messages
-------
(14 row(s) affected)

里面的数据

SELECT  [EmpID], [FirstName], [LastName], [Education]
 ,[Occupation], [YearlyIncome], [Sales], [HireDate]
  FROM [dbo].[Customer1111111]
View records

在 Management Studio 中创建 SQL 表

Management Studio 对象资源管理器中,展开您要创建表的数据库文件夹。请选择该文件夹,右键单击它将打开上下文菜单。选择“新建”选项,然后选择如下所示的选项。

它将打开以下窗口,用于键入列名、数据类型和决定是否允许任何 NULL 值的复选框。如您所见,我们添加了 7 个不同数据类型的列。

Add Column Names, Assign Data Types and Allow Nulls in the Designer Mode 12

使用 Management Studio 添加标识列。

让我向您展示如何使用 SQL Server Management Studio 向已创建的表添加标识列。首先,选择该列,然后转到“列属性”选项卡。请将“标识规范”属性中的“IsIdentity”选项从默认的“否”更改为“是”。

Change the Identity Specification Column Properties to Yes 14

完成后,请单击保存按钮并重命名表名。

Choose or Enter a name in the box 15

单击“确定”完成保存。编写以下 Select 语句,检查表是否包含所有列名。

Check the Column Names in Object Explorer and Query 16

提示:您可以使用 INSERT 语句或 insert into 将数据插入到新生成的表中。

本地和全局临时表

在这里,我们创建本地和全局临时表。请参阅临时文章。

-- Local Temp
CREATE TABLE #LocalTemp
(
 [ID] [int] IDENTITY(1,1) NOT NULL,
 [Name] [nvarchar](255) NULL,
 [Occupation] [nvarchar](255) NULL,
 [Sales] [float] NULL
)
GO

-- Global Temp
CREATE TABLE ##GlobalTemp
(
 [ID] [int] IDENTITY(1,1) NOT NULL,
 [Name] [nvarchar](255) NULL,
 [Occupation] [nvarchar](255) NULL,
 [YearlyIncome] [float] NULL,
 [Sales] [float] NULL
)
GO
Create Local and Global Temporary Table Example 17

评论已关闭。