• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

sql完整性约束有哪些

mysql 搞代码 4年前 (2022-01-09) 16次浏览 已收录 0个评论

sql完整性约束有:非空约束,唯一约束,主键约束,外键约束,条件约束等

完整性约束是保证用户所做的修改不会破坏数据的一致性,是保护数据正确性和相容性的一种手段。

常见的5种约束:

NOT NULL:非空约束C,指定的列不允许为空值

UNIQUE:唯一约束U,指定的列中没有重复值,或该表中每一个值或者每一组值都将是唯一的

PRIMARY KEY:主键约束P,唯一的标识出表的每一行,且不允许空值,一个表只能有一个主键约束

FOREIGN KEY:外键约束R,一个表中的列引用了其它表中的列,使得存在依赖关系,可以指向引用自身的列

CHECK:条件约束C,指定该列是否满足某个条件

非空约束 NK

create table member(    mid number,        name varchar2(200) not null    );

插入空报错:

SQL> insert into member(mid,name) values(1,null);*第 1 行出现错误:ORA-01400: 无法将 NULL 插入 ("SCO<div>本文来源gaodai.ma#com搞#代!码网_</div>TT"."MEMBER"."NAME")

唯一约束 UK

drop table member purge;create table member(    mid number,    name varchar2(200) not null,    email varchar2(50) unique    );

插入报错

SQL> insert into member(mid,name,email) values (1,'scott','[email protected]');

已创建 1 行。

SQL> insert into member(mid,name,email) values (2,'jack','[email protected]');insert into member(mid,name,email) values (2,'jack','[email protected]')*第 1 行出现错误:ORA-00001: 违反唯一约束条件 (SCOTT.SYS_C0010891)

给约束指定名字

这错误并没有像之前的非空约束那样,准确告诉用户哪个字段出现了问题,我们可以给这个约束指定一个名字

create table member(    mid number,    name varchar2(200) not null,    email varchar2(50),        constraint uk_email unique(email)    );

主键约束 PK

主键约束=非空约束+唯一约束

create table member(    mid number,    name varchar2(200) not null,    email varchar2(50),        constraint pk_number primary key(mid),        constraint uk_email unique(email)    );

插入错误的数据报错:

SQL> insert into member(mid,name,email) values (1,'jack','[email protected]');

已创建 1 行

SQL> insert into member(mid,name,email) values (1,'jack','[email protected]');insert into member(mid,name,email) values (1,'jack','[email protected]')*第 1 行出现错误:ORA-00001: 违反唯一约束条件 (SCOTT.PK_NUMBER)

检查约束 CK

create table member(   mid number,       name varchar2(200) not null,       age number check(age between 0 and 200),       sex varchar2(10),       email varchar2(50),       constraint pk_number primary key(mid),       constraint uk_email unique(email),       constraint ck_sex check(sex in('男','女'))       );

插入错误数据报错:

SQL> insert into member(mid,name,age,sex,email) values (1,'Jack','300','无','[email protected]');insert into member(mid,name,age,sex,email) values (1,'Jack','300','无','[email protected]')*第 1 行出现错误:ORA-02290: 违反检查约束条件 (SCOTT.CK_SEX)

主外键约束 FK

create table member(    mid number,    name varchar2(200) not null,        constraint pk_mid primary key(mid)    );    create table advice(       adid number,       content clob not null,       mid number,              constraint pk_adid primary key(adid),              constraint fk_mid foreign key(mid) references member(mid)       );

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:sql完整性约束有哪些

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址