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

1 目标

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

2 什么是唯一性约束?

唯一性约束指表中一个字段或者多个字段联合起来可以唯一标识一条记录的约束。

联合字段中,可以包括空值。

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

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

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

  • 主键(Primary Key):全部组成主键的列都不能包括空值。

  • 唯一性约束(Unique Constraint):假设唯一性约束由多列组成,当中的部分列能够包括空值。
  • Oracle中不容许在同样列上既创建主键又创建唯一性约束。

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

1)语法:

CREATE TABLE table_name
(
column1 datatype null/not null,
column2 datatype null/not null,
...
CONSTRAINT constraint_name UNIQUE (column1, column2,...,column_n)
);

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

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)基于多列的唯一性约束演示样例:

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)语法

ALTER TABLE table_name
ADD CONSTRAINT constraint_name
UNIQUE (column1, column2, ... , column_n);

2)演示样例准备,先创建表

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)基于单列的唯一性约束

alter table tb_supplier
add constraint tb_supplier_u1
unique (supplier_id);

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

alter table tb_products
add constraint tb_products_u1
unique (product_id,product_name);

6 禁用唯一性约束

1)语法:

ALTER TABLE table_name
DISABLE CONSTRAINT constraint_name;

2)演示样例:

ALTER TABLE tb_supplier
DISABLE CONSTRAINT tb_supplier_u1;

7 使用唯一性约束

1)语法:

ALTER TABLE table_name
ENABLE CONSTRAINT constraint_name;

2)演示样例:

ALTER TABLE tb_supplier
ENABLE CONSTRAINT tb_supplier_u1;

8  删除唯一性约束

1)语法:

ALTER TABLE table_name
DROP CONSTRAINT constraint_name;

2)演示样例:

ALTER TABLE tb_supplier DROP CONSTRAINT tb_supplier_u1;
ALTER TABLE tb_products DROP CONSTRAINT tb_products_u1;

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

假设您们在尝试的过程中遇到什么问题或者我的代码有错误的地方,请给予指正,很感谢!

联系方式:david.louis.tian@outlook.com

版权@:转载请标明出处!

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

Oracle之唯一性约束(UNIQUE Constraint)使用方法具体解释的更多相关文章

  1. mybatis批量插入oracle时报错:unique constraint (table name) violated

    mybatis批量插入oracle时报错:unique constraint (table name) violated,是因为插入的集合中有两条相同唯一约束的数据.

  2. 删除唯一性约束unique

    删除唯一性约束 语法如下: alter table tableName drop index key_name;#删除唯一性约束,实际就是删除索引 drop index key_name on tab ...

  3. [ORACLE错误]ORA-00001: unique constraint (...) violated并不一定是数据冲突

    遇到这种情况,重建完表和索引后,终于正常INSERT了.  prompt Importing table COUPON_ACTIVITYset feedback offset define offin ...

  4. Navicat for Oracle设置唯一性和递增序列

    [数据库] Navicat for Oracle基本用法图文介绍 一. 设置唯一性 参考文章:Oracle之唯一性约束(UNIQUE Constraint)用法详解唯一性约束英文是Unique Con ...

  5. Oracle 数据完整性与约束机制

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

  6. Oracle 唯一 约束(unique constraint) 与 索引(index) 关系说明

    一. 官网对Unique Constraints说明 http://download.oracle.com/docs/cd/E11882_01/server.112/e16508/datainte.h ...

  7. MySQL 表字段唯一性约束设置方法unique

    1. 建表时加上唯一性约束 CREATE TABLE `t_user` ( `Id` int(11) NOT NULL AUTO_INCREMENT, -- 自增 `username` varchar ...

  8. [Oracle]约束(constraint)

    (一)约束的概念 在Oracle中,可以通过设置约束来防止无效数据进入表中.Oracle一共有5种约束: 主键约束(primary key) 外键约束(foreign key) 唯一性约束(uniqu ...

  9. Oracle中主键、外键、索引、序列、唯一性约束的创建

    1.主键的创建 方法一:直接在sql语句中声明字段主键约束 create table table_name (id type[length] constraint pk_name primary ke ...

随机推荐

  1. 【Android】7.1 布局控件常用的公共属性

    分类:C#.Android.VS2015: 创建日期:2016-02-10 一.简介 Android应用程序中的布局控件都是容器控件,用于控制子元素的排列和放置方式.Android提供的布局控件有: ...

  2. 黑马day16 jquery案例演示

    案例一: <html> <head> <meta http-equiv="Content-Type" content="text/html; ...

  3. 黑客编程教程(十五)HTTP代理

    #include <stdio.h> #include <winsock2.h> #define MAXBUFLEN 20480 #define HTTPADDLEN 50 # ...

  4. 递归查询SQL语句

    USE [DB] GO /****** Object: View [dbo].[v_menus] Script Date: 02/24/2014 15:55:45 ******/ SET ANSI_N ...

  5. ORACLE 新增记录 & 更新记录

    开发中偶尔需要新增一条记录或修改一条记录的几个字段,语法中有微妙的区别. 由于不是经常写,久不写就忘记了,而又要重新查找或调试. 新增记录语法: --新增记录(仿照已有表记录)INSERT INTO ...

  6. wp中的双向绑定

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; usin ...

  7. Clipboard获取内容C#

    一.获取文本  textBox1.Text = Clipboard.GetData("Text").ToString(); 二.获取图像             pictureBo ...

  8. warning: assignment from incompatible pointer type [enabled by default]

    kernel 编译产生这个警告的原因是 不兼容指针类型的赋值 这个原因很有可能是因为返回值和正在接受这个指针类型名不相同. // vim arch/arm/mach-omap2/usb-host.c ...

  9. JavaScrip——练习(做悬浮框再进一步:悬浮窗后缀悬浮窗——用this.className)

    对悬浮窗进一步改进: 用this.className 可以省略script <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitio ...

  10. win8.1 win10存储设备和驱动器分开显示

    win10同理如下: Windows 8.1不仅将资源管理器重命名为文件管理器,还将用户熟悉的“计算机/我的电脑”改名为“这台电脑”,同时还将原先的布局进行了重构,于是用户最终看到的是这样一个界面: ...