SQL Server建表及约束设置详解

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

在关系型数据库中,规范化地创建数据表是基础且关键的一步。本文以 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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。