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.
特别提示注意中英文标点符号的使用
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)