Oracle | PL/SQL唯一索引(Unique Constraint)用法

1 目标

用示例演示如何创建、删除、禁用和使用唯一性约束。

2 什么是唯一性约束?

唯一性约束指表中一个字段或者多个字段联合起来能够唯一标识一条记录的约束。联合字段中,可以包含空值。

注:在Oracle中,唯一性约束最多可以有32列。

唯一性约束可以在创建表时或使用ALTER TABLE语句创建。

3 唯一性约束和主键的区别

主键(Primary Key):所有组成主键的列都不能包含空值。唯一性约束(Unique Constraint):如果唯一性约束由多列组成,其中的部分列可以包含空值。Oracle中不容许在相同列上既创建主键又创建唯一性约束。

4 创建表时定义唯一性约束

1)语法:

?
1
2
3
4
5
6
7
CREATE TABLE table_name
(
    column1 datatype null/not null,
    column2 datatype null/not null,
    ...
    CONSTRAINT constraint_name UNIQUE (column1, column2,...,column_n)
);

2)基于单列的唯一性约束示例:

?
1
2
3
4
5
6
7
create table tb_supplier
(
  supplier_id          number not null
 ,supplier_name        varchar2(50)
 ,contact_name         varchar2(50)
 ,CONSTRAINT tb_supplier_u1 UNIQUE (supplier_id)--创建表时创建唯一性约束
);

3)基于多列的唯一性约束示例:

?
1
2
3
4
5
6
7
8
create table tb_products
(
  product_id        number not null,
  product_name      number not null,
  product_type      varchar2(50),
  supplier_id       number,
  CONSTRAINT tb_products_u1 UNIQUE (product_id, product_name) --定义复合唯一性约束
);

5 使用ALTER TABLE语法创建唯一性约束

1)语法

?
1
2
3
ALTER TABLE table_name
ADD CONSTRAINT constraint_name
UNIQUE (column1, column2, ... , column_n);

2)示例准备,先创建表

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
drop table tb_supplier;
drop table tb_products;
create table tb_supplier
(
  supplier_id          number not null
 ,supplier_name        varchar2(50)
 ,contact_name         varchar2(50)
);
create table tb_products
(
  product_id        number not null,
  product_name      number not null,
  product_type      varchar2(50),
  supplier_id       number
);

3)基于单列的唯一性约束

?
1
2
3
alter table tb_supplier
add constraint  tb_supplier_u1
unique (supplier_id);

4)基于多列的唯一性约束

?
1
2
3
alter table tb_products
add constraint  tb_products_u1
unique (product_id,product_name);

6 禁用唯一性约束

1)语法:

?
1
2
ALTER TABLE table_name
DISABLE CONSTRAINT constraint_name;

2)示例:

?
1
2
ALTER TABLE tb_supplier
DISABLE CONSTRAINT  tb_supplier_u1;

7 使用唯一性约束

1)语法:

?
1
2
ALTER TABLE table_name
ENABLE CONSTRAINT constraint_name;

2)示例:

?
1
2
ALTER TABLE tb_supplier
ENABLE CONSTRAINT tb_supplier_u1;

8 删除唯一性约束

1)语法:

?
1
2
ALTER TABLE table_name
DROP CONSTRAINT constraint_name;

2)示例:

?
1
2
ALTER TABLE tb_supplier DROP CONSTRAINT tb_supplier_u1;
ALTER TABLE tb_products DROP CONSTRAINT tb_products_u1;

-----------------------------------------------------------------------------------

Oracle之唯一性约束(UNIQUEConstraint)用法详解相关推荐

  1. Oracle中游标Cursor基本用法详解

    这篇文章主要介绍了Oracle中游标Cursor基本用法详解,还是比较全面的,具有一定参考价值,需要的朋友可以了解下. 查询 SELECT语句用于从数据库中查询数据,当在PL/SQL中使用SELECT ...

  2. Oracle之外键(Foreign Key)用法详解(一)

    Oracle外键(Foreign Key)用法详解(一) 1.目标 演示如何在Oracle数据库中使用外键 2.什么是外键? 1)在Oracle数据库中,外键是用来实现参照完整性的方法之一.打个形象的 ...

  3. oracle clob 写入mongo,【Oracle】Varchar2/Blob/Clob用法详解

    数据库中提供了三种字段类型Varchar2.Blob和Clob用于存储字符串或二进制数据,其中Varchar2.Clob用于存储字符串数据,而Blob用于存储二进制数据. Varchar2采用单字节存 ...

  4. oracle的substr函数用法,Oracle的substr函数简单用法详解

    substr(字符串,截取开始位置,截取长度) //返回截取的字 substr('Hello World',0,1) //返回结果为 'H'  *从字符串第一个字符开始截取长度为1的字符串 subst ...

  5. oracle中的exists 和 not exists 用法详解

    from:http://blog.sina.com.cn/s/blog_601d1ce30100cyrb.html oracle中的exists 和 not exists 用法详解 (2009-05- ...

  6. oracle中取反_oracle正则表达式regexp_like的用法详解

    oracle正则表达式regexp_like的用法详解 更新时间:2013年06月13日 17:42:05   作者: 本篇文章是对oracle正则表达式regexp_like的用法进行了详细的分析介 ...

  7. Oracle数据泵备份与恢复 命令 expdp/impdp 用法详解

    Oracle数据泵备份与恢复 命令 expdp/impdp 用法详解 关于expdp和impdp     使用EXPDP和IMPDP时应该注意的事项: EXP和IMP是客户端工具程序,它们既可以在客户 ...

  8. Oracle Merge Into 的用法详解实例

    Oracle merge into 的用法详解实例 作用:merge into 解决用B表跟新A表数据,如果A表中没有,则把B表的数据插入A表: 语法: MERGE INTO [your table- ...

  9. oracle8i substr,Oracle中的INSTR,NVL和SUBSTR函数的用法详解

    Oracle中INSTR的用法: INSTR方法的格式为 INSTR(源字符串, 要查找的字符串, 从第几个字符开始, 要找到第几个匹配的序号) 返回找到的位置,如果找不到则返回0. 例如:INSTR ...

最新文章

  1. 关于CLR、CIL、CTS、CLS、CLI、BCL和FCL
  2. 盘外招无法击垮比特币现金(BCH)的意志
  3. Android Support Library 24.2.0 正式发布
  4. Apache部署网页-Ubuntu16.04
  5. mysql mysqlnd_利用mysqlnd_ms实现mysql读写分离
  6. STL容器的线程安全
  7. ASP.Net Telerik RadGrid动态生成表头
  8. JS 三级联动 下拉列表
  9. python or的用法_python and or用法详解
  10. Debian 中使用apt-get update 出现NO_PUBKEY 解决方法
  11. 运行 jar 文件_如何运行JAR文件
  12. 在c语言程序中整型常量不能表示的数制是,C源程序中不能表示的数制有哪些
  13. CAD2010安装→注册
  14. RMAN-06004、RMAN-20011
  15. 【历史上的今天】1 月 6 日:“互联网之子”的陨落;微软云服务先驱出生;世界上第一台 5G 笔记本
  16. Log4j2 JDBCAppender的使用
  17. 牛客网 SQL17 10月的新户客单价和获客成本
  18. 理性、抽丝剥茧地解决 Easypoi、poi 版本冲突问题,而不是无头苍蝇一样闷头百度、google 一顿搜
  19. 视频安防“上帝视角“的畅想
  20. arcgis使用arcpy计算土地利用LUCC变化转移矩阵、马尔科夫模型变化表,最好用的方法TabulateArea实现两期数据变化统计

热门文章

  1. $_SERVER[HTTP_HOST]和$_SERVER[SERVER_NAME]
  2. 【读书笔记】Java基础学习之目录
  3. 联合国超10万名员工记录遭泄露
  4. GitHub 发布 Octoverse 开源软件安全趋势报告(超详)
  5. 苹果iPhone XI新爆料:用了被小米当噱头的TOF技术
  6. 【laravel5.4】查询构造器对象与模型instance的互相换换
  7. JavaAgent学习笔记
  8. SFTP上传下载文件
  9. IOS --xcode删除Provisioning Profiles文件
  10. Scroll View 控件以Thumbnail的方式显示一个目录的全部图片,相似图片浏览器