Oracle学习——第五讲(约束)

Oracle 通用表

/*

emp 表                             dept  部门表                 salgrade 表

empno 员工编号               deptno  部门编号          grade  工资等级

ename  员工姓名             dname  部门名称          losal    工资范围下限

job       职位                      loc 工作地点                 hisal   工资范围上限

mgr     经理编号

hiredate  入职日期

sal        薪金

comm  奖金

deptno  部门编号

*/

Oracle实例演练

--约束:

--保证数据完整性的规则,设置在单个字段或者多个字段组合上,写入这些字段的

--数据必须符合约束的限制

--约束类型

--1、NOT NULL:非空约束,指定某列的所有行数据不能包含空值

--2、UNIQUE    :唯一性约束,指定列或者列的组合 的所有行数据必须唯一

--3、PRIMARY KEY:主键约束,表的每行的唯一性标识,

                               --指定列或者列的组合 的所有行数据必须唯一

--4、FOREIGN KEY:外键约束,在列及引用列上建立的一种强制依赖关系

--5、CHECK:检查性约束,在列上指定一个必须满足的条件

--除了NOT NULL约束外,建议给其它约束起名字,命名规则为:表名_列名_约束类型。

--NOT NULL约束只能定义在列级别上,联合主键或联合唯一性约束只能定义在表级别上,

--其它约束既可以定义成表级别,也可以定义成列级别;    

--CONSTRAINT:约束的关键字;constraint_name:约束名字;constraint_type:约束的类型;  

1、创建非空约束

--NOT NULL

CREATE TABLE emp_nn(

empno NUMBER(4),

ename VARCHAR2(10) NOT NULL,   --非空约束

job        VARCHAR2(9),

mgr       NUMBER(4),

hiredate DATE,

sal         NUMBER(7, 2),

comm  NUMBER(7,2),

deptno NUMBER(7,2) NOT NULL );   --非空约束     

2、UNIQUE 约束

--唯一约束

--用来确保表中的某一列或者某几列组合的所有行数据必须唯一,

--定义UNIQUE约束的列 (或列组合) 被称为唯一键。  

--每个表可以有多个为UNIQUE约束。

--①UNIQUE约束定义在列一级

CREATE TABLE deptment(

deptno  number(2),

dname VARCHAR2(14) CONSTRAINT dept_dname_uk UNIQUE,

loc        VARCHAR2(13));

--②UNIQUE约束定义在表一级   

CREATE TABLE deptment(

deptno  number(2),

dname VARCHAR2(14),

loc        VARCHAR2(13),

 CONSTRAINT dept_dname_uk UNIQUE(dname));

 3、PRIMARY KEY约束

--主键约束,用来确保表中的某一列或者某几列组合的所有行数据必须唯一,

               ---并且确保作为主键一部分的列不能包含空值;

--每个表只能创建一个主键约束。

--①可以定义在列一级

CREATE TABLE deptment(

deptno        NUMBER(2) CONSTRAINT dept_deptno_pk  PRIMARY KEY,

 dname       VARCHAR2(14),

  loc             VARCHAR2(13),

  CONSTRAINT dept_dname_uk UNIQUE (dname));

--②可以定义在表一级

CREATE TABLE deptment(

deptno         NUMBER(2),

dname         VARCHAR2(14),

loc                VARCHAR2(13),

CONSTRAINT dept_dname_uk UNIQUE(dname),

CONSTRAINT dept_deptno_pk PRIMARY KEY(deptno));

4、Foreign Key约束

--外键约束,外键确保了相关联的两个字段的关系:

--外键列的值必须在引用列值的范围内,或者为空;

--外键参照的是列必须是主键或者唯一键;

--主键表主键值被外键表参照时,主键表记录不允许被删除。

--定义在列一级

CREATE TABLE emp_fk1(

empno   NUMBER(4),

ename   VARCHAR2(10)  NOT NULL,

job          VARCHAR2(9),

deptno    NUMBER(7, 2) NOT NULL,

CONSTRAINT  emp_deptno_fk FOREIGN KEY(deptno)  REFERENCES dept (deptno),

sal           NUMBER(7,2));

--也可定义在表一级

CREATE TABLE emp_fk2(

empno NUMBER(4),

ename VARCHAR2(10) NOT NULL,

deptno VARCHAR2(7,2) NOT NULL,

CONSTRAINT emp_deptno_fk FOREIGN KEY(deptno) REFERENCES dept(deptno)

                         ON DELETE  CASCADE);

--FOREIGN KEY: 定义在子表的列中

--REFERENCES: 引用列所在的父表

--注:ON DELETE CASCADE:当父表中的行被删除时,子表中相依赖的行同时被删除;

--         ON DELETE SET NULL:当父表的行被删除时,子表中相依赖的行被转换为空值;

--        无ON DELETE CASCADE或ON DELETE SET NULL选项,

--        当附表中的行被删除时,如果父表中的行在子表中被引用,则提示不能被删除。

5、CHECK约束

--检查性约束,确保某个列的所有行数据都必须满足的条件

--sal NUMBER(8,2) CONSTRAINT dept_sal_min CHECK (sal> 0)

--–要求sal字段的所有行数据必须大于0

--可以定义为列一级

CREATE TABLE emp_fk3(

empno    NUMBER(4),

ename     VARCHAR2(10) NOT NULL,

deptno     NUMBER(7,2),

CONSTRAINT emp_deptno_ck CHECK(deptno BETWEEN 10 AND 99),

sal             NUMBER(7,2));

--可以定义为表一级

CREATE TABLE emp_fk4(

empno NUMBER(4),

ename VARCHAR2(10) NOT NULL,

deptno NUMBER(7,2) NOT NULL,

sal         NUMBER(7,2),

CONSTRAINT emp_deptno_ck CHECK(deptno BETWEEN 10 AND 99));

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值