SQLServer建表语句详解(sqlserver建表语句)

一、创建表(schema.table)

CREATE TABLE [schema].
( column1 datatype [nullable], column2 datatype [nullable], column3 datatype [nullable], ... column_n datatype [nullable] );

创建表语句可以指定表名(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提供了多种约束条件,以确保数据的完整性和唯一性。

通过上面的介绍,我们可以了解到如何创建一个带有约束条件的表,及表中列或列组合的约束条件。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平