【MySQL基础】什么是MySQL约束?什么是主键约束?

news2024/12/24 2:55:46

目录

一、什么是MySQL约束?

二、MySQL约束有什么作用?

三、MySQL约束常见七大类?

主键约束(primary key) PK

1.概念

2.主键约束的相关操作

添加单列主键

添加多列主键(联合主键)

通过修改表结构添加主键

删除主键

💟 创作不易,不妨点赞💚评论❤️收藏💙一下


一、什么是MySQL约束?

在MySQL中,约束实际上就是表中数据的限制条件,是指对表中数据的一种约束。能够帮助数据库管理员更好地管理数据库,并且能够确保数据库中数据的正确性和有效性。

例如,在数据表中存放年龄的值时,如果的是存入 200、300 那这些相对于现实年龄来说其值就毫无意义。因此,使用约束来限定表中的数据范围是很有必要的。

二、MySQL约束有什么作用?

表在设计的时候加入约束的目的就是为了保证表中的记录完整性和有效性。

比如用户表有些列的值(手机号)不能为空,有些列的值(身份证号)不能重复。如果插入的数据为空就会导致插不进去。

三、MySQL约束常见七大类?

主键约束(primary key) PK

自增长约束(auto_increment)

非空约束(not null)

唯一性约束(unique)

默认约束(default)

零填充约束(zerofill)

外键约束(foreign key) FK

主键约束(primary key) PK

1.概念

1.MySQL主键约束是一个列或者多个列的组合,其值能唯一地标识表中的每一行,方便在关系型数据库(RDBMS)中尽快的找到某一行

2.主键约束相当于 唯一约束 + 非空约束 的组合,主键约束列不允许重复,也不允许出现空值。

3.每个表最多只允许一个主键,主键约束的关键字是:primary key

4.当创建主键的约束时,系统默认会在所在的列和列组合上建立对应的唯一索引

总的来说,主键的作用是在列上加上一个标记来标识这一行,从而来提高查询速度。其次标识的主键这一列或者多列,必须唯一而且都不能为空。而且每个表最多只允许一个主键或者联合主键,其主键约束的关键字是primary key

2.主键约束的相关操作

添加单列主键、添加多列联合主键、删除主键。

添加单列主键

创建单列主键有两种方式:

一种是在定义字段的同时指定主键。

一种是定义完字段之后指定主键。

方式1:

-- ----------语法1:定义字段的同时指定主键 ------------
​
-- 在 create table 语句中,通过 PRIMARY KEY 关键字来指定主键。
--在定义字段的同时指定主键,语法格式如下:
create table 表名(
   ...
   <字段名> <数据类型> primary key 
   ...
)
​
-- -----------语法1实现--------------
create table emp1(
    eid int primay key,
    name VARCHAR(20),
    deptId int,
    salary double
);

方式二:

-- ----------语法2:定义字段之后再指定主键 ------------
​
-- 在定义字段之后再指定主键,语法格式如下:
create table 表名(
   ...
   [constraint <约束名>] primary key [字段名]
);
​
​
-- -----------语法2实现--------------
create table emp2(
    eid INT,
    name VARCHAR(20),
    deptId INT,
    salary double,
    constraint  pk1 primary key(id)
 );

添加多列主键(联合主键)

所谓的联合主键,就是这个主键是由一张表中多个字段组成的。

注意:

  1. 当主键是由多个字段组成时,不能直接在字段名后面声明主键约束。

  2. 一张表只能有一个主键,联合主键也是一个主键

语法与实现:

-- 语法
create table 表名(
   ...
   primary key (字段1,字段2,…,字段n)
);
​
-- 实现:
create table emp3( 
  name varchar(20), 
  deptId int, 
  salary double, 
  primary key(name,deptId) 
);

通过修改表结构添加主键

主键约束不仅仅可以在创建表的同时创建,也可以在修改表的时候添加主键。

-- 语法
create table 表名(
   ...
);
alter table <表名> add primary key(字段列表);
​
​
-- 实现 
-- 添加单列主键
create table emp4(
  eid int, 
  name varchar(20), 
  deptId int, 
  salary double, 
);
alter table emp4 add primary key(eid);

删除主键

一个表中不需要主键约束时,就需要从表中将其删除。删除主键约束的方法要比创建主键约束容易的多。

-- 格式
alter table <数据表名> drop primary key;
​
-- 实现
-- 删除单列主键 
alter table emp1 drop primary key;
 
-- 删除联合主键 
alter table emp5 drop primary key;
只要drop删除 主键关键字primary key就可以了,不管是创建的是单列主键还是联合主键

​写到最后

四季轮换,已经数不清凋零了多少, 愿我们往后能向心而行,一路招摇胜!

🐋 你的支持认可是我创作的动力

💟 创作不易,不妨点赞💚评论❤️收藏💙一下

😘 感谢大佬们的支持,欢迎各位前来不吝赐教

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

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

相关文章

【Notebook系列第十三期】基于多模型推理任务的车辆特征识别

在之前的课程中&#xff0c;我们分享的推理任务大部分都只由一个模型构成&#xff0c;但在真实的业务场景下&#xff0c;往往需要我们将多个模型放在一起去运行&#xff0c;才能获取到这个任务的最终预期结果。 因此&#xff0c;本次分享将通过一个简单的示例演示如何使用 Ope…

12月13日(第11天)

腾讯云上通过面板开放端口&#xff0c;不起作用&#xff0c;解决办法&#xff1a;手动在服务器上开放&#xff0c;参考文章地址&#xff1a;在腾讯云控制台下配置防火墙端口无效 直接关闭防火墙是最简单的&#xff0c;systemctl stop firewalld&#xff0c;然后再再腾讯云上打开…

解决端口被占用的方法(查看端口和关闭端口)

目录 前言必读 一.简介 二、解决办法 1.查看该端口是否被占用 2.关闭占用该端口的进程 前言必读 读者手册&#xff08;必读&#xff09;_云边的快乐猫的博客-CSDN博客 一.简介 在使用各种端口时候经常会出现端口被占用导致代码程序无法执行或者执行错误。一般都是由于该端…

DataGear 4.3.0 发布,数据可视化分析平台

DataGear 4.3.0 发布&#xff0c;增强图表和看板功能&#xff0c;具体更新内容如下&#xff1a; 新增&#xff1a;看板模板新增dg-dashboard-auto-render属性&#xff0c;用于控制看板是否自动渲染&#xff1b;新增&#xff1a;看板模版新增dg-dashboard-code属性&#xff0c;…

Spring Batch 批处理-作业参数设置与获取

引言 书接上篇Spring Batch批处理-作业Job简介&#xff0c;上篇带小伙伴们了解色作业Job对象&#xff0c;那这篇就看一下作业参数是啥一回事&#xff0c;同时要怎么设置参数并获取参数的。 JobParameters 前面提到&#xff0c;作业的启动条件是作业名称 识别参数&#xff0…

MQ消息中间件

MQ消息中间件1、应用场景1、流量削峰2、应用解耦3、异步处理2、MQ分类1、ActiveMQ2、kafka3、RocketMQ4、RabbitMQ3、RabbitMQ详解3.1、核心概念3.2 RabbitMQ基本知识点3.3消息发布确认3.4 交换机1、应用场景 1、流量削峰 将访问的大流量通过消息队列做缓冲&#xff0c;我们可…

二叉树-二叉树的基础遍历(3)

二叉树的遍历的三种方式 1.前序遍历&#xff1b; 先访问根结点&#xff0c;然后再访问左子树&#xff0c;最后访问右子树 2.中序遍历&#xff1b; 先访问左子树&#xff0c;中间访问根节点&#xff0c;最后访问右子树 3.后序遍历&#xff1b; 先访问左子树&#xff0c;再访问右…

PicoRV32 笔记 05

接口信号 PicoRV32 提供一个本地存储器接口&#xff0c;Native Memory Interface。 本地存储器接口采用 valid-ready握手信号。这种机制在axi总线中使用相同&#xff0c;能够实现流控&#xff0c; 和axi总线不同点&#xff0c;PicoRV32本地接口使用一组valid-ready信号&…

什么是SWDM4和100G QSFP28 SWDM4光模块?

随着OM5多模光纤(MMF)的推广和40G或100G数据中心传输网络的大规模部署&#xff0c;SWDM技术逐渐进入人们的视野并开始得到应用。那么&#xff0c;什么是SWDM4呢&#xff1f;什么是100G SWDM4光模块&#xff1f;它们的优势是什么&#xff1f;跟着易天光通信ETU-LINK看下面的文字…

十、原型、原型链、闭包和立即执行函数、插件开发初始

十、原型、原型链、闭包和立即执行函数、插件开发初始 原型 什么是原型&#xff08;prototype&#xff09;&#xff1f; 无论何时&#xff0c;只要创建一个函数&#xff0c;就会按照特定的规则为这个函数创建一个prototype属性&#xff0c;指向原型对象。 function Car(){}…

Vue入门与指令

Vue入门 1.1、MVVM编程思想 MVVM&#xff1a;页面输入改变数据&#xff0c;数据改变影响页面数据展示与渲染。 M&#xff08;model&#xff09;&#xff1a;普通的javascript数据对象。 V&#xff08;view&#xff09;&#xff1a;前端展示页面。 VM&#xff08;ViewModel&…

Jmeter初了解-接口并发测试

Jmeter初了解-接口并发测试 介绍 我们在开发的时候&#xff0c;经常会需要进行接口压力测试&#xff0c;确定接口运行的稳定情况 这里我们就使用java开发的测试工具Jmeter来进行测试。 Jmeter 官网地址 Apache JMeter™应用程序是开源软件&#xff0c;是一个 100% 纯 Jav…

Pytorch安装详细过程及遇到的问题解决

一、Aanconda的安装 可以参考笔者的这篇博客&#xff1a;Anaconda安装详细教程 二、准备工作 1、查看本机的python的版本(本机python解释器版本为3.8.5) 2、单击启动Anaconda Prompt创建新虚拟环境 3、在Anaconda Prompt依次执行以下命令&#xff0c;创建名字为pytorch的虚拟…

nn.Embedding使用

nn.Embedding是一种词嵌入的方式&#xff0c;跟one-hot相似但又不同&#xff0c;会生成低维稠密向量&#xff0c;但是初始是随机化的&#xff0c;需要根据模型训练时进行调节&#xff0c;若使用预训练词向量模型会比较好。 1. one-hot one-hot是给定每个单词一个索引&#xf…

概论_第4章__方差D(X)的定义和性质

一 定义 通常以此公式来计算&#xff1a; 就是说&#xff1a; 方差 X的平方再求期望 —— X的期望的平方 即 括号里面的平方的期望减去期望的平方&#xff0c; 怎样求期望点击&#xff1a;概论_第4章__期望的定义和性质 注意&#xff1a; 方差不可能为负数。 2. …

如何快速拥有自己的虚拟形象?

元宇宙&#xff08;Metaverse&#xff09;&#xff0c;是人类运用数字技术构建的&#xff0c;由现实世界映射或超越现实世界&#xff0c;可与现实世界交互的虚拟世界&#xff0c;具备新型社会体系的数字生活空间。 可见元宇宙第一步是创建专属虚拟形象&#xff0c;但创建3D虚拟…

Android入门第45天-手工发送一个BroadCast

简介 上一篇我们讲了简单的动态BroadCast&#xff0c;今天我们通过手工来发送一条BroadCast进一步来了解BroadCast。 在上一篇里我们使用BroadCast监听网络状态&#xff0c;今天我们要完成的是自己发一条自自己的消息来触发BroadCast Receiver。 设计 为了让Receiver收听到…

蓝牙耳机无延迟哪款好?适合打游戏的无线蓝牙耳机

手机可以说是人手必备&#xff0c;随声得还有蓝牙耳机&#xff0c;随着3.5耳机孔得消失&#xff0c;蓝牙耳机可以说是现在得主流&#xff0c;无论哪个年龄段都可以佩戴蓝牙耳机&#xff0c;日常听歌、追剧&#xff0c;和朋友玩游戏佩戴蓝牙耳机&#xff0c;已经成为一种生活方式…

mybatis06:MyBatis的多表操作

目录 1.一对一关系 2.一对多查询 3.多对多查询 4例题演示 ​5.知识小结 1.一对一关系 2.一对多查询 3.多对多查询 4例题演示 前置准备 对应的依赖 <dependencies><!-- mysql驱动 --><dependency><groupId>mysql</groupId><artifactId&…

外汇交易:流行图表指标盘点

您所学到的关于交易的一切都像一种工具&#xff0c;已被添加到外汇交易者的工具箱中。当您在正确的时间使用正确的工具时&#xff0c;您的图表指标工具将为您提供更好的机会做出正确的交易决策。 布林带 布林带用来衡量市场的波动性。它们的作用类似于迷你支撑位和阻力位。 布…