主键约束

news2024/10/5 18:25:30

Oracle从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645

主键约束可以看成是非空约束再加上唯一约束

也就是说设置为主键列,不能为空,不能重复

像一般用户编号是不可能重复的,也不可能为空的

-- 删除数据表
drop table member PURGE ;
-- 创建数据表
create table member(
	mid    NUMBER,
	name    VARCHAR2(20)    NOT NULL,
	CONSTRAINT    pk_mid    PRIMARY KEY(mid)
) ;

下面就测试一下这个主键约束的作用,首先向数据表中添加一行数据

insert into member(mid,name) values(1,'张三') ;

下面继续向该数据表中增加下面的数据 ,这行代码将主键内容设置为 null

insert into member(mid,name) values(null,'李四') ;

代码运行后,出现错误信息:“ORA-01400: 无法将 NULL 插入 ("SCOTT"."MEMBER"."MID")”。说明把 null 数据添加到主键字段中是不允许的

下面继续添加数据,这次添加的数据是主键信息重复

insert into member(mid,name) values(1,'李四') ;

代码运行后,出现错误信息:“ORA-00001: 违反唯一约束条件 (SCOTT.PK_MID)”

因为前面 mid字段已经有“1”这个值,现在新添加的记录的 mid 字段的值仍然是“1“,不符合主键唯一的限制

通过这两个错误信息就已经可以确定,主键就是两个约束的集合体,即非空约束和唯一约束

在绝大多数情况下,一张表只能够定义一个主键信息,当然,从 SQL 语法的角度来说是允许定义多个列为主键,这样的操作往往称为复合主键

如果是复合主键,则表示这若干个列的内容完全重复的时候才称为违反约束

-- 删除数据表
drop table member purge;
-- 创建数据表
create table member(
	mid    NUMBER ,
	name    VARCHAR2(20) ,
	CONSTRAINT    pk_mid PRIMARY    KEY(mid,name)
) ;

此时将 mid 与 name 两个字段同时定义为主键,所以当两个字段完全重复时才表示违反约

insert into member(mid,name) values (1,'张三') ;
insert into member(mid,name) values (1,'李四') ;
insert into member(mid,name) values (2,'李四') ;

此时,mid 与 name 两个字段内容都重复才违反约束,只有一个字段内容重复不违反约束

数据库设计的第一原则:不要使用复合主键。即一张表就一个主键

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1526873.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何解决网络中IP地址发生冲突故障?

0、前言 本专栏为个人备考软考嵌入式系统设计师的复习笔记,未经本人许可,请勿转载,如发现本笔记内容的错误还望各位不吝赐教(笔记内容可能有误怕产生错误引导)。 1、个人IP地址冲突解决方案 首先winR,调出…

KWJL-20/L智能电流继电器0.1-50A 零序互感器KWLD26Φ45JOSEF约瑟

KWJL-20/L智能电流继电器 KWLD20零序电流互感器 KWLD26零序电流互感器 KWLD45零序电流互感器 KWLD80零序电流互感器 产品概述 KWJL-20系列智能电流继电器(以下简称继电器)适用于交流电压至660V或更高的TN、TT、和IT系统,频率为50Hz。通…

CSS 绝对定位 position:absolute

什么是CSS绝对定位absolute定位? 绝对定位absolute定位是CSS中的一种定位方式,可以将元素精确定位到一个确定的点,这与元素在文档流上的自然位置无关。相比起其他定位方式,绝对定位很灵活性,它可以将元素脱离文档流&am…

Session会话绑定

1.需求原因 用户的请求,登录的请求,经过负载均衡后落到后面的web服务器上,登录的状态/信息也会记录在web服务器上,就会导致不通的web服务器上,登录状态不统一,造成用户频繁需要登录 2.目标:如何实现会话保持/会话共享 方案一:登录状态写入cookie中.(wor…

机器学习----特征缩放

目录 一、什么是特征缩放: 二、为什么要进行特征缩放? 三、如何进行特征缩放: 1、归一化: 2、均值归一化: 3、标准化(数据需要符合正态分布): 一、什么是特征缩放: 通…

C++_day6

思维导图: 2试编程 封装一个动物的基类,类中有私有成员: 姓名,颜色,指针成员年纪 再封装一个狗这样类,共有继承于动物类,自己拓展的私有成员有:指针成员:腿的个数(整型 int count),共有成员函数…

GAMES101 学习 2

Lecture 7:Shading 1(lllumination,Shading and Graphics Pipeline) Visibility / occlusion 解决可见性和遮挡的问题 可见性,Z-buffering Z-Buffer 深度缓存 Idea: Store current min. z-value for each sample (pixel)Needs an additi…

MS16_016 漏洞利用与安全加固

文章目录 环境说明1 MS16_016 简介2 MS16_016 复现过程3 MS16_016 安全加固 环境说明 渗透机操作系统:kali-linux-2024.1-installer-amd64漏洞复现操作系:cn_windows_7_professional_with_sp1_x64_dvd_u_677031 1 MS16_016 简介 MS16_016 漏洞产生的原因…

类和对象-1

文章目录 面向过程和面向对象的概念类的引入访问限定符类的大小this指针 面向过程和面向对象的概念 面向过程是一种按照步骤顺序执行的编程方式,而面向对象则是以对象为中心,将数据和操作封装在一起。在面向对象编程中,可以通过定义类和对象来…

MySQL--为什么加了唯一索引还会产生重复数据

场景: 我在一张表里设置了唯一索引,但是我发现还是出现了重复数据,这是什么情况呢,难道唯一索引失效了? 准备数据: -- dc_portal.user definitionCREATE TABLE user (id bigint unsigned NOT NULL AUTO_…

XPath语法、轴、运算符-满满干货拿走不谢

🍁博主简介: 🏅云计算领域优质创作者 🏅2022年CSDN新星计划python赛道第一名 🏅2022年CSDN原力计划优质作者 🏅阿里云ACE认证高级工程师 🏅阿里云开发者社区专…

‘wget’与‘bat 批处理’ 相结合的批量下载操作

前言 wget命令是一个在Linux和类Unix操作系统中经常使用的网络命令,用途是从指定的URL下载文件。它支持HTTP、HTTPS和FTP协议,支持断点续传,可以下载整个网站,当然windows环境下也可以使用,参考地址:GNU W…

几个不错的 Jupyter Notebook 云端展示平台

jupyter nbviewer URL:https://nbviewer.jupyter.org/ 结合Github的示例用法&#xff1a;https://nbviewer.jupyter.org/github/ <用户名或者用户名/存放ipynb文件的仓库或者Gist ID> 例如&#xff1a;https://nbviewer.jupyter.org/github/yeshan333/JupyterNotebook…

Springboot和Spring Cloud版本对应

Spring在不断地升级&#xff0c;各个版本存在一些不兼容的地方&#xff0c;为了避免出现问题&#xff0c;最好注意使用正确的版本。 官网的对应关系&#xff1a;https://start.spring.io/actuator/info 如下图&#xff1a; 下面附一下创建项目的工具&#xff1a; Spring官方…

信号量——生产消费者模型

前文 在这一篇博客&#xff08;信号量博客&#xff09;中我曾经提及过信号量的知识&#xff0c;而当对信号量进行提炼总结时&#xff0c;大致是以下三点&#xff1a; 1. 信号量本质是一个计数器&#xff08;代表资源的数量&#xff09; 2. 申请信号量本质就是对资源的一种预定机…

文件系统I/O FATFS RW 源码分析

文件系统I/O FATFS RW 源码分析 0 参考 FatFs 是用于小型嵌入式系统的通用 FAT/exFAT 文件系统模块。FatFs 整个项目都按照 ANSI C (C89) 编写。与存储器 I/O 解耦良好&#xff0c;便于移植到 8051、PIC、AVR、ARM、Z80、RX 等小型微控制器中。 下面是关于 FAT 文件系统格式…

Auto-DataProcessing:一组让制作数据集变轻松的脚本

前言 最近跟同学参加了个比赛&#xff0c;我负责Object-Detection的技术实现&#xff0c;需要从网上扒大量的数据(主办方每种识别物就给了一张demo&#x1f923;)&#xff0c;发现数据准备是一个真的是一个非常重要但又耗时耗力的过程。对我来说&#xff0c;给我一类待识别的标…

蓝桥之手撕排序算法——冒泡、选择、插入、快排、归并(Python版)

目录 1. 排序引言 2. 冒泡排序 2.1 算法思想 2.2 代码实现 2.3 时空复杂度分析 3. 选择排序 3.1 算法思想 3.2 代码实现 3.3 时空复杂度分析 4. 插入排序 4.1 算法思想 4.3 代码实现 4.4 时空复杂度分析 5. 快速排序 5.1 算法思想 5.2 代码实现 5.3 时空复杂度分…

upload-labs 0.1 靶机详解

下载地址https://github.com/c0ny1/upload-labs/releases Pass-01 他让我们上传一张图片&#xff0c;我们先尝试上传一个php文件 发现他只允许上传图片格式的文件&#xff0c;我们来看看源码 我们可以看到它使用js来限制我们可以上传的内容 但是我们的浏览器是可以关闭js功能的…