您的当前位置:首页Oracle之唯一性约束(UNIQUE Constraint)使用方法具体解释

Oracle之唯一性约束(UNIQUE Constraint)使用方法具体解释

2023-11-11 来源:哗拓教育

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_nameADD CONSTRAINT constraint_nameUNIQUE (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_supplieradd constraint tb_supplier_u1unique (supplier_id);
    4)基于多列的唯一性约束
    alter table tb_productsadd constraint tb_products_u1unique (product_id,product_name);
    6 禁用唯一性约束1)语法:
    ALTER TABLE table_nameDISABLE CONSTRAINT constraint_name;
    2)演示样例:
    ALTER TABLE tb_supplierDISABLE CONSTRAINT tb_supplier_u1;
    7 使用唯一性约束1)语法:
    ALTER TABLE table_nameENABLE CONSTRAINT constraint_name;
    2)演示样例:
    ALTER TABLE tb_supplierENABLE CONSTRAINT tb_supplier_u1;
    8  删除唯一性约束1)语法:
    ALTER TABLE table_nameDROP 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)使用方法具体解释

    标签:字段   type   删除   过程   基于   ora   center   记录   禁用   

    小编还为您整理了以下内容,可能对您也有帮助:

    ORALCE如何根据条件设置唯一约束?

    在Oracle数据库中,可以使用唯一约束(Unique

    Constraint)来确保表中的某列或多列的值是唯一的。以下是根据条件设置唯一约束的一般步骤:

    1、创建表时定义唯一约束:在创建表时,可以使用CREATE

    TABLE语句来定义唯一约束。在列定义中使用UNIQUE关键字,标识要设置唯一约束的列。例如:

    2、使用ALTER TABLE语句添加唯一约束:如果表已经存在,可以使用ALTER TABLE语句来添加唯一约束。例如:

    3、设置唯一约束的条件:唯一约束默认会确保列的值是全表唯一的。如果你需要根据特定的条件设置唯一约束,可以在约束中添加WHERE子句,指定条件。例如:

    注意:唯一约束只允许每个列的值在表中是唯一的,但允许空值。如果你希望排除空值,可以在列定义中添加NOT NULL约束。

    需要注意的是,一旦设置了唯一约束,数据库会自动验证数据的唯一性,并在插入或更新操作中进行检查。如果违反唯一约束,将会引发错误并拒绝操作。

    请根据你的具体需求,将上述示例中的"表名"、"列名"、"约束名"和"条件"替换为相应的实际值,并确保在操作数据库之前备份数据。

    补充说明:

    要实现当 "lb" 的值是 "A类" 时,"djh" 是唯一的约束,可以使用以下步骤:

    1、创建表时定义唯一约束:在创建表时,可以使用 CREATE TABLE 语句来定义唯一约束。在列定义中使用 UNIQUE

    关键字来标识要设置唯一约束的列,并结合 WHERE 子句来指定约束条件。

    上述示例中,"task" 表包含 "djh" 和 "lb" 两列。唯一约束被应用于 "djh" 列,但只有当 "lb" 的值为 "A类"

    时才会生效。

    2、修改已存在的表:如果表已经存在,可以使用 ALTER TABLE 语句来添加唯一约束。

    上述示例中,"task" 表已经存在,使用 ALTER TABLE 语句添加了一个名为 "unique_djh" 的唯一约束,仅当 "lb" 的值为

    "A类" 时才会应用于 "djh" 列。

    需要注意的是,这种约束方式只会在满足条件的情况下应用唯一约束。如果 "lb" 的值不是 "A类",则不会应用唯一约束,可以允许 "djh"

    列中的重复值。

    请根据你的具体需求,将上述示例中的表名、列名和约束条件替换为实际的值,并确保在操作数据库之前备份数据。

    oracle 10g中唯一性约束用在什么场景?

    唯一性约束
    1) 唯一性约束所在的列允许空值,但是主键约束所在的列不允许空值。
    (2) 可以把唯一性约束放在一个或者多个列上,这些列或列的组合必须有唯一的值。但是,唯一性约束所在的列并不是表的主键列。
    (3) 唯一性约束强制在指定的列上创建一个唯一性索引。在默认情况下,创建唯一性的非聚簇索引,但是,也可以指定所创建的索引是聚簇索引。
    举例:员工表有主键,还有员工编号,员工编号都是唯一的,为了保证数据准确性,可以将员工编号设置为唯一性约束。

    oracle 10g中唯一性约束用在什么场景?

    唯一性约束
    1) 唯一性约束所在的列允许空值,但是主键约束所在的列不允许空值。
    (2) 可以把唯一性约束放在一个或者多个列上,这些列或列的组合必须有唯一的值。但是,唯一性约束所在的列并不是表的主键列。
    (3) 唯一性约束强制在指定的列上创建一个唯一性索引。在默认情况下,创建唯一性的非聚簇索引,但是,也可以指定所创建的索引是聚簇索引。
    举例:员工表有主键,还有员工编号,员工编号都是唯一的,为了保证数据准确性,可以将员工编号设置为唯一性约束。

    oracle主键、外键和主键约束、唯一约束如何理解,谢谢!

    外键相当于引用别人的主键。比如说你买房子,有房产证。那个房产证上要有你的身份证号。这里,你的身份证号就成了外键
    唯一性约束。就是强制性要求,在范围内(一张表)该列的值不能重复。是唯一的。主键必然是唯一的。
    e.gAB1x2x上表B列就不满足唯一性约束(x有两个),
    视图,就是在表之上抽取出来的。基于表,没有物理结构,不实际存储数据。
    比如你属于一个很大的家族x的成员。然后你,你父母又是一个小的单位y。

    oracle主键、外键和主键约束、唯一约束如何理解,谢谢!

    外键相当于引用别人的主键。比如说你买房子,有房产证。那个房产证上要有你的身份证号。这里,你的身份证号就成了外键
    唯一性约束。就是强制性要求,在范围内(一张表)该列的值不能重复。是唯一的。主键必然是唯一的。
    e.gAB1x2x上表B列就不满足唯一性约束(x有两个),
    视图,就是在表之上抽取出来的。基于表,没有物理结构,不实际存储数据。
    比如你属于一个很大的家族x的成员。然后你,你父母又是一个小的单位y。

    oracle数据库中怎么设置一个字段的唯一性?

    有两种方法:

    1. 将字段设置为主码(一个表只能定义一个主码):

    a.创建表时设置主码:语句格式

    create teable 表名( 字段名 类型及长度 PRIMARY KEY,...)

    b.创建完表后给表添加主码(前提条件:表无主码,且将要设置为主码的列必须不允许空值、已存在的值不允许重复)

    alter table 表名 add primary key(列名)

    2. 设置字段为唯一值约束(一个表可以定义多个唯一值约束):

    a. 创建表时设置唯一值约束

    create table 表名(... , 字段名 类型及长度 UNIQUE, ...)

    b.创建完表后添加唯一值约束(前提条件:将要设置唯一值约束的列已存在的值必须不重)

    alter table 表名 add unique(列名)

    Oracle中唯一约束和唯一索引的区别

      唯一性约束

    1) 唯一性约束用来*不受主键约束的列上的数据的唯一性,用于作为访问某行的可选手段,一个表上可以放置多个唯一性约束.
          2) 只要唯一就可以更新.
          3) 即表中任意两行在  指定列上都不允许有相同的值,允许空(NULL).
          4) 一个表上可以放置多个唯一性约束

      唯一性索引

    创建唯一索引可以确保任何生成重复键值的尝试都会失败。

      约束和索引, 前者是用来检查数据的正确性,后者用来实现数据查询的优化,目的不同。
      唯一性约束与唯一索引有所不同:
      1)创建唯一约束会在Oracle中创建一个Constraint,同时也会创建一个该约束对应的唯一索引。
      2).创建唯一索引只会创建一个唯一索引,不会创建Constraint。
      也就是说其实唯一约束是通过创建唯一索引来实现的。
      在删除时这两者也有一定的区别:
      删除唯一约束时可以只删除约束而不删除对应的索引,所以对应的列还是必须唯一的,
      而删除了唯一索引的话就可以插入不唯一的值。

    Oracle中唯一约束和唯一索引的区别

      唯一性约束

    1) 唯一性约束用来*不受主键约束的列上的数据的唯一性,用于作为访问某行的可选手段,一个表上可以放置多个唯一性约束.
          2) 只要唯一就可以更新.
          3) 即表中任意两行在  指定列上都不允许有相同的值,允许空(NULL).
          4) 一个表上可以放置多个唯一性约束

      唯一性索引

    创建唯一索引可以确保任何生成重复键值的尝试都会失败。

      约束和索引, 前者是用来检查数据的正确性,后者用来实现数据查询的优化,目的不同。
      唯一性约束与唯一索引有所不同:
      1)创建唯一约束会在Oracle中创建一个Constraint,同时也会创建一个该约束对应的唯一索引。
      2).创建唯一索引只会创建一个唯一索引,不会创建Constraint。
      也就是说其实唯一约束是通过创建唯一索引来实现的。
      在删除时这两者也有一定的区别:
      删除唯一约束时可以只删除约束而不删除对应的索引,所以对应的列还是必须唯一的,
      而删除了唯一索引的话就可以插入不唯一的值。

    请问如何设置Oracle唯一约束,忽略已有的重复值

    可以是让oracle 忽略就存在表内的重复值,并且新插入的数据遵守唯一约束.
    操作步骤
    1.检查当前oracle 唯一约束创建的索引的unique的列的值. 必须是not unique.
    2.如果是unique这要删除该约束重新建,新建的约束先disable,并且要deferred
    3.这时候检查oracle 唯一约束创建的索引的unique的列的值你会发现该索引时not unique
    4.接下来你就可以enable 该约束了
    明天天帖出示例,现在没时间

    请问如何设置Oracle唯一约束,忽略已有的重复值

    可以是让oracle 忽略就存在表内的重复值,并且新插入的数据遵守唯一约束.
    操作步骤
    1.检查当前oracle 唯一约束创建的索引的unique的列的值. 必须是not unique.
    2.如果是unique这要删除该约束重新建,新建的约束先disable,并且要deferred
    3.这时候检查oracle 唯一约束创建的索引的unique的列的值你会发现该索引时not unique
    4.接下来你就可以enable 该约束了
    明天天帖出示例,现在没时间

    SQL UNIQUE 约束介绍

    UNIQUE 约束唯一标识数据库表中的每条记录。

    UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。PRIMARY KEY 拥有自动定义的 UNIQUE 约束。

    请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。


    SQL UNIQUE Constraint on CREATE TABLE

    下面的 SQL 在 Persons 表创建时在 Id_P 列创建 UNIQUE 约束:

    MySQL:

    CREATE TABLE Persons

    (Id_P int NOT NULL,

    LastName varchar(255) NOT NULL,

    FirstName varchar(255),

    Address varchar(255),

    City varchar(255),

    UNIQUE (Id_P))

    SQL Server / Oracle / MS Access:

    CREATE TABLE Persons

    (Id_P int NOT NULL UNIQUE,

    LastName varchar(255) NOT NULL,

    FirstName varchar(255),

    Address varchar(255),

    City varchar(255))

    如果需要命名 UNIQUE 约束,以及为多个列定义 UNIQUE 约束,请使用下面的 SQL 语法:

    MySQL / SQL Server / Oracle / MS Access:

    CREATE TABLE Persons

    (Id_P int NOT NULL,

    LastName varchar(255) NOT NULL,

    FirstName varchar(255),

    Address varchar(255),

    City varchar(255),

    CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName))


    SQL UNIQUE Constraint on ALTER TABLE

    当表已被创建时,如需在 Id_P 列创建 UNIQUE 约束,请使用下列 SQL:

    MySQL / SQL Server / Oracle / MS Access:

    ALTER TABLE Persons

    ADD UNIQUE (Id_P)

    如需命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束,请使用下面的 SQL 语法:

    MySQL / SQL Server / Oracle / MS Access:

    ALTER TABLE Persons

    ADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)


    撤销 UNIQUE 约束

    如需撤销 UNIQUE 约束,请使用下面的 SQL:

    MySQL

    ALTER TABLE Persons

    DROP INDEX uc_PersonID

    SQL Server / Oracle / MS Access:

    ALTER TABLE Persons

    DROP CONSTRAINT uc_PersonID

    oracle 怎么 设置唯一索引

    有两种方法:

    (1)视图dba_constraints

    (2)视图dba_indexes

    设置一个字段,为主键,这个主键就是不重复的,主键的内容可以使用oracle的sequence。

    方法一、

    视图dba_constraints,这张表中有所有的表的约束,拥有唯一约束的字段就拥有唯一索引,其中Constraint_type的值应该是U,不过值是R的表示主键,这个也存在唯一索引,不知道你要不要找这种,所以个人认为在这张表内能找到。

    方法二:

    视图dba_indexes,这里的index_type应该也能查到唯一索引。

    显示全文