SQL Server (Transact-SQL) CREATE TABLE 语句用于创建新表。创建表涉及为表提供名称并定义每列的名称和数据类型(例如 varchar、整数、日期等)。

语法

使用的语法SQL Server (Transact-SQL) 中的 CREATE TABLE 语句如下:

CREATE TABLE table_name (
  column1 datatype,
  column2 datatype,
  column3 datatype,
  .....
  .....
); 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

示例:创建表

下面提到的语句创建一个名为 Employee 的表,包含五列:EmpID、Name、City、Age 和 Salary .

CREATE TABLE Employee (
  EmpID INT NOT NULL,
  Name VARCHAR(255) NOT NULL,
  City VARCHAR(100),
  Age INT,
  Salary DECIMAL(18,2)
); 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在上面的语句中,数据类型指定列可以保存的数据类型。在数据类型之后,可以为每列提供可选属性,例如 NOT NULL 用于确保列不能有 NULL 值。有关详细信息,请参阅 SQL Server 约束

上述语句将创建一个名为Employee 的空表包含五列。成功创建表后,会显示一条消息。除此之外,还可以使用EXEC sp_columns命令进行检查,如下所示:

EXEC sp_columns Employee; 

    上述代码的结果将类似于:

    TABLE_OWNERTABLE_NAMECOLUMN_NAMEDATA_TYPETYPE_NAMEPRECISIONLENGTH
    dboEmployeeEmpID4int identity104
    dboEmployeeName12varchar255255
    dboEmployeeCity12varchar100100
    dboEmployeeAge4int104
    dboEmployeeSalary3decimal1820

    这表明Employee现在在数据库中可用,可用于存储与员工相关的信息。

    使用另一个表创建表

    SQL Server (Transact-SQL) SELECT INTO 语句用于通过复制现有表的列来从现有表创建表。以这种方式创建表时,新表将填充现有表中的记录(基于 SELECT 语句)。

    语法

    使用 SELECT INTO 的语法SQL Server (Transact-SQL) 中的语句如下:

    /* 从一个表复制所有的字段 */
    SELECT *
    INTO new_table
    FROM old_table
    WHERE condition;
    
    /* 从一个表复制所选择的字段创建新表 */
    SELECT column1, column2, column3, ...
    INTO new_table
    FROM old_table
    WHERE condition; 
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    示例:

    考虑一个名为 Employee 的数据库表,其内容如下记录:

    EmpIDNameCityAgeSalary
    1JohnLondon253000
    2MarryNew York242750
    3JoParis272800
    4KimAmsterdam303100
    5RameshNew Delhi283000
    6HuangBeijing282800

    复制表的所有列:下面的语句用于复制Employee 表的所有列转换为名为 Employee_PT 的新表。新表将包含 Employee 表中员工年龄小于 28 岁的所有记录。

    SELECT * INTO Employee_PT 
    FROM Employee
    WHERE Age < 28;
    
    -- 查看结果
    SELECT * FROM Employee_PT; 
    • 1
    • 2
    • 3
    • 4
    • 5

    这将产生如下所示的结果:

    EmpIDNameCityAgeSalary
    1JohnLondon253000
    2MarryNew York242750
    3JoParis272800

    复制表的选定列:使用 SELECT INTO 语句时也可以复制选定列。在下面的示例中,复制的列为:EmpID、Name 和 City。

    SELECT EmpID, Name, City INTO Employee_PT 
    FROM Employee
    WHERE Age < 28;
    
    -- 查看结果
    SELECT * FROM Employee_PT; 
    • 1
    • 2
    • 3
    • 4
    • 5

    这将产生如下所示的结果:

    EmpIDNameCity
    1JohnLondon
    2MarryNew York
    3JoParis

    使用AS子句:AS子句可用于重命名列名。请参阅下面的示例:

    SELECT EmpID, Name AS EmployeeName, City INTO Employee_PT 
    FROM Employee
    WHERE Age < 28;
    
    -- 查看结果
    SELECT * FROM Employee_PT; 
    • 1
    • 2
    • 3
    • 4
    • 5

    这将产生如下所示的结果:

    EmpIDEmployeeNameCity
    1JohnLondon
    2MarryNew York
    3JoParis