加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

Oracle的建表束缚

发布时间:2021-01-11 16:17:58 所属栏目:站长百科 来源:网络整理
导读:当我们建设表的时辰,同时可以指定所插入数据的一些法则,好比说某个字段不能为空值,某个字段的值(好近年数)不能小于零等等,这些法则称为束缚。束缚是在表上逼迫执行的数据校验法则. Oracle 支持下面五类完备性束缚: NOT NULL 非空 UNIQUE Key 独一键 PR

当我们建设表的时辰,同时可以指定所插入数据的一些法则,好比说某个字段不能为空值,某个字段的值(好近年数)不能小于零等等,这些法则称为束缚。束缚是在表上逼迫执行的数据校验法则.
Oracle 支持下面五类完备性束缚:
NOT NULL 非空
UNIQUE Key 独一键
PRIMARY KEY 主键
FOREIGN KEY 外键
CHECK 自界说搜查束缚

?

Oracle行使SYS_Cn名目定名束缚,也可以由用户定名
建设束缚的机缘
在建表的同时建设
建表后建设
束缚从浸染上分类,可以分成两大类:
表级束缚:可以束缚表中的恣意一列或多列。可以界说除了Not Null以外的任何束缚。
列级束缚:只能束缚其地址的某一列。可以界说任何束缚。


束缚简介
束缚用于确保数据库数据满意特定的贸易逻辑可能企业法则,假如界说了束缚,而且数据不符
合束缚,那么DML操纵(INSERT、UPDATE、DELETE)将不能乐成执行。束缚包罗NOT NULL、UNIQUE、PRIMARY KEY、FOREING KEY 以及CHECK等五种范例
界说束缚
列级束缚:
column [CONSTRAINT constraint_name] constraint_type
表级束缚:
column,...,
[CONSTRAINT constraint_name] constraint_type (column,...)
1.界说NOT NULL束缚
NOT NULL 束缚只能在列级界说,不能在表级界说
例:
CREATE TABLE emp01(
eno INT NOT NULL,
name VARCHAR2(10) CONSTRAINT nn_name2 NOT NULL,
salary NUMBER(6,2)
);

?

列级束缚: 从情势上看,在每列界说完后顿时界说的束缚,在逗号之前就界说好了。
carete table parent(c1 number primary key );
create table child (c number primary key,c2 number references parent(c1));

表级束缚: 从情势上可以看出与列级束缚的区别了吧。
create table child( c number,c2 number,primary key (c2),foreign key(c2) references parent(c1));


1主键束缚( PRIMARY KEY)

主键束缚是数据库中最重要的一种束缚。在相关中,主键值不举动空,也不应承呈现一再,即相关要满意实体完备性法则。
主键从成果上看相等于非空且独一
一个表中只应承一个主键
主键是表中可以或许独一确定一个行数据的字段
主键字段可所以单字段可能是多字段的组合
Oracle为主键建设对应的独一性索引

提议定名
束缚_表名_字段 可以担保独一性。 假如太长,可用缩写。
统一字段可以有多个束缚,可是束缚之间不要斗嘴


主键可用下列两种情势之必然义
主键子句
在表的界说中加上如下子句 primary key(列)
主键短语
在主属性的界说之后加上primary key字样。
上述情势Oracle会自动定名束缚,可本身给束缚起名
create table t3(
id number(4),
constraint t3_pk primary key(id)
)

?

create table sxtstu01(
sid number(10) primary key,
sname varchar2(50) not null
)

create table sxtstu02(
sid number(10),
sname varchar2(50) not null,
constraint pk_sid_test primary key(sid)
)

create table sxtstu03(
sid number(10),
sno varchar2(10),
constraint pk_sid_test01 primary key(sid,sno)
)

?

2.非空束缚(NOT NULL)
确保字段值不应承为空
只能在字段级界说

CREATE TABLE employees(
employee_id NUMBER(6),
name VARCHAR2(25) NOT NULL,
salary NUMBER(8,2),
hire_date DATE CONSTRAINT emp_hire_date_nn NOT NULL
)


create table sxtstu04(
sid number(10),
birthday date constraint nn_sxtstu04_birthday not null,
constraint pk_sxtstu04_sid primary key(sid)
)


3.独一性束缚(UNIQUE)
独一性束缚前提确保地址的字段可能字段组合不呈现一再值
独一性束缚前提的字段应承呈现空值
Oracle将为独一性束缚前提建设对应的独一性索引
CREATE TABLE employees(
id NUMBER(6),
name VARCHAR2(25) NOT NULL UNIQUE,
email VARCHAR2(25),
hire_date DATE NOT NULL,
CONSTRAINT emp_email_uk UNIQUE(email)
);


4.CHECK 束缚

Check束缚用于对一个属性的值加以限定
在check中界说搜查的前提表达式,数据必要切合配置的前提
create table emp3
( id number(4) primary key,
age number(2) check(age > 0 and age < 100),
salary number(7,
sex char(1),
constraint salary_check check(salary > 0)
)
在这种束缚下,插入记录或修改记录时,体系要测试新的记录的值是否满意前提


5.外键束缚( FOREIGN KEY)

外键是表中的一个列,其值必需在另一表的主键可能独一键中列出
作为主键的表称为“主表”,作为外键的相关称为“依靠表”
外键参照的是主表的主键可能独一键
对付主表的删除和修改主键值的操纵,会对依靠相关发生影响,以删除为例:当要删除主表的某个记录(即删除一个主键值,那么对依靠的影响可采纳下列3种做法:
RESTRICT方法:只有当依靠表中没有一个外键值与要删除的主表中主键值相对应时,才可执行删除操纵。
CASCADE方法:将依靠表中全部外键值与主表中要删除的主键值相对应的记录一路删除
SET NULL方法:将依靠表中全部与主表中被删除的主键值相对应的外键值设为空值
FOREIGN KEY (DEPTNO) REFERENCES DEPT(DEPTNO)
[ON DELETE [CASCADE|SET NULL]] 如省略on短语,缺省为第一中处理赏罚方法。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读