为了维护数据库数据的完整性,在创建表时需要定义一些约束,Oracle中的约束类型包括:非空约束、主键约束、唯一约束、外键约束等。在对约束操作前,我们可以通过表名查询它具有的约束信息。

表约束

SELECT table_name, owner,constraint_name,table_name,r_owner,r_constraint_name
FROM all_constraints
WHERE table_name = 'T_TEST1';

列约束
SELECT *
FROM ALL_CONS_COLUMNS
WHERE table_name = 'T_TEST1'
AND    owner='SCOTT';

1 非空约束

非空约束限制某列必须有值,不能为NULL,NULL是不存在的值,它既不是数字0也不是空字符串,而是不存在,未知的情况。定义非空约束非常简单:

create table t_test1

(

  id number not null, -- 非空约束

  name varchar2(50)

);

也可以单独设置某列为非空或者为空

alter table t_test1 modify name not null/null;

2 主键约束

主键(primary key)约束用于唯一标识表中的每一行记录。主键约束由一列组成时,被称为行级约束;由两列或者更多列组成时,称为表级约束。 

create table t_test1

(

  id number not null, -- 非空约束

  name varchar2(50),

  constraint PK_ID primary key(id) --主键约束

);

单独设置主键约束

alter table t_test1 add constraint PK_ID primary key(id);

删除主键约束

alter table t_test1 drop constraint PK_ID;

3 唯一性约束

唯一性约束(unique)强制要求所在列不能有重复值,它的定义比主键约束弱,允许列有空值(NULL)。用于保证除主键外其他列值的唯一性。

create table t_test1

(

  id number not null, -- 非空约束

  name varchar2(50) constraint uk_name unique  -- constraint un_name unique(name)

);

单独设置唯一性约束

alter table t_test1 add constraint uk_name unique(name);

4 外键约束

外键约束使用两个或者以上的表进行关联,表1引用表2的某列或者几列,表1的列在表2必须存在,且表2的列必须为主键约束或者唯一性约束。

create table t_department
(
  depno number not null primary key,
  depname varchar2(50) not null
);

create table t_test1
(

  id number not null,
  depno number not null,
  name varchar2(50)
);

alter table t_test1 add constraint FK_depno foreign key(depno) references t_department(depno);

5 禁用激活约束

alter table t_test1 disable constraint FK_DEPNO;

alter table t_test1 enable constraint FK_DEPNO;

6 删除约束

alter table t_test1 drop constraint FK_DEPNO;

  

Oracle 数据完整性与约束机制的更多相关文章

  1. Oracle连接数过多释放机制

    Oracle连接数过多释放机制  sqlplus /nolog   打开sqlplus          connect /as sysdba    使用具有dba权限得用户登陆oracle      ...

  2. 改写了禁用或启用oracle数据库的约束的存储过程

    改写了网上某位大侠(最开始的源头是哪位没记住)写的禁用或启用oracle数据库所有约束的存储过程,增加了异常控制,以使发生异常时也可以执行下去. –调用过程: 执行前先 set serveroutpu ...

  3. Oracle E-Business Suite并发处理机制(Current Processing)

    2012年写过一篇关于Oracle E-Business Suite并发管理器的文章,回头看之前总结的内容还是比较单薄,很多点没说到,最近在看这块的内容,索性再写一篇稍微完整的文章来. Oracle ...

  4. oracle中,约束、表名、Index等的名称长度限制最大只能30个字符

    oracle中,约束.表名.Index等的名称长度限制最大只能30个字符

  5. Oracle表级约束和列级约束

    Oracle表级约束和列级约束 1. 表级定义约束 指的是在定义完一个表所有列之后,再去定义所有相关的约束. 注意:not null 约束只能在列级上定义. 2. 列级定义约束 指的是在定义一个表的每 ...

  6. InnoDB的约束机制

    数据完整性 关系型数据库系统和文件系统的一个不同点是,关系数据库本身能保证存储数据的完整性,不需要应用程序的控制,而文件系统一般需要在程序端进行控制.几乎所有的关系型数据库都提供了约束(constra ...

  7. Oracle 外键约束

    本文讨论一下Oracle中的外键约束问题,以及和DB2中的小不同. 首先创建测试环境. -- 创建测试主表. ID 是主键. CREATE TABLE test_main ( id INT, valu ...

  8. Oracle事务和锁机制

    事务 1. 说明 一组SQL,一个逻辑工作单位,执行时整体修改或者整体回退. 2.事务相关概念 1)事务的提交和回滚:COMMIT/ROLLBACK 2)事务的开始和结束 开始事务:连接到数据库,执行 ...

  9. Oracle 唯一 索引 约束 创建 删除

    http://www.blogjava.net/lukangping/articles/340683.html/*给创建bitmap index分配的内存空间参数,以加速建索引*/ show para ...

随机推荐

  1. BASH的保护性编程技巧

    BASH的保护性编程技巧   shell常用逻辑判断 -b file 若文件存在且是一个块特殊文件,则为真 -c file 若文件存在且是一个字符特殊文件,则为真 -d file 若文件存在且是一个目 ...

  2. node-images Windows 64-bit with Unsupported runtime 错误解决办法 及 node 历史版本下载

    在做项目的时候下载的最新的10.16[2019.6.12]版本,出现了模块不兼容的问题[node-images]. 在git上发现了相同问题 https://github.com/zhangyuanw ...

  3. IAP技术原理

    目录 IAP技术原理 更新记录 IAP与ISP的概念及原理 ISP简介 ISP原理 IAP简介 IAP原理 IAP优势 IAP的设计 1.程序启动流程 2.中断向量表的重定位 3.IAP跳转APP函数 ...

  4. jenkins操作TreeView,展开合并

    双击treeview 双击选中的部分,使treeview展开合并 Opt() #include <GUIConstantsEx.au3> #include <GuiTreeView. ...

  5. LeetCode——全排列

    给定一个没有重复数字的序列,返回其所有可能的全排列. 示例: 输入: [1,2,3]输出:[  [1,2,3],  [1,3,2],  [2,1,3],  [2,3,1],  [3,1,2],  [3 ...

  6. 51. N-Queens (JAVA)

    The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens ...

  7. pamamiko的学习笔记

    pamamiko的学习笔记 Paramiko包含两个核心组件,一个为SSHClient类,另一个为SFTPClient类, 一,paramiko的连接有两种方式,一种是通过paramiko.SSHCl ...

  8. zencart只有购买过此产品的客户才能评价产品

    当前登录的客户买过此产品时,才显示评价按钮: <?php $rev_query = "select count(*) as count from orders o ,orders_pr ...

  9. 2019.12.9java公文流转系统

    自己来写这个系统真是没有什么思路.就弄了个登陆界面,在数据库建了个表,其它的代码一直有错误,登陆不进去.

  10. LightOJ-1079-Just another Robbery(概率, 背包)

    链接: https://vjudge.net/problem/LightOJ-1079#author=feng990608 题意: As Harry Potter series is over, Ha ...