SQL篇 添加约束、删除约束

发布于:2025-07-05 ⋅ 阅读:(20) ⋅ 点赞:(0)

1、相关链接

SQL篇 约束【1】
SQL篇 约束【2】

2、约束的增删找查

SQL Server约束是保证数据完整性的关键机制。我将以典型的员工信息表(emp_tbl)和厂区进出记录表(checkInRecord)为案例,系统讲解六大约束类型的增删找查,帮助开发者掌握约束的最佳实践。现数据库中已有emp_tbl表和checkInRecord表,设计的字段如下表格所示,并且所有字段未设置任何约束。
员工信息表(emp_tbl):

字段名 字段类型 字段注释
empNo varchar(10) 员工编号
empName varchar(10) 员工姓名
sex char(1) 性别(1男;2女)
enterDay datetime 入职日期
email varchar(40) 员工邮箱
phone varchar(11) 员工电话
stateFlag char(1) 员工状态(0无效;1有效)

厂区进出记录表(checkInRecord):

字段名 字段类型 字段注释
empno varchar(10) 员工编号
punchType varchar(1) 进出类型(0进入;1出去)
punchDate date 进出日期
punchTime time 进出时间
recordtime datetime 记录登记日期

2.1 查看约束(主键、外键、唯一性、检查约束)

INFORMATION_SCHEMA.TABLE_CONSTRAINTS是SQL Server系统数据库中的一个表,用于存储数据库中所有表的约束信息‌,包括主键、外键、唯一约束等类型。
TABLE_CONSTRAINTS表的数据结构:

字段 说明
‌CONSTRAINT_CATALOG 条件约束限定符
‌CONSTRAINT_SCHEMA‌ 包含条件约束的架构名称
‌CONSTRAINT_NAME‌ 条件约束名称
‌TABLE_CATALOG 数据表限定符
‌TABLE_SCHEMA 包含数据表的架构名称
‌TABLE_NAME 数据表名称
‌CONSTRAINT_TYPE 约束条件的类型

注意:
CONSTRAINT_TYPE条件约束的类型只包含CHECK(检查约束)、UNIQUE(唯一性约束)、PRIMARY KEY(主键约束)、FOREIGN KEY(外键约束)。
查看方法:

select * 
from information_schema.table_constraints 
where table_name = 'emp_tbl'

执行结果:
在这里插入图片描述

2.2 查看默认约束

在 SQL Server 中,sys.default_constraints 是一个系统视图,用于存储数据库中所有默认约束(DEFAULT 约束)的详细信息。

SELECT 
    dc.name AS DefaultConstraintName,
    t.name AS TableName,
    c.name AS ColumnName,
    OBJECT_NAME(dc.parent_object_id) AS ParentObjectName,
    dc.definition AS DefaultDefinition
FROM 
    sys.default_constraints dc
JOIN 
    sys.columns c ON dc.parent_column_id = c.column_id AND dc.parent_object_id = c.object_id
JOIN 
    sys.tables t ON c.object_id = t.object_id
WHERE 
    t.name = 'emp_tbl' AND c.name = 'stateFlag';

2.3 修改约束(添加/编辑/修改)

2.3.1 添加主键约束
alter table emp_tbl
add constraint pk_empno primary key(empno)

在这里插入图片描述

2.3.2 添加外键约束
alter table checkInRecord
add constraint fk_empno foreign key(empno) references emp_tbl(empno)

在这里插入图片描述

2.3.3 添加唯一性约束
alter table emp_tbl
add constraint uk_mail unique(email)
2.3.4 添加检查约束
alter table emp_tbl
add constraint ck_sex check(sex in ('1','2'))
2.3.5 添加默认值约束
alter table emp_tbl
add constraint df_state default '1' for stateFlag
2.3.6 添加非空约束

注意:NOT NULL 不是约束类型而是列属性

	alter table emp_tbl
	alter column email  varchar(40) not null
2.3.7 修改约束
  1. 约束重命名
EXEC sp_rename 'pk_empno', 'pk_emp_empno'
  1. 修改约束
    需要删除约束后再新增约束
2.3.8 删除约束
alter table emp_tbl
drop constraint DF__test20240__state__108B795B

网站公告

今日签到

点亮在社区的每一天
去签到