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

数据库怎么在建表之后怎么给字段添加约束?,第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)。

现在要说的是在列这一层次过滤的基于表定义之前就规范好的 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 约束失效。

从数据库用户角度看,数据库中的数据是以表、视图等方式储存的。那么用户自己是怎么创建表的呢?用户可以在Oracle提供的SQL*Plus中使用create table语句创建表。

工具/材料

电脑

Oracle 10g

CREATE TABLE创建表01

首先用户必须要有CREATE TABLE系统权限,并且只能在自己的模式中创建表,图中的例子使用CREATE TABLE语句在当前模式中创建了一个共有5列的表:表的名称为employee1,包含 emp, name, job,age,dep 等5列,后面的number、 varchar2、等为数据类型,括号里面为长度

02

如果想要在其他模式中创建表,则必须在表名前加上模式名,并且用户还要有CREATE ANY TABLE系统权限,例如图中语句将在SYSTEM模式中创建employees2表

03

添加主键约束

就是对某一列添加为主键,一个表中只能有一个主键约束,且主键约束不能有空值和重复的值。 alter table employee1 add constraint pk_emp primary key (emp),给employee1表中的emp列添加主键约束。

04

添加非空约束

例如给name列添加非空约束,具体语句:alter table employee1 modify name not null

05

添加唯一性约束

添加唯一性约束之后该字段中不能包含重复的值,主要作用是在保证主键列外,其他列值的唯一性。具体语句如下,给job添加唯一性约束:alter table employee1 add constraint un_job unique(job)。

06

添加外连接

外连接就是在父表中的一列被子表引用,而且父表中的这一列一般是其主键列,例如将employee2中的emp列添加employee2中的emp的外键约束。alter table employee2 add constraint fk_empforeign key(emp) references employee1(emp)

07

添加检查约束

检查约束是通过检查输入到表中的数据值来维护域的完整性的,不符合条件的约束是不能被输入到表中的。例如给employee1中的dep添加检查约束,语句如下:alter table employee1 add constraint ch_dep check(dep<10000)

08

删除表

如果你创建表使用完了,或者有错误,删除表的语句如下:drop table employee1 cascade constraint删除表employee1.

特别提示

注意中英文标点符号的使用


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

原文地址: http://outofmemory.cn/bake/11951334.html

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

发表评论

登录后才能评论

评论列表(0条)

保存