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));
Oracle学习——第五讲(约束)相关推荐
- ORACLE学习笔记-关于索引和约束
/*** 约束 ***/ * 如果某个约束只作用于单独的字段,即可以在字段级定义约束,也可以在表级定义约束,但如果某个约束作用于多个字段, 必须在表级定义约束 * 在定义约束时可以通过CONSTRAI ...
- ORACLE学习笔记 索引和约束
/*** 约束 ***/ * 如果某个约束只作用于单独的字段,即可以在字段级定义约束,也可以在表级定义约 束,但如果某个约束作用于多个字段, 必须在表级定义约束 * 在定义约束时可以通过CONST ...
- oracle字段加约束,Oracle数据库的字段约束创建和维护示例
创建Oracle数据库的字段约束: 非空约束 唯一约束 对字段的取值的约束 默认值 外键约束 create table tab_class( class_id number primary key, ...
- Oracle学习系列1-7
Oracle学习系列1 两个服务必须启动: OracleOraDb10g*TNListener 和 OracleService*** 使用sqlplusw先进行环境的设置 set linesize 3 ...
- Oracle学习-08.09
Oracle学习 第一章 Oracle数据库概述 1.2 数据库基本术语 数据库 数据库是位于计算机存储设备上存放数据的仓库 数据库管理系统(DBMS) 数据库系统中对数据进行管理的软件系统,踏实数据 ...
- 开辟ORACLE 学习之路,努力的去成为DBA
开辟ORACLE 学习之路,努力的去成为DBA IT的日子让我奋斗的时候,忘了下班:高兴时候,和朋友聚聚餐,出去游玩一下:迷茫时候,让自己踌躇满志,犹豫不前~ 总体来说IT的日子自己还要坚持下去,一步 ...
- oracle外键约束强行insert,oracle 禁用外键约束
1.ORACLE数据库中的外键约束名都在表user_constraints中可以查到.其中constraint_type='R'表示是外键约束. 2.启用外键约束的命令为:alter table ta ...
- 怎样学好Oracle子查询,Oracle学习(六):子查询
Oracle学习(6):子查询 子查询 为何要用子查询 SQL> --查询工资比SCOTT高的员工信息 SQL> --1. 知道SCOTT的工资 SQL> select sal fr ...
- oracle两表链接序列跳序,Oracle学习之 序列(Sequence)
Oracle学习之 序列(Sequence) [Oracle学习]之 序列(Sequence) oracle文档:https://docs.oracle.com/cd/B28359_01/server ...
- oracle 主键_Oracle约束详解
一 约束的定义 约束是强加在表上的规则或条件.确保数据库满足业务规则.保证数据的完整性.当对表进行DML或DDL操作时,如果此操作会造成表中的数据违反约束条件或规则的话,系统就会拒绝执行这个操作.约束 ...
最新文章
- [python] 溜了,溜了,七牛云图片资源批量下载 自建图床服务器
- Java在使用时需要注意那些问题_java使用String.split方法时要注意的问题
- php获取访问者ip地址汇总,php获取访问者IP地址汇总_PHP
- java中去除文件名的后缀名_Java程序在最后一个点后去除其扩展名的文件名
- 应用系统开发--银行系统
- excel 超链接修改失败解决办法
- 一个互联网研发团队的标准配置
- python 面试题 aac caa相似_Python 面试实训 100 题,哪道难住了你?| 文末附答案
- java oop 题目_JavaOOP试题JavaOOP试题.doc
- html放大镜原理,简单的js放大镜功能的实现
- 我的世界服务器修改皮肤指令,我的世界怎么拿指令来改皮肤的 | 手游网游页游攻略大全...
- 关于偶的专业-信息工程
- 互联网+国家战略-整理
- MBR格式转GPT格式阿里云云盘在线扩容
- 百度以图搜图API介绍
- 深度学习入门笔记之DenseNet网络
- 享元模式--大量的飞龙
- RDMA入门——RDMA学习笔记(一)
- 利用ArcGIS结合DEM提取小流域单元
- 使用 elasticsearch、LogStash、Kibana完成网站流量的监控系统(基于nginx的访问日志实现流量监控)
热门文章
- 安装VMware提示“此产品安装程序不支持降级“
- 一些文字游戏....
- 微博营销的价值与注意点
- [Qualcomm][MSM8909]APQ8009基线上编写一个OpenGl测试程序
- 【OpenFOAM】学习module1
- Excel如何从复杂文本中提取数字
- python——【2】gzip模块二进制格式读取压缩文件
- 大学上计算机课要准备笔记本电脑吗,大一新生需要买笔记本电脑吗 有必要吗...
- [爬虫项目]猫眼电影TOP100
- 大秦帝国------令人神往的时代