`
frank1998819
  • 浏览: 764544 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类

Oracle之唯一性约束(UNIQUEConstraint)用法详解(转)

 
阅读更多

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;

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

分享到:
评论

相关推荐

    struts2,hibernate,spring约束

    例如,使用`@NotNull`表示非空约束,`@UniqueConstraint`表示唯一性约束,`@ManyToOne`或`@OneToOne`配合`@JoinColumn`实现外键约束。 再者,Spring框架是一个全面的企业级应用开发框架,它提供了依赖注入、AOP...

    hibernate 4 注解详解

    5. **@UniqueConstraint**: 用于在表创建时定义唯一性约束。例如,`@UniqueConstraint(columnNames={"EMP_ID", "EMP_NAME"})` 指定了 "EMPLOYEE" 表的 "EMP_ID" 和 "EMP_NAME" 列组合的唯一性约束。 6. **@Column**...

    Hibernate4之JPA规范配置详解

    - **uniqueConstraints**:定义一个 `UniqueConstraint` 数组,用于设置表上的唯一约束,确保某些列组合的唯一性。 **示例代码**: ```java @Entity @Table(name = "CUST", uniqueConstraints = @UniqueConstraint...

    ado.net中的约束和键

    ### ado.net中的约束和键 在ADO.NET中,数据表之间的关系通过键和约束来维护。键和约束有助于确保数据库的完整性和一致性。本文将详细解释ADO.NET中...理解并正确使用这些约束是构建可靠且高效数据库系统的基石之一。

    hibernate注解详解[参照].pdf

    4. **@UniqueConstraint**: 该注解用于在创建表时定义列的唯一性约束。它通过`columnNames`属性接收一个字符串数组,该数组包含了需要设置唯一性的列名。 5. **@Column**: 这是用于映射实体类属性到数据库列的关键...

    java程序使用JPA注解详解

    Java 程序使用 JPA 注解详解 Java 程序使用 JPA 注解可以实现对象关系映射(ORM),使得 Java 应用程序能够与关系数据库进行交互。JPA(Java Persistence API)提供了多种注解来定义实体类与数据库表之间的映射关系...

    java程序使用JPA注解详解.doc

    Java 程序使用 JPA 注解详解 Java 持久层 API(Java Persistence API)是一种 Java 应用程序接口,用于访问、管理和持久化数据之间的关系。JPA 使用注解来定义实体类与数据库表之间的映射关系,本文将详细介绍 JPA ...

    Hibernate注解详解.pdf

    - **`@UniqueConstraints`**:用于定义表上的唯一性约束。例如,可以定义`month`和`day`字段组合的唯一性约束: ```java @Entity @Table(name="tbl_sky", uniqueConstraints={@UniqueConstraint(columnNames={...

    Hibernate annotation 详解

    7. **索引和唯一性约束(@Index, @UniqueConstraint)** - `@Table(indexes = {...})`: 在表级别定义索引,提高查询效率。 - `@Column(unique = true)`: 在字段级别定义唯一性约束。 8. **继承与多态(@Inheritance)*...

    Hibernate注解详解(超全面不解释)

    此外,可以通过使用`@UniqueConstraints`注解来定义表的唯一性约束,例如: ```java @Entity @Table(name = "tbl_sky", uniqueConstraints = {@UniqueConstraint(columnNames = {"month", "day"})}) public class ...

    Hibernate注解、注释大全

    4. `@UniqueConstraint`:用于在表级别定义唯一性约束,确保某些字段组合的唯一性。例如: ```java @Table(name="tbl_sky", uniqueConstraints = {@UniqueConstraint(columnNames={"month", "day"})}) ``` 5. `@...

    自建数据表具体实例代码

    代码中提到了几种类型的约束,包括唯一性约束(`UniqueConstraint`)和外键约束(`ForeignKeyConstraint`)。 #### 唯一性约束示例: ```csharp UniqueConstraint uc = new UniqueConstraint("u1", ds.Tables["user...

    hibernate注解详解

    `@Table`注解包含了schema和catalog属性,还可以使用`@UniqueConstraints`来定义表的唯一约束。例如,在“month”和“day”两个字段上加上uniqueconstraint: ```java @Table(name = "tbl_sky", ...

    Hibernate注解详解

    - 若要定义唯一约束,可使用`@UniqueConstraint`。例如: ```java @Table(name="tbl_sky", uniqueConstraints = {@UniqueConstraint(columnNames={"month", "day"})}) ``` 4. **乐观锁版本控制** - `@...

    JPA标注推荐圈子: Database圈子

    `unique` 属性用于指定列是否具有唯一性约束,默认为 `false`。 ##### 5.3 可空性 (nullable) `nullable` 属性用于指定列是否允许为空,默认为 `true`。 **示例代码:** ```java @Column(nullable = false) ...

    jpa注解详解

    在JPA中,批注是一种使用元数据修饰Java源代码的简单表达方法,它编译为相应的Java类文件,以便在运行时由JPA持久性提供程序解释以管理JPA行为。 JPA批注可以分为以下几个类别: 1. 实体默认情况下,JPA持久性提供...

    JAVA技术开发标准.docx

    5. **主键和索引** - 使用`@TableGenerator`和`@Id`定义主键生成器,`@Table`和`@UniqueConstraint`定义表的主键和唯一性约束。如果需要复合主键,可以使用`@EmbeddedId`和`@Embeddable`。 6. **数据类型选择** - ...

    JPA学习笔记-EJB-02JPA属性注解

    - `message`字段映射到了数据库表中的`mess`列,该字段不允许为空,长度最大为300个字符,并且没有唯一性限制。 - `price`字段映射到数据库表中的一个双精度浮点型字段,总位数为12位,其中2位用于小数部分。 - `...

    Hibernate注解详解(超全面不解释).pdf

    `@Table`还可以指定schema和catalog,以及定义表的唯一约束: ```java @Table(name="tbl_sky", uniqueConstraints = {@UniqueConstraint(columnNames={"month", "day"})}) ``` `@Version`注解用于实现乐观锁,...

    经典收藏(2021-2022年收藏)免费在线作业答案东北大学15秋学期《WEB程序设计》在线作业3答案.doc

    Prout"`表添加一个由"Nme"和"lss"两列组成的唯一性约束,不允许这两个字段的组合出现重复。 8. ADO.NET连接字符串:`Initial Catalog`子串在连接字符串中表示所连接的数据库名称。 9. 字符串函数:在VBScript中,`...

Global site tag (gtag.js) - Google Analytics