数据库怎么在建表之后怎么给字段添加约束?

数据库怎么在建表之后怎么给字段添加约束?,第1张

五大约束

1.—-主键约束(Primay Key Coustraint) 唯一性,非空性

2.—-唯一约束 (Unique Counstraint)唯一性,可以空,但只能有一个

3.—-检查约束 (Check Counstraint) 对该列数据的范围、格式的限制(如:年龄、性别等)

4.—-默认约束 (Default Counstraint) 该数据的默认值

5.—-外键约束 (Foreign Key Counstraint) 需要建立两表间的关系并引用主表的列

五大约束的语法示例

1.—-添加主键约束(将stuNo作为主键)

alter table stuInfo

add constraint PK_stuNo primary key (stuNo)

2.—-添加唯一约束(身份z号唯一,因为每个人的都不一样)

alter table stuInfo

add constraint UQ_stuID unique(stuID)

3.—-添加默认约束(如果地址不填 默认为“地址不详”)

alter table stuInfo

add constraint DF_stuAddress default (‘地址不详’) for stuAddress

4.—-添加检查约束 (对年龄加以限定 15-40岁之间)

alter table stuInfo

add constraint CK_stuAge check (stuAge between 15 and 40)

alter table stuInfo

add constraint CK_stuSex check (stuSex=’男’ or stuSex=’女′)

5.—-添加外键约束 (主表stuInfo和从表stuMarks建立关系,关联字段stuNo)

alter table stuInfo

add constraint FK_stuNo foreign key(stuNo)references stuinfo(stuNo)

约束(Constraint)是Microsoft SQL Server 提供的自动保持数据库完整性的一种方法,定义了可输入表或表的单个列中的数据的限制条件(有关数据完整性的介绍请参见第9 章)。在SQL Server 中有5 种约束:主关键字约束(Primary Key Constraint)、外关键字约束(Foreign Key Constraint)、惟一性约束(Unique Constraint)、检查约束(Check Constraint)和缺省约束(Default Constraint)。

在SQL表中的性别进行check约束步骤如下:

1、下面我们打开SQL  SERVER查看一下要 *** 作的表的数据结构。

2、接下来我们给这个表添加一个Check约束,约束将会对Country字段的值进行检测。

3、接下来我们通过insert语句向表中添加一行数据,注意Country字段先随便赋一个值,如下图所示,你会看到语句执行报错了。

4、我们查一下数据表中是否已经插入了数据,你会看到数据并未被插入。

5、如果我们将Country改成Check允许的值,然后在进行插入 *** 作。

6、这个时候我们在执行select语句,你会看到这条语句已经插入进数据表中了。

现在要说的是在列这一层次过滤的基于表定义之前就规范好的 CHECK 约束。(MySQL 版本 >= 8.0.16)

mysql>create table f1 (r1 int constraint tb_f1_r1_chk1 check (mod(r1,3)=0))

Query OK, 0 rows affected (0.03 sec)

mysql>create table f2 (r1 int constraint tb_f2_r1_chk1 check (mod(r1,3)=0) not enforced)

Query OK, 0 rows affected (0.02 sec)

这里 CHECK 约束的相关限制如下:

1. constraint 名字在每个数据库中唯一。

也就是说单个数据库里不存在相同的两个 constraint,如果不定义,系统自动生成一个唯一的约束名字。

2. check 约束针对语句 insert/update/replace/load data/load xml 生效;针对对应的 ignore 语句失效。

3. 并非每个函数都可以使用,比如函数结果不确定的:NOW(),CONNECTION_ID(),CURRENT_USER()。

4. 不适用于存储过程和存储函数。

5. 系统变量不适用。

6. 子查询不适用。

7. 外键动作(比如 ON UPDATE, ON DELETE) 不适用。

8. enforced 默认启用,如果单独加上 not enforced ,check 约束失效。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11803672.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-18
下一篇2023-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存