SQL2005 基础(2)
定义约束
1.CHECK约束
用于限制输入一列或多列的值的范围。
CHECK约束的创建,查看与删除
语法格式:
[CONSTRAINT CHECK constraint_name]
CHECK (logical_expression)
例15: 为teacher表创建CHECK约束,使字段”性别“只能为”男“或”女“
use book
ALTER TABLE teacher
ADD
CONSTRAINT CK_teacher CHECK(性别='男' or 性别='女')
删除CHECK约束语句格式:
DROP CONSTRAINT CHECK constraint_name
删除上面的约束语句如下:
ALTER TABLE teacher
DROP CONSTRAINT CH_teacher
2.DEFAULT约束
设定该列的默认值,即当没有指定数据时,系统把该值赋予该列。
DEFAULT约束的创建,查看和删除
创建约束语法格式:
[CONSTRAINT DEFAULT constraint_name]
DEFAULT constraint_expression
例16 创建性别default约束为“男”,当用户插入新数据行,该字段没有指定数据时,系统将自动赋予该字段“男”
ALTER TABLE teacher
ADD CONSTRAINT 性别 DEFAULT '男' FOR 性别
删除约束语法格式:
DROP CONSTRAINT DEFAULT constraint_name
删除‘例16'所定义的DEFAULT约束
ALTER TABLE teacher
DROP CONSTRAINT DE_性别
3.PRIMARY KEY约束
在表中用一列或多列的组合去唯一标识表中的每一行。这样的一列或多列成为表的主键(Primary key),通过它可以强制表的实体完整性。一个表只能有一个主键,且主键约束中的列不能为空值。
例17 把teacher表中的"作者编号"作为“主键”
ALTER TABLE teacher
ADD CONSTRAINT PK_作者编号 PRIMARY KEY CLUSTERED(作者编号)
删除该主键
ALTER TABLE teacher
DROP CONSTRAINT PK_作者编号
4.FOREIGN KEY约束
外键(Foreign Key):用于建立和加强两个表(主表与从表)的一列或多列数据之音的连接,当添加、修改或删除数据时,通过参照完整性来保证它们之间的数据的一致性。
例18 为BOOK1表中的编号列建立键约束
ALTER TABLE book1
ADD CONSTRAINT pk_编号 PRIMARY KEY CLUSTERED(编号)
为bookin表中的编号列建立外键约束
ALTER TABLE booking
ADD CONSTRAINT FK_编号 FOREIGN KDY(编号)
REFERENCES book1(编号)
5.UNIQUE约束
UNIQUE约束用于确保表中的两个数据行在非主键中没有相同的列值。
表--修改--索引/键
注:表中所有约束的名称必须是唯一的,不能相同。
默认与规则
1.使用默认
功能与DEFAULT相同,但与DEFAULT约束不同,默认值是一种数据库对象,在数据库中只需定义一次,就可以被一次或多次地应用在任意表中的一列或多列上,还可以应用在用户自定义的数据类型上。
创建默认的命令如下:
CREATE DEFAULT default_name
AS constraint_expression
其中:
default_name:表示新建立的默认的名称。
constraint_expession:指定默认常量表达式的值。
例19 创建默认“MR_定价”
use book
go
create default mr_定价
as '100'
go
创建默认后,就可以将其绑定到表中的某列上,以后在向该表输入数据时,定价列的默认值为100
将默认绑定到表中某列上的命令语句如下:
EXEC sp_bindefault default_name
'table_name,[column_name[...]|user_datetype]'
将MR_定价 绑定到 book1.定价 上
EXEC sp_bindefault MR_定价,'book1,定价'
2.使用规则
概念上,规则与CHECK约束的关系相对于默认与DEFAULT约束的关系一样。即“规则”的作用与CHECK一样,但"规则“不固定哪列。
语法格句:
CREATE RULE rule_name
AS condition_expression
其中:
rule_name:新建的规则名。
condition_expression:定义规则的条件。
例20
USE book
go
create rule gz_定价
as @定价>=0 and @定价<=10000
go
注意这里的“@定价"是个变量,现在还不知它代表数据表中的哪个列,只有待该规则绑定到表中的一个具体列上,它才代表那个具体列的列值。
执行绑定规则的命令语句格式:
EXEC sp_bindrule rule_name,'table_name,[column_name[,...]|user_datetype]'
将它绑定到book2表中的“定价”列上,此时,变量“@定价'代表定价的列值。
EXEC sp_bindrule GZ_定价,'book2.定价'
==============例===============
--主键约束
alter table userinfo
add constraint pk_id primary key (id)
--唯一约束
alter table userinfo
add constraint uq_username unique (username)
--默认约束
alter table userinfo
add constraint df_address default ('地址不详') for address
--检查约束
alter table userinfo
add constraint ck_email check(email like '%@%')
--外键约束
alter table username
add constraint fk_id
foreign key(id) references userinfo(id)
2 删除约束
语法:alter table 表名
Drop constraint 约束名
1.CHECK约束
用于限制输入一列或多列的值的范围。
CHECK约束的创建,查看与删除
语法格式:
[CONSTRAINT CHECK constraint_name]
CHECK (logical_expression)
例15: 为teacher表创建CHECK约束,使字段”性别“只能为”男“或”女“
use book
ALTER TABLE teacher
ADD
CONSTRAINT CK_teacher CHECK(性别='男' or 性别='女')
删除CHECK约束语句格式:
DROP CONSTRAINT CHECK constraint_name
删除上面的约束语句如下:
ALTER TABLE teacher
DROP CONSTRAINT CH_teacher
2.DEFAULT约束
设定该列的默认值,即当没有指定数据时,系统把该值赋予该列。
DEFAULT约束的创建,查看和删除
创建约束语法格式:
[CONSTRAINT DEFAULT constraint_name]
DEFAULT constraint_expression
例16 创建性别default约束为“男”,当用户插入新数据行,该字段没有指定数据时,系统将自动赋予该字段“男”
ALTER TABLE teacher
ADD CONSTRAINT 性别 DEFAULT '男' FOR 性别
删除约束语法格式:
DROP CONSTRAINT DEFAULT constraint_name
删除‘例16'所定义的DEFAULT约束
ALTER TABLE teacher
DROP CONSTRAINT DE_性别
3.PRIMARY KEY约束
在表中用一列或多列的组合去唯一标识表中的每一行。这样的一列或多列成为表的主键(Primary key),通过它可以强制表的实体完整性。一个表只能有一个主键,且主键约束中的列不能为空值。
例17 把teacher表中的"作者编号"作为“主键”
ALTER TABLE teacher
ADD CONSTRAINT PK_作者编号 PRIMARY KEY CLUSTERED(作者编号)
删除该主键
ALTER TABLE teacher
DROP CONSTRAINT PK_作者编号
4.FOREIGN KEY约束
外键(Foreign Key):用于建立和加强两个表(主表与从表)的一列或多列数据之音的连接,当添加、修改或删除数据时,通过参照完整性来保证它们之间的数据的一致性。
例18 为BOOK1表中的编号列建立键约束
ALTER TABLE book1
ADD CONSTRAINT pk_编号 PRIMARY KEY CLUSTERED(编号)
为bookin表中的编号列建立外键约束
ALTER TABLE booking
ADD CONSTRAINT FK_编号 FOREIGN KDY(编号)
REFERENCES book1(编号)
5.UNIQUE约束
UNIQUE约束用于确保表中的两个数据行在非主键中没有相同的列值。
表--修改--索引/键
注:表中所有约束的名称必须是唯一的,不能相同。
默认与规则
1.使用默认
功能与DEFAULT相同,但与DEFAULT约束不同,默认值是一种数据库对象,在数据库中只需定义一次,就可以被一次或多次地应用在任意表中的一列或多列上,还可以应用在用户自定义的数据类型上。
创建默认的命令如下:
CREATE DEFAULT default_name
AS constraint_expression
其中:
default_name:表示新建立的默认的名称。
constraint_expession:指定默认常量表达式的值。
例19 创建默认“MR_定价”
use book
go
create default mr_定价
as '100'
go
创建默认后,就可以将其绑定到表中的某列上,以后在向该表输入数据时,定价列的默认值为100
将默认绑定到表中某列上的命令语句如下:
EXEC sp_bindefault default_name
'table_name,[column_name[...]|user_datetype]'
将MR_定价 绑定到 book1.定价 上
EXEC sp_bindefault MR_定价,'book1,定价'
2.使用规则
概念上,规则与CHECK约束的关系相对于默认与DEFAULT约束的关系一样。即“规则”的作用与CHECK一样,但"规则“不固定哪列。
语法格句:
CREATE RULE rule_name
AS condition_expression
其中:
rule_name:新建的规则名。
condition_expression:定义规则的条件。
例20
USE book
go
create rule gz_定价
as @定价>=0 and @定价<=10000
go
注意这里的“@定价"是个变量,现在还不知它代表数据表中的哪个列,只有待该规则绑定到表中的一个具体列上,它才代表那个具体列的列值。
执行绑定规则的命令语句格式:
EXEC sp_bindrule rule_name,'table_name,[column_name[,...]|user_datetype]'
将它绑定到book2表中的“定价”列上,此时,变量“@定价'代表定价的列值。
EXEC sp_bindrule GZ_定价,'book2.定价'
==============例===============
--主键约束
alter table userinfo
add constraint pk_id primary key (id)
--唯一约束
alter table userinfo
add constraint uq_username unique (username)
--默认约束
alter table userinfo
add constraint df_address default ('地址不详') for address
--检查约束
alter table userinfo
add constraint ck_email check(email like '%@%')
--外键约束
alter table username
add constraint fk_id
foreign key(id) references userinfo(id)
2 删除约束
语法:alter table 表名
Drop constraint 约束名
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述