MySQL表的约束示例详解

 更新时间:2025年12月01日 14:32:08   作者:s***4113  
文章详细介绍了数据库约束的种类,包括非空约束、默认值、列描述、主键(单主键和复合主键)、自增长、唯一键和外键,这些约束确保了数据库中数据的完整性、合法性和可预期性,对mysql表的约束相关知识感兴趣的朋友跟随小编一起看看吧

一.概念

真正约束字段的是数据类型,但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合****法性。

表的约束:表中一定要有各种约束,通过约束,让我们未来插入数据库表中的数据是符合预期的。

约束的本质是通过技术手段,倒逼程序员去插入正确的数据。

约束的最终目的,就是保证数据的完整性和可预期性

二.非空约束

非空约束有两个值:null(默认的)和not null(不为空)。

数据库中默认创建的字段,如果不添加非空约束,基本都是可以为空,但是实际开发时,有些字段可能被要求必须添加数据,因此必须设置为非空。同时应该尽可能保证字段不为空,因为数据为空没办法参与运算。

设置非空约束,需要在添加表格字段时,在后边追加上 “not null”。当某字段被设置非空后,如果添加数据时,未对该字段进行数据添加,就会添加失败

三.默认值

默认值:某一种数据会经常性的出现某个具体的值,可以在一开始就指定好,在需要真实数据的时候,用户可以选择性的使用默认值。

设置默认值,需要在字段后追加**“default 默认值”,此后如果添加数据时未对该字段添加数据,就会使用默认值去填充数据**。

四.列描述

列描述:comment,没有实际含义,专门用来描述字段,会根据表创建语句保存,用来给程序员或DBA来进行了解。例如:

name varchar(20) not null comment ‘姓名';

五.主键

1.单主键

主键:primary key用来唯一的约束该字段里面的数据,不能重复,不能为空,一张表中最多只能有一个主键;主键所在的列通常是整数类型。

可以在创建表时即在字段后追加 “primary key” 设置该字段为主键字段。

添加数据时,主键字段不能为空,也不能出现数据重复

创建表后,如果没有设置主键字段,同样可以追加设置

alter table 表名 add primary key(字段列表)

删除主键

alter table 表名 drop primary key;

2.复合主键

MySQL规定一张表中主键只有一个,但是这不代表主键只能是一个字段,多个字段可以同时为主键,称为复合主键

创建复合主键,可以在创建表时,通过 “primary key(字段,字段…)” 的方式,例如:

primary key(id, class_room)

注意必须是新的一行代码。

也可以通过上述追加的方式创建

alter table 表名 add primary key(字段,字段)

注意如果已经存在一个单字段主键,必须先删除该主键,才能重新创建复合主键

复合主键中,其单独的字段中,数据可以重复,但是多个字段组成的数据集中,数据不能重复

例如:先添加了一个(id,class_room)为(1,‘111’),的数据,就不能添加第二个(1,‘111’),但是可以添加(1,‘112’)或(2,‘111’)。

六.自增长

auto_increment:当对应的字段被设置自增长后,如果不添加数据,会自动的被系统触发,系统会从当前字段中已经有的最大值+1操作,得到一个新的不同的值必须和主键搭配使用,作为逻辑主键。

自增长的特点:

  • 任何一个字段要做自增长,前提是本身是一个索引(key一栏有值)
  • 自增长字段必须是整数
  • 一张表最多只能有一个自增长

自增长可以在创建表时直接在对应的主键字段后追加 “auto_increment”

自增长默认会从1开始,也可以在创建表时,在最后追加**“auto_increment=xxx”**,来设置自增长的初始值。

在插入后获取上次插入的 AUTO_INCREMENT 的值(批量插入时获取的是第一个值):

select last_insert_id();

七.唯一键

一张表中有往往有很多字段需要唯一性,数据不能重复,但是一张表中只能有一个主键,唯一键就可以解决表中有多个字段需要唯一性约束的问题。

唯一键的本质和主键差不多,唯一键允许为空,而且可以多个为空,空字段不做唯一性比较。

创建唯一键,可以在字段后追加**“unique” 。**

八.外键

外键用于定义主表和从表之间的关系:外键约束是指一个相同的字段,同时存在于两张表中,比如学生表中存在一个“班级号字段”,班级表中同样存在一个“班级号字段”,通过该字段将两张表在逻辑上合二为一

其中外键约束字段要定义在从表上该字段在主表上则必须有主键约束或****unique 约束。当定义外键后,要求外键列数据必须在主表的主键列存在或为null

创建外键需要在从表中定义下述语句:

foreign key (字段名) references 主表(列);

一般来说,主表要包含从表,比如班级中包含学生,所以班级表为主表,学生表为从表。

外键约束的主要作用:

外键约束,主要是同时规范两张表格的数据准确性,例如如果在班级表中,只有班级id为101和102的两个班级,那么在学生表中,如果添加班级id为103的数据信息,显然是不合常理的,在外键约束下,添加数据就会失败。

到此这篇关于MySQL表的约束示例详解的文章就介绍到这了,更多相关mysql表的约束内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 利用JuiceFS使MySQL 备份验证性能提升 10 倍

    利用JuiceFS使MySQL 备份验证性能提升 10 倍

    这篇文章主要介绍了如何让 MySQL 备份验证性能提升 10 倍,JuiceFS 非常适合用来做 MySQL 物理备份,通过不断调整 XtraBackup 的参数和 JuiceFS 的挂载参数,在一个小时内将时间缩短到原先的 1/10,下文一起来看相关内容的详细介绍吧
    2022-03-03
  • MySQL中JOIN算法的具体使用

    MySQL中JOIN算法的具体使用

    JOIN操作是SQL查询中至关重要的部分,它能够将多个表中的数据根据指定的条件组合起来,本文主要介绍了MySQL中JOIN算法的具体使用,感兴趣的可以了解一下
    2024-08-08
  • MySQL提示Accessdeniedforuser‘‘@‘localhost‘”的解决方案

    MySQL提示Accessdeniedforuser‘‘@‘localhost‘”的解决方案

    在使用MySQL数据库的过程中,有时会遇到错误提示:“Access denied for user ''@'localhost'”,这个错误通常意味着MySQL服务器拒绝了当前用户的连接请求,本文将详细探讨该问题的原因及解决方法,需要的朋友可以参考下
    2025-01-01
  • 通过.ibd文件恢复MySQL数据的全流程

    通过.ibd文件恢复MySQL数据的全流程

    .ibd 文件是 InnoDB 存储引擎的核心数据文件,存储表的行数据、索引及元信息,本文主要为大家介绍了通过.ibd文件恢复MySQL数据的全流程,需要的朋友可以参考下
    2025-11-11
  • MySQL触发器的使用和inserted和deleted表介绍

    MySQL触发器的使用和inserted和deleted表介绍

    这篇文章主要介绍了MySQL触发器的使用和inserted和deleted表,触发器,就是一种特殊的存储过程,触发器和存储过程一样是一个能够完成特定功能和存储在数据库服务器上的SQL片段,感兴趣想要详细了解可以参考下文
    2023-05-05
  • macOS Sierra安装Apache2.4+PHP7.0+MySQL5.7.16

    macOS Sierra安装Apache2.4+PHP7.0+MySQL5.7.16

    这篇文章主要为大家详细介绍了macOS Sierra安装Apache2.4+PHP7.0+MySQL5.7.16的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • MySQL常用类型转换函数总结(推荐)

    MySQL常用类型转换函数总结(推荐)

    这篇文章主要介绍了MySQL常用类型转换函数总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • MySQL中sum函数使用的实例教程

    MySQL中sum函数使用的实例教程

    这篇文章主要给大家介绍了关于MySQL中sum函数使用的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • MySQL多表关联查询相关练习题

    MySQL多表关联查询相关练习题

    这篇文章主要给大家介绍了关于MySQL多表关联查询的相关资料,在MySQL中JOIN语句是实现多表关联查询的关键,它可以将多个表格中符合条件的数据连接在一起,从而提供一个完整的查询结果,需要的朋友可以参考下
    2023-10-10
  • MySQL的UPDATE(更新数据)及语法详解

    MySQL的UPDATE(更新数据)及语法详解

    MySQL的UPDATE语句是用于修改数据库表中已存在的记录,本文将详细介绍UPDATE语句的基本语法、高级用法、性能优化策略以及注意事项,帮助您更好地理解和应用这一重要的SQL命令,感兴趣的朋友跟随小编一起看看吧
    2025-11-11

最新评论