Oracle之唯一性约束(UNIQUE Constraint)使用方法具体解释
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
版权@:转载请标明出处!----------------------------------------------------------------------------------------------------------
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决