SQL Server (Transact-SQL) CREATE TABLE 语句用于创建新表。创建表涉及为表提供名称并定义每列的名称和数据类型(例如 varchar、整数、日期等)。
语法
使用的语法SQL Server (Transact-SQL) 中的 CREATE TABLE 语句如下:
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
column3 datatype,
.....
.....
);
示例:创建表
下面提到的语句创建一个名为 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)
);
在上面的语句中,数据类型指定列可以保存的数据类型。在数据类型之后,可以为每列提供可选属性,例如 NOT NULL 用于确保列不能有 NULL 值。有关详细信息,请参阅 SQL Server 约束。
上述语句将创建一个名为Employee 的空表包含五列。成功创建表后,会显示一条消息。除此之外,还可以使用EXEC sp_columns命令进行检查,如下所示:
EXEC sp_columns Employee;
上述代码的结果将类似于:
TABLE_OWNER | TABLE_NAME | COLUMN_NAME | DATA_TYPE | TYPE_NAME | PRECISION | LENGTH |
---|---|---|---|---|---|---|
dbo | Employee | EmpID | 4 | int identity | 10 | 4 |
dbo | Employee | Name | 12 | varchar | 255 | 255 |
dbo | Employee | City | 12 | varchar | 100 | 100 |
dbo | Employee | Age | 4 | int | 10 | 4 |
dbo | Employee | Salary | 3 | decimal | 18 | 20 |
这表明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;
示例:
考虑一个名为 Employee 的数据库表,其内容如下记录:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
1 | John | London | 25 | 3000 |
2 | Marry | New York | 24 | 2750 |
3 | Jo | Paris | 27 | 2800 |
4 | Kim | Amsterdam | 30 | 3100 |
5 | Ramesh | New Delhi | 28 | 3000 |
6 | Huang | Beijing | 28 | 2800 |
复制表的所有列:下面的语句用于复制Employee 表的所有列转换为名为 Employee_PT 的新表。新表将包含 Employee 表中员工年龄小于 28 岁的所有记录。
SELECT * INTO Employee_PT
FROM Employee
WHERE Age < 28;
-- 查看结果
SELECT * FROM Employee_PT;
这将产生如下所示的结果:
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
1 | John | London | 25 | 3000 |
2 | Marry | New York | 24 | 2750 |
3 | Jo | Paris | 27 | 2800 |
复制表的选定列:使用 SELECT INTO 语句时也可以复制选定列。在下面的示例中,复制的列为:EmpID、Name 和 City。
SELECT EmpID, Name, City INTO Employee_PT
FROM Employee
WHERE Age < 28;
-- 查看结果
SELECT * FROM Employee_PT;
这将产生如下所示的结果:
EmpID | Name | City |
---|---|---|
1 | John | London |
2 | Marry | New York |
3 | Jo | Paris |
使用AS子句:AS子句可用于重命名列名。请参阅下面的示例:
SELECT EmpID, Name AS EmployeeName, City INTO Employee_PT
FROM Employee
WHERE Age < 28;
-- 查看结果
SELECT * FROM Employee_PT;
这将产生如下所示的结果:
EmpID | EmployeeName | City |
---|---|---|
1 | John | London |
2 | Marry | New York |
3 | Jo | Paris |