一、创建表(schema.table)
CREATE TABLE [schema].
创建表语句可以指定表名(schema.table)和列(column),可以为每个列指定数据类型(datatype)。每列都可以指定是否为NULL(nullable)。
例如:
CREATE TABLE dbo.Employee( EmployeeID INT NOT NULL, FirstName VARCHAR (50) NOT NULL, LastName VARCHAR (50) NULL, BirthDate DATE NULL, Address VARCHAR (150) NULL, City VARCHAR (50) NULL, CONSTRAINT PK_Employee PRIMARY KEY (EmployeeID) );
二、列的约束条件
创建表时可以为每列指定不同的约束条件,以确保数据的完整性。
1. NOT NULL
NOT NULL约束条件可以确保列中的每个值都不为空。
CREATE TABLE Employees( EmpID INT NOT NULL, LastName VARCHAR(50) NOT NULL, FirstName VARCHAR(50) NOT NULL, HireDate DATE NOT NULL );
2. PRIMARY KEY
PRIMARY KEY约束条件可以确保列的唯一性。
CREATE TABLE Employee( EmployeeID INT PRIMARY KEY NOT NULL, LastName VARCHAR(50) NOT NULL, FirstName VARCHAR(50), BirthDate DATE, Address VARCHAR(150), City VARCHAR(50) );
3. UNIQUE
UNIQUE约束条件可以确保列中的每个值都是唯一的。
CREATE TABLE Persons ( ID INT NOT NULL UNIQUE, LastName VARCHAR(255) NOT NULL, FirstName VARCHAR(255), Age INT );
4. CHECK
CHECK约束条件可以确保列中的每个值都符合指定条件。
CREATE TABLE Persons ( ID INT NOT NULL, LastName VARCHAR(255) NOT NULL, FirstName VARCHAR(255), Age INT, CONSTRAINT CK_Persons CHECK (Age>=18) );
5. FOREIGN KEY
FOREIGN KEY约束条件可以确保列中插入的值与另一张表中的值相匹配。
--表1 CREATE TABLE Orders ( OrderID INT PRIMARY KEY NOT NULL, OrderNumber INT NOT NULL, PersonID INT FOREIGN KEY REFERENCES Persons(PersonID) ); --表2 CREATE TABLE Persons ( PersonID INT PRIMARY KEY NOT NULL, LastName VARCHAR(255) NOT NULL, FirstName VARCHAR(255), Age INT );
三、表的约束条件
表可以具有不同的约束条件,以确保数据的完整性。
1. PRIMARY KEY
PRIMARY KEY约束条件可以确保表中的每条记录都唯一。
CREATE TABLE Persons ( ID INT NOT NULL PRIMARY KEY, LastName VARCHAR(255) NOT NULL, FirstName VARCHAR(255), Age INT );
2. CHECK
CREATE TABLE可以使用CHECK约束条件,以确保表中的记录符合某个指定条件。
CREATE TABLE Persons ( ID INT NOT NULL, LastName VARCHAR(255) NOT NULL, FirstName VARCHAR(255), Age INT, CONSTRAINT CHK_PersonsAge CHECK (Age>=18) );
3. UNIQUE
UNIQUE约束条件可以确保表中的每条记录中的指定值都是唯一的。
CREATE TABLE Persons ( ID INT NOT NULL, LastName VARCHAR(255) NOT NULL, FirstName VARCHAR(255), Age INT, CONSTRAINT UC_Person UNIQUE (ID, LastName) );
4. FOREIGN KEY
FOREIGN KEY约束条件可以确保表中的数据与另一张表中的数据相匹配。
-- 表1 CREATE TABLE Orders ( OrderID INT PRIMARY KEY NOT NULL, OrderNumber INT NOT NULL, PersonID INT FOREIGN KEY REFERENCES Persons(PersonID) ); -- 表2 CREATE TABLE Persons ( PersonID INT PRIMARY KEY NOT NULL, LastName VARCHAR(255) NOT NULL, FirstName VARCHAR(255), Age INT );
四、其他约束条件
除了前面提到的约束条件之外,SQL Server还提供了其他的约束条件。
1. DEFAULT
DEFAULT约束条件可以指定列的默认值。
CREATE TABLE TestTable ( ID INT NOT NULL PRIMARY KEY, MyDate DATETIME NOT NULL DEFAULT(getdate()) );
2. IDENTITY
IDENTITY约束条件可以在每次插入数据时自动为一列生成唯一的、逐步递增的整数值。
CREATE TABLE TestTable ( ID INT IDENTITY(1,1) PRIMARY KEY, Name VARCHAR(255) NOT NULL );
3. INDEX
INDEX约束条件可以加快检索数据的速度。
CREATE TABLE Persons ( ID INT NOT NULL PRIMARY KEY, LastName VARCHAR(255) NOT NULL, FirstName VARCHAR(255), Age INT, INDEX idx_LastName (LastName) );
总结
SQL Server提供了多种约束条件,以确保数据的完整性和唯一性。
通过上面的介绍,我们可以了解到如何创建一个带有约束条件的表,及表中列或列组合的约束条件。