新浪博客

关系型数据库里的完整性约束——constraint的一些用法总结

2016-05-15 19:43阅读:
探索者易冉

主要就是增加约束的
以下几种约束 、并 一一列举:
1.主键约束:
要对一个列加主键约束的话,这列就必须要满足的条件就是分空
因为主键约束:就是对一个列进行了约束,约束为(非空、不重复)
以下是代码 要对一个列加主键,列名为id,表名为emp

格式为:
alter table 表格名称 add constraint 约束名称 增加的约束类型 (列名)

例子:
alter table emp add constraint ppp primary key (id)

————————————————————————————————
2.check约束:
就是给一列的数据进行了限制
比方说,年龄列的数据都要大于20的
表名(emp) 列名(age)

格式:
alter table 表名称 add constraint 约束名称 增加的约束类型 (列名)

例子:
alter table emp add constraint xxx check(age>20)

______________________________________________________________________
3.unique约束:
这样的约束就是给列的数据追加的不重复的约束类型

格式:
alter table 表名 add constraint 约束名称 约束类型(列名)
比方说可以给ename列加个unique,让ename列的数据不重复
例子:
alter table emp add constraint qwe unique(ename)

————————————————————————————————
4.默认约束:
意思很简单就是让此列的数据默认为一定的数据

格式:
alter table 表名称 add constraint 约束名称 约束类型 默认值) for 列名

比方说:emp表中的gongzi列默认为10000
alter table emp add constraint jfsd default 10000 for gongzi

————————————————————————————————

5.外键约束:
这个有点难理解了,外键其实就是引用
因为主键实现了实体的完整性,
外键实现了引用的完整性,
应用完整性规定,所引用的数据必须存在!

其实就是个引用,
比方说一个表名称叫dept 里面有2列数据 一列是ID一列是ENAME
id:表示产品的编号
ename:表示产品的名称

另外一个表格名称是emp 里面有2列数据,一列是ID 一列是DID
id:表示用户号
did:表示购买的产品号

要让emp表中的did列去引用dept表中的id
可以用下面的方法
格式:
alter table 表名 add constraint 约束名称 约束类型 (列名) references 被引用的表名称(列名)

例子:
alter table emp add constraint jfkdsj foreign key (did) references dept (id)

但是我经过试验默认约束这样做并不好用,我有一个例子,像我这样建表就好用了:

属性
类型(长度)
默认值
约束
含义
STUNO
数值 (8)

主键
学号
SNAME
变长字符 (12)

非空
姓名
SEX
字符 (2)


性别
BIRTHDAY
日期


生日
EMAIL
变长字符 (20)

唯一
电子邮件
SCORE
数值 (5, 2)

检查
成绩
CLASSNO
数值 (2)

外键,关联到表CLASSCLASSNO主键
班级编号

Create table student(
stuno
number(8) ,
sname
varchar2(12) not null,
sex
char(2) default '
',
birthday
date,
email
varchar2(20),
score
number(5,2),
classno
number(2),
constraint student_stuno_pk primary key(stuno),
constraint student_email_uk unique(email),
constraint student_score_ck check(score>=0),
constraint student_classno_fk foreign key (classno) references class
(classno));

(内容转载自互联网,转载文章仅供学习交流使用,如涉及版权问题,请及时联系探索君)


博主简介:
易冉,探索者,助理工程师,现居杭州,目前主要关注领域:电力监测与电能计量、雷电监测与电磁防护、网络营销与数据分析……

和探索君聊聊 【先进营销策略与管理】社交大数据:营销革命的幕后英雄

点击这里给我发消息

我的更多文章

下载客户端阅读体验更佳

APP专享