主键约束

news/2024/4/28 19:17: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.cpky.cn/p/10766.html

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

相关文章

【观察】戴尔科技:软件驱动存储创新,全面拥抱AI智能时代

毫无疑问,数字经济已成为稳增长促转型,推动中国经济高质量发展的重要引擎。根据信通院发布的《中国数字经济发展研究报告(2023)》显示,2022年,我国数字经济规模首次突破50万亿元,达到50.2万亿元…

微信小程序小白易入门基础教程1

微信小程序 基本结构 页面配置 页面配置 app.json 中的部分配置,也支持对单个页面进行配置,可以在页面对应的 .json 文件来对本页面的表现进行配置。 页面中配置项在当前页面会覆盖 app.json 中相同的配置项(样式相关的配置项属于 app.js…

设计模式 -- 1:简单工厂模式

目录 代码记录代码部分 代码记录 设计模式的代码注意要运用到面向对象的思想 考虑到紧耦合和松耦合 把具体的操作类分开 不让其互相影响&#xff08;注意这点&#xff09; 下面是UML类图 代码部分 #include <iostream> #include <memory> // 引入智能指针的头文…

Python哪个版本最稳定好用2023.10.19

环境&#xff1a; win10 专业版 Python 问题描述&#xff1a; python哪个版本最稳定好用 解决方案&#xff1a; 目前&#xff0c;Python 的最新版本是 3.11.0。然而&#xff0c;对于大多数用户来说&#xff0c;Python 3.8 和 3.9 是最稳定和好用的版本&#xff0c;因为它们…

8:00面试,8:06就出来了,问的问题有点变态。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到9月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:TextPicker)

滑动选择文本内容的组件。 说明&#xff1a; 该组件从API Version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 无 接口 TextPicker(options?: {range: string[] | string[][] | Resource | TextPickerRangeContent[] | Te…