SQL Server建表及约束设置详解

温以宁
温以宁
发布时间:2026-10-15 | 4人浏览过
原创

在关系型数据库中,规范化地创建数据表是基础且关键的一步。本文以 SQL Server 为例,详细说明如何定义表和各类约束(如主键、外键、非空等),涵盖创建与后期修改的操作,确保数据完整性。

准备工作:数据类型与基本结构

在设计表之前,需明确字段的数据类型。常见的 SQL 数据类型包括:

  • int、smallint、tinyint:用于存储不同范围的整数。
  • char(size):固定长度的字符串。
  • varchar(size):可变长度的字符串,节省空间。
  • date:存储日期格式数据。

在正式添加约束前,通常先创建一个基础表结构。以下代码创建一个名为 Persons 的表:

CREATE TABLE Persons(
Id_P int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

核心操作:添加各类约束条件

为了保障数据的完整性和关联性,SQL Server 提供了多种约束机制。

第1步:限制非空 (NOT NULL)

该约束强制列不接受 NULL 值,保证关键字段必须有内容。可以在建表时直接声明:

CREATE TABLE Persons(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

第2步:唯一性校验 (UNIQUE)

确保每一行记录在指定列上的值是唯一的。注意:在 SQL Server 中,UNIQUE 约束通常建议命名以便于管理。

建表时创建并命名:

ALTER TABLE Persons
ADD CONSTRAINT uc_PersonID UNIQUE (Id_P)

已有表中创建约束:

ALTER TABLE Persons
ADD CONSTRAINT uc_PersonID UNIQUE (Id_P)

撤销约束:

ALTER TABLE Persons
DROP CONSTRAINT uc_PersonID

第3步:设定主键 (PRIMARY KEY)

主键不仅具有唯一性,还默认包含非空属性,用于唯一标识每条记录。每个表只能有一个主键。

建表时指定:

CREATE TABLE Persons(
Id_P int NOT NULL PRIMARY KEY,
...
)

已存在表中添加命名主键:

ALTER TABLE Persons
ADD CONSTRAINT pk_PersonID PRIMARY KEY (Id_P)

撤销主键:

ALTER TABLE Persons
DROP CONSTRAINT pk_PersonID

第4步:建立外键关联 (FOREIGN KEY)

外键用于连接两个表,防止非法数据插入,保证参照完整性。 假设我们有一个 Orders 表,其中的 Id_P 引用了 Persons 表的主键。

建表时创建:

CREATE TABLE Orders(
Id_O int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
Id_P int FOREIGN KEY REFERENCES Persons(Id_P)
)

已存在表中创建命名外键:

ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (Id_P)
REFERENCES Persons(Id_P)

撤销外键:

ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders

第5步:数值范围控制 (CHECK)

限制列中值的范围。例如,要求 Id_P 必须大于 0,或者 City 必须是 'Sandnes'。

单列检查:

CREATE TABLE Persons(
Id_P int NOT NULL CHECK (Id_P>0),
LastName varchar(255) NOT NULL,
...
)

多列组合检查:

ALTER TABLE Persons
ADD CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')

撤销:

ALTER TABLE Persons
DROP CONSTRAINT chk_Person

第6步:默认值 (DEFAULT)

当向该列插入新记录且未指定值时,自动填入预设值。

建表时指定:

CREATE TABLE Persons(
...
City varchar(255) DEFAULT 'Sandnes'
)

修改已有列增加默认值:

ALTER TABLE Persons
ALTER COLUMN City SET DEFAULT 'SANDNES'

撤销默认值:

ALTER TABLE Persons
ALTER COLUMN City DROP DEFAULT

总结

熟练掌握建表语法及约束条件(尤其是主键和外键)是数据库设计的基础。建议在创建时就为关键约束命名(如 CONSTRAINT name ...),以便后续维护和调试。

以上就是 SQL Server 创建表及约束条件的详细内容,更多关于 SQL Server 建表优化的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表