Mysql主键约束和唯一约束

news2024/9/23 15:20:06

Mysql约束

1、作用

约束定义为确保数据完整性必须遵循的规则。
约束可以在创建表的过程中创建,也可以稍后再添加。
在创建表后添加约束时,它将检查现有数据以确定其是否违背该约束。
如果现有数据违背了将添加的约束,那么将不会向指定列施加该约束。

2、约束的类型

MySQL 支持可对表中的列定义的以下约束:

1) 主键约束
2) 唯一约束
3) 外键约束

3、主键约束

对一列或一组列定义,这些列的值唯一地标识表中的所有行。
这些列称为主键列。
主键列不能包含 NULL 值,因为它用于唯一地标识表中的行。

语法:

CREATE TABLE table_name
(
<column definition 1>,
<column definition 2>,
............
<constraint_definition>);

<constraint_definition>=
[CONSTRAINT constraint_name] PRIMARY KEY (<column_name> [{,
<column_name>}...]))

实例:
新建一个表格名为emp1,列名分别为id,name,age,address这四个,将id设置为主键

create table emp1 
(
id int,
name varchar(20),
age int,
address varchar(30),
Constraint Key_ID primary key(id)
);

或者

create table emp1 
(
id int primary key,
name varchar(20),
age int,
address varchar(30)
);

注:代码1版本中【 Constraint Key_ID primary key(id) 】就是设置id列成主键的标准代码,Constraint是约束的固定格式,Key_ID是设置的约束的名字,可随便取,Primary key 就是唯一约束的关键词,(id)就代表将id列设置为唯一

可以通过这个按钮看到emp1的id已经是主键了,有一个钥匙标记,或者通过desc命令查看结构
在这里插入图片描述
在这里插入图片描述

4、唯一约束

用于强制非主键列的唯一性=。
与主键约束类似,但是它在唯一约束所定义的列中允许 NULL 值
可以在表上创建多个唯一约束

语法:

CREATE TABLE table_name
(
<column_definition_1>,
<column_definition_2>,
.........
<constraint_definition>


<constraint_definition>=
[CONSTRAINT constraint_name] UNIQUE (<column_name> 
[{,
<column_name>}...]))

实例:

设计表emp2,列和之前的一样加一列电话号码,因为我们知道电话phone是唯一的,设计id为主键,设计电话phone唯一

create table emp2 
(
id int,
name varchar(20),
age int,
address varchar(30),
phone int,
Constraint Key_ID primary key(id),
Constraint Unique_Phone UNIQUE(phone)
);

或者

create table emp2 
(
id int Primary Key,
name varchar(20),
age int,
address varchar(30),
phone int UNIQUE
);

注:代码1版本中【 Constraint Unique_Phone UNIQUE(phone) 】就是设置phone列成唯一性的代码,Constraint是约束的固定格式,Unique_Phone是设置的约束的名字,可随便取,UNIQUE就是唯一约束的关键词,(phone)就代表将phone列设置为唯一。
在这里插入图片描述

5、外键约束(后续详细介绍)

消除当一个表中的数据依赖于另一个表中的数据时两个表中的不一致。
表中的外键总是引用其他表中的主键列。
包含引用为其他表中外键的主键的表称为主表或被引用表。
包含引用其他表中主键的外键的表称为事务表或引用表。

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

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

相关文章

肠道短链脂肪酸如何让人变胖或变瘦

谷禾健康 在目前的审美中&#xff0c;无论男性或女性的肥胖都是不太加分项。除此之外&#xff0c;肥胖还被认为是几种疾病的重要标志物&#xff0c;特别是高血压、2 型糖尿病 (T2DM) 和代谢综合征&#xff0c;肥胖在这些疾病中发挥着明确而重要的病理作用。 肥胖的发生有多种病…

从0开始学python -46

Python CGI编程 什么是CGI CGI 目前由NCSA维护&#xff0c;NCSA定义CGI如下&#xff1a; CGI(Common Gateway Interface),通用网关接口,它是一段程序,运行在服务器上如&#xff1a;HTTP服务器&#xff0c;提供同客户端HTML页面的接口。 网页浏览 为了更好的了解CGI是如何工作…

linux部署kafka

kafka部署需要jdk、zookeeper、 kafka kafka和zookeeper资源自取&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1410lRItcS4yG5DYmAyYOLg 提取码&#xff1a;rt01 1.jdk部署 略 2.zookeeper部署 2.1 解压 unzip zookeeper-3.4.11.zip 2.2 修改 conf/zoo.cfg 2…

详解物联网常用协议:IIC和RS485通信协议

在单片机开发中我们经常会听到协议二字&#xff0c;协议是单片机相互通信中必须遵守的规则&#xff0c;只有遵守协议才能实现二者之间的通信。协议的种类非常的多&#xff0c;可以满足不同设备和不同操作系统的通信要求&#xff0c;下面小编给大家介绍沐渥科技常用的两种通信协…

一文带你吃透JSP,增删改查实战案例详细解读

文章目录前言JSP 概述JSP快速入门搭建环境导入JSP依赖创建 JSP 页面编写代码测试JSP原理JSP 脚本实战案例JSP缺点发展阶段EL 表达式概述实战案例域对象JSTL 标签用法1用法2前言 不得不说&#xff0c;JSP 现在已经是一门十分老旧的技术了&#xff0c;学习编程时&#xff0c;不仅…

一文说清Kubernetes的本质

文章目录Kubernetes解决了什么问题&#xff1f;Kubernetes的全局架构Kubernetes的设计思想Kubernetes的核心功能Kubernetes如何启动一个容器化任务&#xff1f;Kubernetes解决了什么问题&#xff1f; 编排&#xff1f;调度&#xff1f;容器云&#xff1f;还是集群管理&#xf…

置顶!!!主页禁言提示原因:在自己论坛发动态误带敏感词,在自己论坛禁止评论90天

置顶&#xff01;&#xff01;&#xff01;主页禁言提示原因&#xff1a;在自己论坛发动态误带敏感词&#xff0c;在自己论坛禁止评论90天 置顶&#xff01;&#xff01;&#xff01;主页禁言提示原因&#xff1a;在自己论坛发动态误带敏感词&#xff0c;在自己论坛禁止评论90天…

RAD Studio 11.3 Alexandria Crack

RAD Studio 11.3 Alexandria Crack 瞄准最新平台版本-此版本增加了对Android 13和Apple macOS Ventura的官方支持。它还支持Ubuntu 22 LTS和Microsoft Windows Server 2022。 使用生物特征认证-New为FireMonkey移动应用程序提供了新的移动生物特征认证组件。 部署嵌入式InterBa…

【Python学习笔记】第二十五节 Python MySQL

Python 连接到 MySQL 数据库有几种不同的连接方法&#xff0c;而且不是所有的方法都能与不同的操作系统很好地配合.MySQL connector/Python模块是Oracle支持的官方驱动&#xff0c;用于通过Python连接MySQL。该连接器完全是Python语言&#xff0c;而mysqlclient是用C语言编写的…

Java的开发工具有哪些?这十款工具大厂都在用!

工欲善其事必先利其器&#xff0c;各位同学大家好&#xff0c;我是小源~本期文章&#xff0c;给大家推荐十款Java的开发工具。一、 文本编辑器主要推荐三款&#xff1a;notepad、editplus、sublime text。这三款编辑工具&#xff0c;在我们的开发工作中几乎是相差无几&#xff…

3. 字符设备驱动---上篇

文章目录引言一、字符设备驱动工作原理1.1 系统整体工作原理1.2 字符驱动模型1.2.1 file_operations结构体1.2.2 注册字符设备驱动 --- 申请主设备号1.2.3 内核如何管理字符设备驱动二、字符设备驱动代码实践2.1 编写字符设备驱动的步骤和规范2.2 实践写驱动代码2.3 代码实现2.…

Matplotlib精品学习笔记001——绘制3D图形详解+实例讲解

3D图片更生动&#xff0c;或许在时间序列数据的展示上更胜一筹 想法&#xff1a; 学习3D绘图的想法来自科研绘图中。我从事的专业是古植物学&#xff0c;也就是和植物化石打交道。化石有三大信息&#xff1a;1.物种信息&#xff0c;也就是它的分类学价值&#xff1b;2.时间信息…

RealBasicVSR模型转成ONNX以及用c++推理

文章目录安装RealBasicVSR的环境1. 新建一个conda环境2. 安装pytorch(官网上选择合适的版本)版本太低会有问题3. 安装 mim 和 mmcv-full4. 安装 mmedit下载RealBasicVSR源码下载模型文件写一个模型转换的脚步测试生成的模型安装RealBasicVSR的环境 1. 新建一个conda环境 cond…

第一次做性能测试,有亿点点紧张

确认需求 确定性能需求和性能测试方案、需要确定性能测试范围&#xff08;覆盖哪些场景&#xff09;、性能测试策略、并发用户数和加压方式。 时间、人员、任务的分配安排&#xff0c;一般在总体测试计划中会预留性能测试的时间。性能测试方案是开展性能测试前的核心内容&…

时序预测 | MATLAB实现Rmsprop算法优化LSTM长短期记忆神经网络时间序列多步预测(滚动预测未来,多指标,含验证Loss曲线)

时序预测 | MATLAB实现Rmsprop算法优化LSTM长短期记忆神经网络时间序列多步预测(滚动预测未来,多指标,含训练和验证Loss曲线) 目录 时序预测 | MATLAB实现Rmsprop算法优化LSTM长短期记忆神经网络时间序列多步预测(滚动预测未来,多指标,含训练和验证Loss曲线)效果一览基本描…

Flume使用入门

目录 一. Flume简单介绍 1. Agent 2. Source 3. Sink 4. Channel 5. Event 二. 环境安装 1. 创建日志目录 2. 修改日志配置文件 3.修改运行堆内存 4. 确定日志打印的位置 5. 修改flume使用内存 内存调大 三. 校验flume 1. 安装netcat工具和net-tools工具 2. 判…

MySQL服务端与客户端之间的连接过程

服务器程序和客户端程序本质上是两个进程&#xff0c;所以连接过程的本质就是两个进程直接的通信&#xff0c;MySQL支持下面三种方式来进行通信。一&#xff1a;TCP/IP数据库服务器进程和客户端进程可能运行在不同的主机中&#xff0c;需要通过网络来进行通信二&#xff1a;命名…

初识scrapy

认识scrapyscrapy是一个为了爬取网站数据&#xff0c;提取结构性数据而编写的应用框架&#xff0c;我们只需实现少量的代码&#xff0c;就能实现数据的快速抓取scrapy使用了Twisted异步网络架构&#xff0c;可以加快下载速度 pip install twisted安装&#xff1a;pip install s…

进程控制(详解)

进程控制上篇文章介绍了进程的相关概念&#xff0c;形如进程的内核数据结构task_struct 、进程是如何被操作系统管理的、进程的查看、进程标识符、进程状态、进程优先级、已经环境变量和进程地址空间等知识点&#xff1b; 本篇文章接着上篇文章继续对进程的控制进行展开&#x…

Spark 内存运用

RDD Cache 当同一个 RDD 被引用多次时&#xff0c;就可以考虑进行 Cache&#xff0c;从而提升作业的执行效率 // 用 cache 对 wordCounts 加缓存 wordCounts.cache // cache 后要用 action 才能触发 RDD 内存物化 wordCounts.count// 自定义 Cache 的存储介质、存储形式、副本…