当前位置: 首页 > news >正文

5.1 实体完整性

一个表只能有一个主键约束,且主键约束不能取空值
通过unique约束定义唯一性,为了保证一个表非主键列不输入重复值,可在该列定义unique约束。 

primary key约束与unique约束主要区别如下。 
(1)一个表只能创建一个primary key约束,但可创建多个unique约束。
(2)primary key约束的列值不允许为空值,unique约束的列值取空值。
(3)创建primary key约束时,系统会自动产生primary key索引。创建unique约束时,系统会自动产生unique索引。 

primary key约束与unique约束都不允许对应列存在重复值。 

5.1.1 主键约束

MySQL的主键列必须遵守以下规则

(1)每个表只能定义一个主键。 
(2)表中的两条记录在主键上不能具有相同的值,即遵守“唯一性规则”
(3)如果从一个复合主键中删除一列后,剩下的列构成的主键仍然满足唯一性原则,那么,这个复合主键是不正确的,这就是“最小化规则”。 
(4)一个列名在复合主键的列表中只能出现一次。 

1.在创建表时创建主键约束

【例8.1】在数据库study中创建"课程1"表,以列级完整性约束方式定义主键。 

create table 课程1(课程号 char(4) not null primary key,课程名 char(16) not null,学分 tinyint null);

【例8.2】在数据库stusys中创建course2表,以表级完整性约束方式定义主键。 

create table 课程2(课程号 char(4) not null, 课程名 char(16) not null, 学分 tinyint null,  primary key(课程号)); 

【例8.3】在数据库stusys中创建course3表,以表级完整性约束方式定义主键,并指定主键约束名称。 

create table 课程3(课程号 char(4) not null primary key,课程名 char(16) not null,学分 tinyint null,constraint pk_课程3 primary key(课程号));

2.删除主键约束

 语法格式:

alter table<表名> drop primary key; 

【例8.4】删除例8.3创建的在course3表上的主键约束。 

alter table 课程3drop primary key;

3.在修改表时创建主键约束

语法格式: 

alter table<表名> 
add ( [ constraint T < 约束名 > ] primary key ( 主键列名 ) 

【例8.5】重新在course3表上定义主键约束。 

alter table 课程3add constraint pk_课程3 primary key(课程号);

5.1.2唯一性约束

唯一性约束的值必须是唯一的,不允许重复。一个表可创建多个唯一性约束。 

1.在创建表时创建唯一性约束

【例8.6】在数据库stusys中创建course4表,以列级完整性约束方式定义唯一性约束。 

create table 课程4(课程号 char(4) not null, 课程名 char(16) not null unique, 学分 tinyint null);  


在课程名列定义的后面加上unique关键字,列级定义唯一性约束,未指定约束名字,MysQL自动创建约束名字。 

【例8.7】在数据库stusys中创建course5表,以表级完整性约束方式定义唯一性约束。 

create table 课程5(课程号 char(4) not null, 课程名 char(16) not null unique, 学分 tinyint null,constraint uk_课程5 unique(课程名)); 

 

在表中所有列定义的后面加上一条constraint子句,表级定义唯一性约束,指定约束名字为uk_课程5。 

2.删除唯一性约束

语法格式: 

alter table<表名>drop index<约束名>; 

【例8.8】删除例8.7在course5表创建的唯一性约束。 

alter table 课程5drop index uk_课程5;

3.在修改表时创建唯一性约束

语法格式: 

alter table<表名> 
add ( [ constraint < 约束名 > ] unique ( 唯一性约束列名 ) 

【例8.9】重新在course5表上定义唯一性约束。 

alter table 课程5add constraint uk_课程5 primary key(课程名);

相关文章:

5.1 实体完整性

一个表只能有一个主键约束&#xff0c;且主键约束不能取空值。 通过unique约束定义唯一性&#xff0c;为了保证一个表非主键列不输入重复值&#xff0c;可在该列定义unique约束。 primary key约束与unique约束主要区别如下。 (1)一个表只能创建一个primary key约束&#xff0…...

(学习笔记)数据基建-数据质量

数据基建-数据质量 数据质量数据质量保障措施如何推动上下游开展数据质量活动数据质量保障如何量化产出数据质量思考全链路数据质量保障项目 数据质量 概念&#xff1a;数据质量&#xff0c;意如其名&#xff0c;就是数据的准确性&#xff0c;他是数据仓库的基石&#xff0c;控…...

WINUI——Behavior(行为)小结

前言 在使用MVVM进行WINUI或WPF开发时&#xff0c;Command在某些时候并不能满足逻辑与UI分离的要求。这时肯定就需要其它技术的支持&#xff0c;Behavior就是一种。在WPF中是有Behavior直接支持的&#xff0c;转到WINUI后&#xff0c;相对有一些麻烦&#xff0c;于是在此记录之…...

Ruoyi5.x RuoYi-Vue-Plus新建Translation翻译类

若依框架&#xff08;RuoYi&#xff09;中的Translation翻译类主要作用在于实现字段值的转换或翻译功能&#xff0c;以提高数据展示的准确性和友好性。以下是其具体作用的一些关键点&#xff1a; 字段值转换&#xff1a;若依框架在处理数据时&#xff0c;有时需要将某些字段的…...

类加载的奥秘

一、类的加载过程将类的字节码文件加载到Java虚拟机中进行执行。 1.通过一个类的全限定名来获取定义此类的二进制流字节码文件(如zip 包、网络、运算生成、JSP 生成、数据库读取等)。 2.将这个字节流所代表的静态存储结构&#xff08;如常量池、字段、方法等&#xff09;转化为…...

Spring知识点总结

1. 简介一下Spring框架。 答&#xff1a;Spring框架是一个开源的容器性质的轻量级框架。主要有三大特点&#xff1a;容器、IOC&#xff08;控制反转&#xff09;、AOP&#xff08;面向切面编程&#xff09;。 2. Spring框架有哪些优点&#xff1f;谈谈你的看法。 答&#xff…...

STM32Cube系列教程11:STM32 AES加解密模块性能测试

文章目录 本次测试环境本次测试所使用的系统时钟为48MHz本次测试主要测试对大量数据进行加解密所需的时间&#xff0c;本次为不严谨测试&#xff0c;忽略了程序调用耗时&#xff0c;结果仅供参考。 AES算法与数据加解密加密与解密对称加解密AES算法AES-ECBAES-CBC 填充算法PKCS…...

Vue2基础:.sync修饰符的使用,认识,作用,本质案例演示,实现父子之间的通信。

.sync的作用&#xff1a; 可以实现子组件与父组件数据的双向绑定&#xff0c;简化代码。 与v-model的不同点,prop属性名可以自定义&#xff0c;不要一定要用value. .sync的本质&#xff1a; 就是&#xff1a;属性名和update&#xff1a;属性名合写。 下面我们进行代码演示…...

【数据结构与算法】使用单链表实现队列:原理、步骤与应用

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《数据结构与算法》 期待您的关注 ​ 目录 一、引言 &#x1f384;队列的概念 &#x1f384;为什么要用单链表实现队列 二、单…...

DHCP服务

文章目录 一、DHCP介绍二、DHCP应用场景三、DHCP工作原理3.1&#xff09;工作方式3.2&#xff09;工作原理解析3.3)计算机获得IP的时间点3.4&#xff09;租约更新阶段 四、DHCP服务器部署4.1&#xff09;DHCP安装4.2&#xff09;DHCP配置文件详解4.3&#xff09;DHCP启动 五、D…...

C++笔试-剑指offer

剑指offer 文章目录 剑指offer数组[数组中重复的数据 ](https://leetcode.cn/problems/find-all-duplicates-in-an-array/description/)将元素交换到对应的位置 二维数组中的查找二叉搜索树 旋转数组的最小数字二分查找 数组中出现次数超过一半的数字相互抵消 连续子数组的最大…...

Mac安装jadx并配置环境

jadx官网&#xff1a;GitHub - skylot/jadx: Dex to Java decompiler 第一种&#xff1a; 安装jadx命令&#xff1a; brew install jadx 启动jadx-gui命令&#xff1a; jadx-gui 可能遇到的问题&#xff1a; Downloading https://formulae.brew.sh/api/formula.jws.json** h…...

前端学习----css基础语法

CSS概述 CAscading Style Sheets(级联样式表) CSS是一种样式语言,用于对HTML文档控制外观,自定义布局等,例如字体,颜色,边距等 可将页面的内容与表现形式分离,页面内容存放在HTML文档中,而用于定义表现形式的CSS在一个.css文件中或HTML文档的某一部分 HTML与CSS的关系 HTM…...

超详解——python条件和循环——小白篇

目录 1. 缩进和悬挂else 2. 条件表达式 3. 和循环搭配的else 4. 可调用对象 总结&#xff1a; 1. 缩进和悬挂else 在Python中&#xff0c;代码块是通过缩进来表示的。条件判断和循环结构的代码块需要正确缩进。悬挂else指的是else子句和相应的if或循环在同一级别的缩进。 …...

DNS协议 | NAT技术 | 代理服务器

目录 一、DNS协议 1、DNS背景 2、DNS协议 域名 域名解析 二、NAT技术 1、NAT技术 2、NAPT技术 3、NAT技术的缺陷 三、代理服务器 1、正向代理服务器 2、反向代理服务器 一、DNS协议 域名系统&#xff08;Domain Name System&#xff0c;缩写&#xff1a;DNS&#…...

深入ES6:解锁 JavaScript 类与继承的高级玩法

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;JavaScript 精粹 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; ES5、ES6介绍 文章目录 &#x1f4af;Class&#x1f35f;1 类的由来&#x1f35f;2 co…...

领域驱动设计:异常处理

一、异常的处理 异常处理是领域模型要考虑的一部分&#xff0c;原因在于模型的责任不可能无限大。在遇到自己处理能力之外的情况时&#xff0c;要采用异常机制报告错误&#xff0c;并将处理权转交。异常就是这样一种机制&#xff0c;某种程度上&#xff0c;它可以保证领域模型…...

网络网络层之(6)ICMPv6协议

网络网络层之(6)ICMPv6协议 Author: Once Day Date: 2024年6月2日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文章可参考专栏: 通信网络技术_Once-Day的博客-CS…...

《大道平渊》· 拾壹 —— 商业一定是个故事:讲好故事,员工奋发,顾客买单。

《大道平渊》 拾壹 "大家都在喝&#xff0c;你喝不喝&#xff1f;" 商业一定是个故事&#xff0c;人民群众需要故事。 比如可口可乐的各种故事。 可口可乐公司也只是被营销大师们&#xff0c; 作为一种故事载体&#xff0c;发挥他们的本领。 营销大师们开发故事…...

JavaScript 如何访问本地文件夹

在浏览器环境中的JavaScript&#xff08;通常指的是前端JavaScript&#xff09;由于安全限制&#xff0c;无法直接访问用户的本地文件或文件夹。这是为了防止恶意脚本访问并窃取用户的敏感数据。 但是&#xff0c;有几种方法可以间接地让用户选择并访问本地文件&#xff1a; 使…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

【堆垛策略】设计方法

堆垛策略的设计是积木堆叠系统的核心&#xff0c;直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法&#xff0c;涵盖基础规则、优化算法和容错机制&#xff1a; 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则&#xff1a; 大尺寸/重量积木在下&#xf…...

macOS 终端智能代理检测

&#x1f9e0; 终端智能代理检测&#xff1a;自动判断是否需要设置代理访问 GitHub 在开发中&#xff0c;使用 GitHub 是非常常见的需求。但有时候我们会发现某些命令失败、插件无法更新&#xff0c;例如&#xff1a; fatal: unable to access https://github.com/ohmyzsh/oh…...

解析两阶段提交与三阶段提交的核心差异及MySQL实现方案

引言 在分布式系统的事务处理中&#xff0c;如何保障跨节点数据操作的一致性始终是核心挑战。经典的两阶段提交协议&#xff08;2PC&#xff09;通过准备阶段与提交阶段的协调机制&#xff0c;以同步决策模式确保事务原子性。其改进版本三阶段提交协议&#xff08;3PC&#xf…...

表单设计器拖拽对象时添加属性

背景&#xff1a;因为项目需要。自写设计器。遇到的坑在此记录 使用的拖拽组件时vuedraggable。下面放上局部示例截图。 坑1。draggable标签在拖拽时可以获取到被拖拽的对象属性定义 要使用 :clone, 而不是clone。我想应该是因为draggable标签比较特。另外在使用**:clone时要将…...

计算机系统结构复习-名词解释2

1.定向&#xff1a;在某条指令产生计算结果之前&#xff0c;其他指令并不真正立即需要该计算结果&#xff0c;如果能够将该计算结果从其产生的地方直接送到其他指令中需要它的地方&#xff0c;那么就可以避免停顿。 2.多级存储层次&#xff1a;由若干个采用不同实现技术的存储…...