主键约束

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.mzph.cn/news/754058.shtml

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

相关文章

C#开发中方法使用的问题注意

C#开发中,我们在进行方法内嵌时,需要注意方法回传带值时,我们需要对方法回传的值进行一个赋值传递 如下所示 console.WriteLine("请输入你的爱好:"); string aihao Console.ReadLine(); name ChangeData(name);同时在…

找不到msvcp110.dll怎么办,msvcp110.dll丢失的5种修复方法

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“msvcp110.dll丢失”。由于msvcp110.dll是Microsoft Visual C Redistributable Package的重要组成部分,它的缺失会导致依赖于该组件的软件无法正常启动或运行,比如某…

Java开发者的新宠:探索轻量级且功能强大的Magic-API

Java开发者的新宠:探索轻量级且功能强大的Magic-API 一、Magic-API简介二、Magic-API的核心特性三、结语 大家好,这里是程序猿代码之路,在当今的软件开发领域,快速迭代和高效交付是每个项目追求的目标。对于Java开发者来说&#x…

汽车电子零部件(7):电机Motor

前言: 新能源汽车的三大件是:电池、电机、电控。可见电机的重要性,可以说直接就取代了发动机。而用到电机的地方不仅仅有驱动四轮,还有方向盘、门窗甚至电池热管理等也都是需要电机这个器件的。当然就电机而言又分变频电机和直流电机,有刷电机和无刷电机。从架构上说,需…

Day21:实现退出功能、开发账号设置、检查登录状态

实现退出功能 将登录凭证修改为失效状态。跳转至网站首页。 数据访问层 不用写了,已经有了updateStatus方法; 业务层 UserService public void logout(String ticket) {loginTicketMapper.updateStatus(ticket, 1);}Controller层 RequestMapping(p…

React核心⼊⻔-lesson1

自学React从入门到精通,从使用到写源码 React⼊⻔ 课堂⽬标资源起步 ⽂件结构⽂件结构⼀览React和ReactDomJSX 使⽤JSX组件 组件的两种形式 class组件function组件组件状态管理 类组件中的状态管理函数组件中的状态管理事件处理组件通信 Props属性传递contextredux⽣命周期 变…

Python:filter过滤器

filter() 是 Python 中的一个内置函数,用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。该函数接收两个参数,一个是函数,一个是序列,序列的每个元素作为参数传递给函数进行判定&…

行为型-观察者模式

文章目录 基本概念定义使用场景代码实现 延伸阅读java监听机制spring监听机制 基本概念 定义 观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,当一个对象的状态发生改变时,其所有依赖者都会收到通知并自动更新。 观察者模式…

电脑msvcp140_1.dll丢失的解决方法,总结5种可靠的方法

在日常使用电脑的过程中,我们可能会遇到一些错误提示,其中之一就是“msvcp1401.dll丢失”。这个DLL文件是Microsoft Visual C Redistributable Package的一部分,对于许多基于Windows的应用程序来说至关重要。这个错误通常会导致某些应用程序无…

摄影第一课

色彩 红色绿色黄色 红色蓝色洋红 蓝色绿色青色 冷暖色 摄影基础 选择合适的前景,增加照片层次感 测光拍摄,照片有亮和暗的地方,立体感更强 拍摄技巧 拍摄倒影 手机靠近水面,距离越近拍到的倒影越多适当降低曝光、获得更加准…

SWUST OJ 961: 进制转换问题

题目描述 建立顺序栈或链栈&#xff0c;编写程序实现十进制数到二进制数的转换。 输入 输入只有一行&#xff0c;就是十进制整数。 输出 转换后的二进制数。 样例输入 10 样例输出 1010 参考程序 #include<iostream> using namespace std; #define maxsize 10…

springboot 动漫周边商城的设计与实现

摘 要 二十一世纪我们的社会进入了信息时代&#xff0c;信息管理系统的建立&#xff0c;大大提高了人们信息化水平。传统的管理方式对时间、地点的限制太多&#xff0c;而在线管理系统刚好能满足这些需求&#xff0c;在线管理系统突破了传统管理方式的局限性。于是本文针对这一…

20240316-算法复习打卡day25||● 216.组合总和III● 17.电话号码的字母组合

216.组合总和III class Solution { private:vector<vector<int>> result;vector<int> path;void backtracking(int targetSum, int k, int sum, int startIndex) {if (path.size() k) {if (sum targetSum) result.push_back(path);}for (int i startIndex…

6语言交易所/多语言交易所php源码/微盘PHP源码

6语言交易所PHP源码&#xff0c;简单测试了一下&#xff0c;功能基本都是正常的。 由于是在本地测试的运行环境的问题&#xff0c;K线接口有点问题&#xff0c;应该在正式环境下是OK的。 源码下载地址&#xff1a;6语言交易所/多语言交易所php源码/微盘PHP源码.zip 程序截图…

比特币,区块链及相关概念简介(四)

目录 数学难题指的是什么哈希计算什么是去中心化去中心化的优势加密货币加密货币的特点智能合约平台零知识证明&#xff08;Zero-knowledge Proofs&#xff09;该系列文章链接 以下内容结合了chatgpt 3.5以及网络文章。 用于学习记录。 简介&#xff1a; 介绍了数学难题&#x…

构建用户身份基础设施,推动新能源汽车高质量发展

随着市场进入智能电动汽车时代&#xff0c;车企们发现&#xff0c;在激烈竞争的市场中不断增长&#xff0c;并不是一件容易的事。《麻省理工科技评论》&#xff0c;前段时间写了一篇报道&#xff1a;中国是如何称霸电动汽车世界的&#xff1f;“过去两年&#xff0c;中国电动汽…

洛谷_P1152 欢乐的跳_python写法

思路&#xff1a; 这道题我用到了集合的互异性来判断这组数字是否满足条件我觉得是比较有效一点的。 data list(map(int,input().split())) data data[1:] l [i for i in range(1,len(data))] s [] for i in range(len(data)-1):s.append(abs(data[i] - data[i1]))if set(…

[python3] 设置多进程名称并且在ps命令中可见

Centos7 系统 setproctitle 是一个 Python 模块&#xff0c;用于设置进程标题&#xff08;process title&#xff09;。进程标题是在系统中用来标识进程的名字&#xff0c;通常会显示在系统级的进程管理工具&#xff08;如 ps 命令&#xff09;中。通过设置进程标题&#xff0c…

断言assert是什么?

assert是什么&#xff1f; assert断言&#xff0c;是一个被定义在<assert.h>头文件中的一个宏&#xff0c;而不是一个函数。 可以用来检查数据的合法性&#xff0c;但是频繁的调用极大影响了程序的性能&#xff0c;增加了额外的开销。可以通过#define NDEBUG来禁用asse…

解释MVC和MVVM架构模式

一、解释MVC和MVVM架构模式 MVC和MVVM都是常见的前端架构模式&#xff0c;用于抽象分离并解决特定问题。这两种模式在结构上具有一定的相似性&#xff0c;但在细节和数据处理方式上存在一些差异。 MVC&#xff0c;即Model-View-Controller&#xff0c;是一种用于应用程序分层…