iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >【⑪MySQL | 约束(一)】概念 | 非空 | 唯一 | 主键 | 自增长约束
  • 553
分享到

【⑪MySQL | 约束(一)】概念 | 非空 | 唯一 | 主键 | 自增长约束

mysql数据库 2023-08-16 14:08:30 553人浏览 独家记忆
摘要

前言 ✨欢迎来到小K的MySQL专栏,本节将为大家带来MySQL约束的概念 | 非空约束 | 唯一约束 | 主键约束 | 自增长约束的分享✨ 目录 前言1. 约束(Constraint)概念2. 非空约束(NK)3. 唯一约束

前言

✨欢迎来到小KMySQL专栏,本节将为大家带来MySQL约束的概念 | 非空约束 | 唯一约束 | 主键约束 | 自增长约束的分享


1. 约束(Constraint)概念

1.1 为什么需要约束

对于已经创建好的表,虽然字段的数据类型决定了所能存储的数据类型,但是表中所存储的数据是否合法并没有进行检查。在具体使用Mysql 软件时,如果想针对表中的数据做一些完整性检查操作,可以通过表的约束来完成。

数据完整性(Data Intergrity)是指数据的精确性(Accuracy)和可靠性(Reliability)。他是防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出来的。

为了保证数据的完整性,sql规范以约束的方式对表数据进行额外的条件限制,主要从以下四个方面考虑:

  • 实体完整性(Entity Integrity)如:同一张表中,不能存在两条完全相同无法区分的记录
  • 域完整性(Domain Integrity)如:年龄范围0-120,性别范围 “男/女”
  • 引用完整性(Referential Integrity)如:员工所在部门,必须要在部门表中存在
  • 用户自定义完整性(User-defined Integrity)如:用户名唯一、密码不能为空等

1.2 什么是约束

约束是表级的强制规定。

可以在创建表时规定约束(通过``CREATE TABLE语句),或者在表创建之后通过ALTER T ABLE`语句规定约束。

1.3 约束分类

1.3.1 根据约束的字段分类

  • 单列约束
  • 多列约束

1.3.2 根据约束的作用范围分类

  • 列级约束
  • 表级约束

区别

① 位置不同 :列级约束是写在列的后面,标记约束时写在所有字段的最后面

② 支持的约束类型不同:列级约束可以支持所有的约束类型,表级约束不能支持非空和默认

③ 列级约束不可以起约束名,表记约束可以起约束名(主键除外,主键使用的PRIMARY KEY)

1.3.3 根据约束的作用分类

完整性约束关键字说明
NOT NULL(NK)约束字段的值不能为空
DEFAULT设置字段的默认值
UNIQUE KEY(UK)约束字段的值是唯一(同一列不能出现相同的值)
PRIMARAY KEY(PK)约束字段为表的主键,可以作为该表记录的唯一标识
AUTO_INCREMENT约束字段的值为自动增加
FOREIGN KEY(FK)约束字段为表的外键
CHECK()
  • 查看某个表已有的约束

    SELECT  * FROM infORMation_schema.TABLE_CONSTRAINTSWHERE table_name='emp';

2. 非空约束(NK)

2.1 概念

数据库表中的某个字段上的内容不希望设置为NULL时,则可以使用NK约束进行设置。即NK约束在创建数据库表时为某些字段加上“NOT NULL”约束条件,保证所有记录中该字段都有值。如果用户插入的记录中,该字段为空值,则数据库管理系统会报错。

2.2 特点

  • 默认情况下,所有类型的值都可以是NULL
  • 一个表可以有很多字段指定非空约束
  • 空串" "不等于NULL,0也不等于NULL,NULL也不等于NULL

2.3 添加非空约束

  1. 创建表时
CREATE TABLE table_name(字段名 数据类型 NOT NULL,    ...);
CREATE TABLE IF NOT EXISTS student(id INT NOT NULL,name VARCHAR(10) NOT NULL,score DECIMAL(4,1))DESC student;

在这里插入图片描述

Tips1:如果我们现在执行下面这条语句将会报错(Field ‘name’ doesn’t have a default value)
,这是因为默认值为NULL,而我们又指定了该字段不能为空

INSERT INTO student(id,score) VALUES(3,79.5);

  1. 创建之后添加
ALTER TABLE <表名> MODIFY 字段名 数据类型 约束;

Tips2:如果我们现在执行下面这条语句将会报错(Invalid use of NULL value),这是因为score字段中现在已经有空值了

ALTER TABLE student MODIFY score DECIMAL(4,1) NOT NULL;

2.4 删除非空约束

ALTER TABLE 表名 MODIFY 字段名 数据类型 NULL;#或ALTER TABLE 表名 MODIFY 字段名 数据类型;

3. 唯一约束(UK)

3.1 概念

当数据库表中的某个字段上的内容不允许重复时,则可以使用UK约束进行设置。即UK约束在创建数据库表时为某些字段加上“UNIQUE”约束条件,保证所有记录中该字段上的值不重复。如果用户插入的记录中,该字段上的值与其他记录里该字段上的值重复,则数据库管理系统会报错。

3.2 特点

  • 同一个表可以有多个唯一约束
  • 唯一约束允许值为NULL
  • 在创建唯一约束的时候,如果不给唯一约束命名,那么约束名就和字段名相同

3.3 添加唯一约束

  1. 创建表时添加
CREATE TABLE table_name(字段名 数据类型 UNIQUE KEY,    ...);
  1. 创建表后添加
  • 方法一
ALTER TABLE <表名> MODIFY 字段名 数据类型 UNIQUE;
  • 方法二
ALTER TABLE <表名> ADD [CONSTRAINT 约束名] UNIQUE [KEY](字段名);

3.4 删除唯一约束

  • 添加唯一约束的列上会自动创建唯一索引
  • 删除唯一约束只能通过删除唯一索引的方式删除
  • 删除时需要指定唯一索引名,唯一索引名和唯一约束名相同。
  • 如果创建唯一约束时未指定名称,如果是单列,就默认和列名相同;如果是组合列,那么默认和()中第一个列名相同。
ALTER TABLE <表名> DROP INDEX <索引名>;

4. 主键约束(PK)

4.1 概念

当想用数据库表中的某个字段来唯一标识所有记录时,则可以使用PK约束进行设置。即 PK约束在创建数据库表时为某些字段加上“PRIMARY KEY”约束条件,则该字段可以唯一地标示所有记录。

在数据库表中之所以设置主键,是为了便于数据库管理系统快速地查找到表中的记录。在具体设置主键约束时,必须要满足主键字段的值是唯一、非空的。由于主键可以是单一字段,也可以是多个字段,因此分为单字段主键和多字段主键。

4.2 特点

  • 主键约束相当于 唯一约束+非空约束,意味着不允许重复和NULL值

  • 主键约束对应着表中的一列或者多列(复合主键)

  • 如果是多列组合的复合主键约束,那么这些列都不允许为NULL值,并且组合的值不允许重复

  • mysql的主键名总是PRIMARY,就算自己命名了主键约束名也没用

  • 当创建主键约束时,系统默认会在所在的列或组合上建立对应的主键索引(能够根据主键查询的,就根据主键查询,效率更高),如果删除主键约束,主键约束对应的索引就自动删除了

  • 需要注意一点的是,不要修改主键字段的值。因为主键是数据记录的唯一标识,如果修改了主键的值,就有可能会破坏数据的完整性。

4.3 单字段主键

  • 创建表时指定主键约束
CREATE TABLE table_name(字段名 数据类型  PRIMARY KEY,    ...);

Tips:如果我们现在执行下面这条语句将会报错(Multiple primary key defined)

CREATE TABLE IF NOT EXISTS test2(empno INT PRIMARY KEY,   # 列级约束ename VARCHAR(10) PRIMARY KEY,sal DECIMAL(7,1))

只允许有一个!!!

  • ALTER TABLE添加主键约束
ALTER TABLE <表名> ADD PRIMARY KEY(字段名);

4.4 多字段主键(复合主键)

当主键有多个字段组合而成时,需要通过SQL语句CONSTRAINT来实现,语法形式如下:

CREATE TABLE table_name(字段名 数据类型,    ...    [CONSTRAINT 约束名] PRIMARY KEY(字段1,字段2...));

在上述语句中,在字段定义完之后统一设置主键,PRIMARY KEY关键字括号中的字段可以有多个,需要通过逗号分割,用来实现设置多字段主键。

4.5 删除主键

ALTER TABLE <表名> DROP PRIMARY KEY;

5. 设置字段值自动增加(AUTO_INCREMENT)

5.1 概念

AUTO_INCREMENT是 MySQL 唯一扩展的完整性约束,当为数据库表中插入新记录时,字段上的值会自动生成唯一的ID。在具体设置AUTO_INCREMENT约束时,一个数据库表中只能有一个字段使用该约束,该字段的数据类型必须是整数类型。由于设置AUTO_INCREMENT约束后的字段会生成唯一的ID,所以该字段也经常会设置成PK主键。

5.2 特点

  • 一个表最多只能有一个自增长列
  • 当需要产生唯一标识符或者顺序值时,可设置自增长
  • 自增长列约束的列必须是键列(主键列,唯一键列)
  • 自增约束的列的数据类型必须是整数类型
  • 如果自增列制定了0或NULL,会在当前最大值的基础上自增;如果自增列手动指定了具体值,直接付志伟具体值。

5.3 指定自增约束

  1. 方法一:创建表是指定
CREATE TABLE table_name(字段名 数据类型 PRIMARY KEY|UNIQUE AUTO_INCREMENT,    ...);
  1. 方法二:通过ALTER TABLE添加
ALTER TABLE <表名> MODIFY 字段名 数据类型 AUTO_INCREMENT;

5.4 删除自增约束

ALTER TABLE <表名> MODIFY 字段名 数据类型;

TIPS:如下图,删除empno等于3的数据,再插入一条数据,empno不是3而是4

在这里插入图片描述

6. 总结赠书:python深度学习“四大名著”之一全新PyTorch

✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
近年来,机器学习方法凭借其理解海量数据和自主决策的能力,已在医疗保健、 机器人、生物学、物理学、大众消费和互联网服务等行业得到了广泛的应用。
《Python机器学习:基于PyTorch和Scikit-Learn》这本书的定位是把机器学习理论和工程实践结合起来,从而降低读者的阅读门槛。从数据驱动方法的基础知识到最新的深度学习框架,本书每一章都提供了机器学习代码示例,用于解决实际应用中的机器学习问题。

在这里插入图片描述

这是一本全面介绍在PyTorch环境下学习机器学习和深度学习的综合指南,可以作为初学者的入门教程,也可以作为读者开发机器学习项目时的参考书。
深入介绍了机器学习方法的基础知识,不仅提供了构建机器学习模型的说明,而且提供了构建机器学习模型和解决实际问题的基本准则。无论是机器学习入门新手,还是计划跟踪机器学习进展的研发人员,都可以将本书作为使用Python进行机器学习的不二之选。

感兴趣的小伙伴可以自行阅读购买
当当网购买链接:Python深度学习“四大名著”之一全新PyTorch版

✨✨本次送书两本,评论区抽两位小伙伴送书✨✨
活动时间:截止到2023-07-22 20:00:00
抽奖方式:利用程序进行抽奖。
参与方式:关注博主、点赞、收藏,评论区发布高质量评论(单账号最多评论三次)
中奖名单:
溜达的大象
杭电码农-NEO

来源地址:https://blog.csdn.net/qq_72157449/article/details/131812634

您可能感兴趣的文档:

--结束END--

本文标题: 【⑪MySQL | 约束(一)】概念 | 非空 | 唯一 | 主键 | 自增长约束

本文链接: https://www.lsjlt.com/news/371332.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 【⑪MySQL | 约束(一)】概念 | 非空 | 唯一 | 主键 | 自增长约束
    前言 ✨欢迎来到小K的MySQL专栏,本节将为大家带来MySQL约束的概念 | 非空约束 | 唯一约束 | 主键约束 | 自增长约束的分享✨ 目录 前言1. 约束(Constraint)概念2. 非空约束(NK)3. 唯一约束...
    99+
    2023-08-16
    mysql 数据库
  • SQL语句 -非空约束 - 唯一约束 - 主键约束 - 默认约束 -外键约束
    文章目录 约束约束介绍和分类非空约束唯一约束主键约束默认约束案例练习外键约束 约束 约束介绍和分类 约束的概念: 约束是作用于表中列上的规则,用于限制加入表的数据 约束的存在保证了数据库中数据的正确性、有效性和完整性 ...
    99+
    2023-08-17
    sql 数据库 mysql
  • mysql中主键约束和唯一约束的区别
    mysql 中主键约束和唯一约束的区别在于:主键最多包含多个列,不允许空或重复值,标识每条记录,可作为外键;唯一约束可包含任意列数,允许空值但不允许重复值,防止特定列组合重复。 MyS...
    99+
    2024-04-26
    mysql
  • 浅谈MYSQL主键约束和唯一约束的区别
    目录主键约束唯一约束主键约束 PRIMARY KRY 主键 是唯一的 一张表只能有一个主键 AUTO_INCREMENT 一定要和主键连用 主键一定是非空的 NOT NULL 特点...
    99+
    2024-04-02
  • mysql 自增量与唯一性约束
    当一张数据表经过多次的删除操作后,它的自增值列通过会很混乱,不美观,这时就需要我们对它进行重新排序,让他从新从1开始。操作方法:先删除数据表中的原id字段,然后再重新建立id字段删除id字段:alter t...
    99+
    2024-04-02
  • sql主键约束和唯一约束有什么区别
    主键约束和唯一约束在功能上有一些区别。主键约束:- 主键约束用于定义一个表中的一列或一组列作为主键,用于唯一标识表中的每一行数据。-...
    99+
    2023-10-11
    sql
  • 如何在MySQL中创建唯一约束和外键约束
    要在MySQL中创建唯一约束,可以使用以下语法: ALTER TABLE table_name ADD CONSTRAINT con...
    99+
    2024-04-09
    MySQL
  • 数据库主键约束、唯一约束和唯一索引的区别是什么
    本篇内容主要讲解“数据库主键约束、唯一约束和唯一索引的区别是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“数据库主键约束、唯一约束和唯一索引的区别是什么”吧!主键约束(PRIMARY KEY...
    99+
    2023-06-29
  • mysql主键非空约束如何设置
    这篇文章主要介绍了mysql主键非空约束如何设置,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。mysql中可以通过在“CREATE TABLE”...
    99+
    2024-04-02
  • GBase 8s数据库主键约束、唯一约束和唯一索引的区别解析
    主键约束(PRIMARY KEY) 主键用于唯一地标识表中的每一条记录,可以定义一列或多列为主键,一个表上仅只能有一个主键;不建议更新主键;主键列上没有任何两行具有相同值(即重复值)...
    99+
    2024-04-02
  • mysql如何删除唯一约束
    本篇内容介绍了“mysql如何删除唯一约束”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!mysql删除唯一...
    99+
    2024-04-02
  • mysql唯一性约束如何删除
    要删除MySQL表中的唯一性约束,需要使用ALTER TABLE语句并使用DROP INDEX关键字。以下是删除唯一性约束的步骤: ...
    99+
    2024-04-09
    mysql
  • mysql唯一性约束如何设置
    在MySQL中,可以通过使用UNIQUE关键字来设置唯一性约束。唯一性约束可以用于确保表中的某个列或一组列的值是唯一的。 以下是在M...
    99+
    2024-04-09
    mysql
  • SQLServer中主键和唯一约束的区别是什么
    SQLServer中主键和唯一约束的区别是什么,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。首先说明一点,主键又称主键约束,它也是一种约束,看...
    99+
    2024-04-02
  • 如何解决MySQL报错:唯一键约束重复记录
    当 MySQL 报错唯一键约束重复记录时,可以采取以下几种解决方法:1. 查找重复记录:使用 SELECT 语句查询出重复记...
    99+
    2023-10-12
    MySQL
  • 【MySQL】唯一性约束【UNIQUE】从基础到就业
    唯一约束 【unique】: 用来限制某个字段/某列的值不能重复,唯一约束允许出现 多个空值 同一个表可以有多个唯一约束;唯一约束可以是某一个列的值唯一,也可以多个列组合的值唯一。 唯一性约束允许列值为空;在创建唯一约束的时候,如果不给唯一...
    99+
    2023-10-26
    mysql 数据库
  • MySQL中唯一性约束与NULL的示例分析
    这篇文章给大家分享的是有关MySQL中唯一性约束与NULL的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言之前做的一个需求,简化描述下就是接受其他组的 MQ 的消息,...
    99+
    2024-04-02
  • 如何解决MySQL报错:唯一键约束中的重复记录
    当MySQL报错唯一键约束中的重复记录时,可以采取以下几种方法来解决问题:1. 删除重复记录:通过执行DELETE语句来删除...
    99+
    2023-10-12
    MySQL
  • MySQL中主键为0与主键自排约束有什么关系
    这篇文章将为大家详细讲解有关MySQL中主键为0与主键自排约束有什么关系,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。开始不设置主键表的设计如下:如果id的...
    99+
    2024-04-02
  • MySQL数据库约束条件和自增长序列是什么
    这篇文章主要介绍“MySQL数据库约束条件和自增长序列是什么”,在日常操作中,相信很多人在MySQL数据库约束条件和自增长序列是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作