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表的约束内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • PowerDesigner连接MySQL数据库的详细步骤

    PowerDesigner连接MySQL数据库的详细步骤

    这篇文章主要介绍PowerDesigner连接MySQL数据库的详细步骤,文章通过图文介绍的非常详细,对大家学习PowerDesigner连接MySQL数据库有一定的帮助,需要的朋友可以参考下
    2023-09-09
  • MySQL普通表转换为分区表实战指南

    MySQL普通表转换为分区表实战指南

    本文将详细指导新手开发者如何将MySQL中的普通表转换为分区表,分区表在处理庞大数据集时展现出显著的性能优势,不仅能大幅提升查询速度,还能有效简化数据维护工作,文中有详细的代码示例供大家参考,需要的朋友可以参考下
    2024-06-06
  • Mysql树形递归查询的实现方法

    Mysql树形递归查询的实现方法

    这篇文章主要给大家介绍了关于Mysql树形递归查询的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-02-02
  • mysql中 ${param}与#{param}使用区别

    mysql中 ${param}与#{param}使用区别

    这篇文章主要介绍了mysql中 ${param}与#{param}使用区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 使MySQL能够存储emoji表情字符的设置教程

    使MySQL能够存储emoji表情字符的设置教程

    这篇文章主要介绍了使MySQL能够存储emoji表情字符的设置教程,关键在于utf8mb4字符集的设置,需要的朋友可以参考下
    2015-12-12
  • MySQL安装失败的原因及解决步骤

    MySQL安装失败的原因及解决步骤

    因很多同学安装mysql总是出问题,所以下面这篇文章主要给大家介绍了关于MySQL安装失败的原因及解决步骤,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • Windows下修改mysql的data文件夹存放位置的方法

    Windows下修改mysql的data文件夹存放位置的方法

    这篇文章主要介绍了在Windows下修改mysql的data文件夹存放位置的方法,需要的朋友可以参考下
    2014-03-03
  • MySQL优化之如何写出高质量sql语句

    MySQL优化之如何写出高质量sql语句

    在数据库日常维护中,最常做的事情就是SQL语句优化,因为这个才是影响性能的最主要因素。这篇文章主要给大家介绍了关于MySQL优化之如何写出高质量sql语句的相关资料,需要的朋友可以参考下
    2021-05-05
  • 图文详解mysql5.7安装教程

    图文详解mysql5.7安装教程

    这篇文章主要以图文结合的方式为大家详细介绍了mysql5.7安装教程的相关资料,需要的朋友可以参考下
    2016-05-05
  • 值得收藏的mysql常用命令集锦

    值得收藏的mysql常用命令集锦

    这篇文章主要为大家整理了mysql常用命令汇总,连接Mysql、修改mysql密码、数据库的创建删除等,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11

最新评论