SQL Server建立表
在SQL Server中,要建立一个新的表,可以通过使用CREATE TABLE语句。CREATE TABLE语句用于定义表和表中的列,以及任何约束和索引。
语法
下面是使用CREATE TABLE语句创建新表的一般语法:
CREATE TABLE table_name (
column1 datatype constraint,
column2 datatype constraint,
column3 datatype constraint,
.....
columnN datatype constraint
)
其中,table_name是将要创建的表的名称; column1,column2,…,columnN是表中定义的每个列的名称;datatype是每个列的数据类型,constraint是对每个列定义的约束。
示例
例如,下面的语句创建一个名为"employees"的新表,该表包含四个列:EmployeeID、LastName、FirstName和BirthDate。
CREATE TABLE employees (
EmployeeID INT PRIMARY KEY,
LastName VARCHAR(50) NOT NULL,
FirstName VARCHAR(50) NOT NULL,
BirthDate DATE
)
在这个例子中,EmployeeID列是表的主键;LastName和FirstName列不允许为空值。
数据类型
在建立表的过程中,您需要为每个列指定数据类型,以指定该列中将要存储的数据类型。
下面是SQL Server支持的一些基本数据类型:
整数类型
数据类型 | 描述 |
---|---|
INT | 整数(从 -2^31 (-2,147,483,648) 到 2^31-1 (2,147,483,647))。 |
BIGINT | 大整数(从 -2^63 (-9,223,372,036,854,775,808) 到 2^63-1 (9,223,372,036,854,775,807))。 |
SMALLINT | 短整数(从 -2^15 (-32,768) 到 2^15-1 (32,767))。 |
TINYINT | 迷你整数(从 0 到 255)。 |
浮点类型
数据类型 | 描述 |
---|---|
FLOAT | 浮点数(从 -1.79E+308 到 1.79E+308)。 |
REAL | 实数(从 -3.40E +38 到 3.40E +38)。 |
日期/时间类型
数据类型 | 描述 |
---|---|
DATE | 日期(YYYY-MM-DD)。 |
DATETIME | 日期时间(YYYY-MM-DD HH:MI:SS)。 |
SMALLDATETIME | 日期时间(YYYY-MM-DD HH:MI:SS)。 |
TIME | 时间(HH:MI:SS)。 |
DATETIME2 | 日期时间(YYYY-MM-DD HH:MI:SS.NNNNNNN)。 |
字符串类型
数据类型 | 描述 |
---|---|
CHAR | 定长字符串(1 到 8,000 字符)。 |
VARCHAR | 变长字符串(1 到 8,000 字符)。 |
TEXT | 文本字符串(1 到 2^31-1 (2,147,483,647) 字符)。 |
NCHAR | Unicode 定长字符串(1 到 4,000 字符)。 |
NVARCHAR | Unicode 变长字符串(1 到 4,000 字符)。 |
NTEXT | Unicode 文本字符串(1 到 2^30-1 (1,073,741,823) 字符)。 |
二进制类型
数据类型 | 描述 |
---|---|
BINARY | 固定长度的二进制数据(1 到 8000 字符)。 |
VARBINARY | 可变长度的二进制数据 (1 到 8000 字符)。 |
IMAGE | 二进制数据(1 到 2^31-1 (2,147,483,647) 字节)。 |
约束
约束是指对建立表的规定。在建立表时,您可以设置约束来限制如何向表中添加和修改数据,从而确保表中的数据完整性。
下面是一些SQL Server支持的可选约束:
主键约束
此约束强制是唯一的标识表中每行的单个列或列组合。
CREATE TABLE students (
StudentID INT PRIMARY KEY,
FirstName VARCHAR(50) NOT NULL,
LastName VARCHAR(50) NOT NULL
)
在这个例子中,StudentID列是表的主键,这意味着每个值都是唯一的,而且不可为空值。
外键约束
此约束指定一个或多个列是另一个表的主键的引用。
CREATE TABLE orders (
OrderID INT PRIMARY KEY,
CustomerID INT,
OrderDate DATE,
FOREIGN KEY (CustomerID) REFERENCES customers(CustomerID)
)
在这个例子中,“orders”表包含对“customers”表的外键引用,因为“CustomerID”列在“customers”表中是主键,而在“orders”表中是外键。
唯一约束
此约束确保表中的每个值都是唯一的。
CREATE TABLE users (
UserID INT PRIMARY KEY,
UserName VARCHAR(50) NOT NULL,
Email VARCHAR(50) UNIQUE
)
在此例中,Email列是一个唯一约束,确保每个值都是唯一的。
其他约束还包括:
- NOT NULL
- CHECK
- DEFAULT
索引
索引是一种协助快速查找表中数据的方法。在建立表时,可以为其定义索引,使其在执行查询时更快。
下面是一些SQL Server支持的可选索引:
聚集索引
此索引定义了一个表的排序规则和物理存储方式。
CREATE CLUSTERED INDEX idx_students
ON students (StudentID)
此示例中,“idx_students”是一个聚集索引,按照“StudentID”列排列,“students”表区域物理排序。
非聚集索引
此索引定义表中单个列或列组合的排序规则和物理存储方式。
CREATE NONCLUSTERED INDEX idx_orders
ON orders (CustomerID)
在此示例中,“idx_orders”是非聚集索引,按照“CustomerID”列排列,“orders”表的区域不需要物理排序。
总结
在SQL Server中,您可以使用CREATE TABLE语句来建立新表。通过定义列和约束,表会限制如何向其中添加和修改数据,从而确保了数据的完整性。此外,可以为表定义索引来协助快速查找表中的数据。