主键和唯一索引的区别

简介: 前言: 作为一个非开发出身的DBA刚开始对数据库的主键、外键等一系列的词很是困惑,到后面对主键(primary key)和唯一索引(Unique Index)又迷糊了很久,后面终于陆续整理清楚了,总结和大家分享下; 一、相似之处创建主键的同时会创建一...

前言: 作为一个非开发出身的DBA刚开始对数据库的主键、外键等一系列的词很是困惑,到后面对主键(primary key)和唯一索引(Unique Index)又迷糊了很久,后面终于陆续整理清楚了,总结和大家分享下;

 

一、相似之处

  • 创建主键的同时会创建一个唯一索引;

二、区别

  • 主键是一种约束,目的是对这个表的某一列进行限制;
  • 唯一索引是一种索引,索引是数据库表的一个冗余结构,目的是为了更好的查询;
  • 主键列不允许为空值,而唯一性索引列允许空值;
  • 一个表最多只能一个主键,但是可以包含多个唯一索引;

三、测试

测试步骤:

3.1 创建一个表

脚本:create table john as select * from dba_objects where 1=0;(拷贝表的结构)

 

3.2 创建主键,检查是否产生唯一索引和约束

脚本:ALTER TABLE john ADD CONSTRAINT john_PrimaryKey PRIMARY KEY (object_id);   CREATE UNIQUE INDEX john_UniqueKey ON john  (owner);

 

查找语句:

SELECT table_name,table_type,index_name,index_type,uniqueness

FROM DBA_INDEXES

WHERE TABLE_NAME='JOHN';

3.3 测试再创建唯一索引和主键

ALTER TABLE john ADD CONSTRAINT john_PrimaryKey_2 PRIMARY KEY (namespace); ---会报错误ORA-02260: 表只能具有一个主键

CREATE UNIQUE INDEX john_UniqueKey_2 ON john  (timestamp); -----可以创建

 

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

本文作者:JOHN

ORACLE技术博客:ORACLE 猎人笔记               数据库技术群:367875324 (请备注ORACLE管理 )  

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

相关文章
|
11月前
|
SQL 安全 网络安全
网络安全的护城河:漏洞防御与加密技术的深度解析
【10月更文挑战第37天】在数字时代的浪潮中,网络安全成为守护个人隐私与企业资产的坚固堡垒。本文将深入探讨网络安全的两大核心要素——安全漏洞和加密技术,以及如何通过提升安全意识来强化这道防线。文章旨在揭示网络攻防战的复杂性,并引导读者构建更为稳固的安全体系。
322 1
|
3月前
|
存储 安全 数据安全/隐私保护
移动硬盘提示“参数错误”?修复方法来了
移动硬盘提示“参数错误”时,多数是文件系统异常或分区问题所致,并非硬盘损坏。本文详解故障原因及修复步骤,强调先恢复数据再修复硬盘,避免数据丢失。提供硬件检查、数据恢复、格式化修复等方法,并解答常见疑问,助你安全解决难题。
|
6月前
|
人工智能 安全 API
Higress.ai 站点全新发布,轻松解锁 AI 新能力,开启全球服务!
Higress.ai 除了提供常见的最佳实践(文章形式)/社区/企业版/GitHub/文档等功能外,特别设计了快速体验 AI 网关的【场景体验】,并提供开源体验和云上体验两种方式。同时,我们会在该站点首发 Higress AI 网关的最新能力。例如,我们即将上线 AI Guideline 提示词功能,开发者基于通义灵码/Cursor 等 AI 编程工具,将 Nginx/Kong 的 Lua 插件快速转化为 Higress Wasm 插件。
|
11月前
|
存储 缓存 大数据
ClickHouse核心概念详解:表引擎与数据模型
【10月更文挑战第26天】在大数据时代,数据处理的速度和效率变得至关重要。ClickHouse,作为一个列式存储数据库系统,以其高效的查询性能和强大的数据处理能力而受到广泛欢迎。本文将从我个人的角度出发,详细介绍ClickHouse的核心概念,特别是其表引擎和数据模型,以及这些特性如何影响数据的存储和查询。
383 1
|
机器学习/深度学习 人工智能 TensorFlow
机器学习项目实战:使用Python实现图像识别
在AI时代,Python借助TensorFlow和Keras实现图像识别,尤其在监控、驾驶、医疗等领域有广泛应用。本文通过构建CNN模型识别MNIST手写数字,展示图像识别流程:安装库→加载预处理数据→构建模型→训练→评估。简单项目为深度学习入门提供基础,为进一步探索复杂场景打下基础。
1235 5
|
SQL Oracle Java
__Oracle_JDBC_internal_ROWID__
__Oracle_JDBC_internal_ROWID__
206 3
|
存储 SQL Oracle
如何查看和下载Oracle BLOB类型的数据
如何查看和下载Oracle BLOB类型的数据
814 0
|
资源调度 运维 Kubernetes
通过容器服务sidecar方式接入定时任务SchedulerX
SchedulerX是阿里巴巴自研的一站式分布式任务调度平台,通过该文章,不需要对业务和镜像进行改造,只需要在Kubernetes的deployment文件(Pod、Deployment、StatefulSet、Job等都支持)中新增一个sidecar配置,就可以将定时任务托管到SchedulerX平台,拥有白屏运维、可视化和监控报警能力。
871 0
|
Java 数据安全/隐私保护 Spring
动态验签与用户权限拦截(Spring HandlerInterceptor)
动态验签与用户权限拦截(Spring HandlerInterceptor)
动态验签与用户权限拦截(Spring HandlerInterceptor)
|
XML Java 应用服务中间件
Spring Boot:WEB项目,以WAR包形式部署到外部tomcat部署
Spring Boot:WEB项目,以WAR包形式部署到外部tomcat部署
Spring Boot:WEB项目,以WAR包形式部署到外部tomcat部署