当前位置: 首页 > news >正文

MySQL表的约束

前言

1.空属性

2.默认值

3.列描述

4.0填充

5.主键

复合主键 :

6.自增长

7.唯一键

8.外键


前言

我们在生活中,每个人都有一个或多个独一无二的属性,但是当我们在MySQL中进行数据插入时,我们可能错误的将这些独特的属性重复插入而全然不知,诸如此类或者其他特殊情况。为了避免这种情况发生。MySQL在设计时添加了对表中列属性约束的选项。本文就来介绍一下MySQL中一些常见的约束。


1.空属性

案例:

创建一个班级表,包含班级名或班级所在的教室。

  • 如果班级名为空,那么就不知道某个人对应的是哪个班级的。
  • 如果班级所在教室为空,那么就不知道某个人所在的教室是哪个。

所以,以上两种属性均为必要属性,都不能为空(not null),这个时候就需要在建立表的时候添加非空约束。

create table [表名]([列名] [列类型] not null,... );
图1        null约束示例

2.默认值

当一某个属性在某个数据集中出现占大多数的时候,我们可以为该对象的属性设置一个默认值(deafault),这样做之后,我们只对有变化的值进行显示插入即可。 

create table [表明]([列名] [列类型] defaul [默认值],...);
图2        默认约束示例

 不知道各位读者是否还记得在第一部分中插入一个有not null约束的列时,不对该列进行赋值的错误是什么。

图3        未对not null约束列进行赋值时的报错

我们可以看到,错误信息是没有默认值,实际上,当某一列存在默认值的时候,即便该列有not null属性约束,这个约束也不会生效。因为如果你对该列进行赋值,那么MySQL就会使用你提供的数据去填写对应的列,如果没有进行赋值,但是存在默认值,那么MySQL就是使用默认值去填写对应的列。

图4        default与not null约束

3.列描述

列描述(comment)是关于一个列的描述,没有实际意义也不会在表显示,但是我们可以通过show查看表的创建过程,进而查看列描述。列描述通常是给程序员或者数据库管理人员查看的。

create table [表名]([列名] [列类型] comment [描述字段(以字符串形式)],...);
图5        列描述示例

4.0填充

零填充(zero fill)是指我们当某一列为整数类型的时候,假设该整数用十位数字表示,我们知道对于数字10,我们可以使用十进制“10”来表示,也可以“0000000010”来表示。零填充就是将那些没有数字的位填充为0。零填充只是表示方式发生了变化,但是数据的大小并没有被改变。

create table [表名]([列名] [列类型] zerofill,...);
图6        0填充示例

5.主键

主键(primary key) 用来约束表中的某一列,在该列中数据不允许重复,且一张表中只能存在一个主键列,主键通常是一个整数类型搭配着自增长使用,用来作为某一条数据的唯一标识。

create table [表名]([列名] [列类型] primary key,...);
图7        主键示例

复合主键 :

复合主键,可以让多列一同构成一个主键。

create table [表名]([列名] [列类型] primary key([列名1],[列名2],...),...);
图8        符合主键示例

6.自增长

自增长(auto_increment)修饰的列时,当对应的字段不给值,那么将会由系统自动触发,选择当前字段中的最大值+1,若对应字段给值,则将值赋给对应字段。通常和主键搭配,形成逻辑主键。

  • 自增长修饰的列必须是整形
  • 一张表最多有一个自增长
  • 任何字段作为自增长,必须是一个索引。
create table [表名]([列名] [列类型] auto_increment primary key,...);
图9        自增长与键值约束
图10        自增长示例

7.唯一键

唯一键(unique)是用来标识表中的某一列不能冲突的约束,咋一听似乎与主键的约束功能一致,但实际上二者还是有差别的:

  • 约束项上:唯一键允许插入内容为NULL(插入内容为空),但是主键不允许。
  • 约束数量上:一个表中可以有多个唯一键,但是不可以有多个主键。

我们从实际出发理解一下主键与唯一键的区别:
一个人会拥有多个独一无二的属性,比如说身份证号、生物信息等。这些属性不会因为统计方式的改变而改变。但是对于主键来说,主键通常是用来在一个表中标识某一行数据的在该表中的先后顺序,也就是说主键通常是在表中唯一的,在不同的表中主键信息可能会因为统计方式的改变而改变。

create table [表名]([列名] [列类型] unique,...);
图11        主键与唯一键

8.外键 

外键约束(foreign key)通常用来指定插入列的内容对应的数据,这样写可以一定程度上节省空间,如图12所示,如果将主表中的数据全都加入到从表中,在保证原意的条件下,显然会增大从表的存储空间。

foreign key [从表列] reference [主表列]
//外键约束要创建到从表列
图12        外键约束
图13        外键约束表的创建
图14        外键约束表信息的插入

http://www.mrgr.cn/news/40784.html

相关文章:

  • JS+HTML基础
  • 性能微基准测试JMH
  • windows系统控制面板里面卸载软件的时候,出现invalid uninstall control file错误怎么办
  • 初始C语言(五)
  • 基础算法--双指针【概念+图解+题解+解释】
  • Qt界面优化——QSS
  • Nginx基础详解4(location模块、nginx跨域问题的解决、nginx防盗链的设计原理及应用、nginx模块化解剖)
  • 【Python报错已解决】KeyError: ‘key‘
  • 计算机网络:计算机网络概述:网络、互联网与因特网的区别
  • 数据结构-3.8.栈在括号匹配中的应用
  • 数据结构-3.10.队列的应用
  • 前端BOM常用操作
  • 知识图谱入门——2:技术体系基本概念:知识表示与建模、知识抽取与挖掘、知识存储与融合、知识推理与检索
  • 【EXCEL数据处理】000011 案列 EXCEL带有三角形图标的单元格转换
  • 【React】入门Day01 —— 从基础概念到实战应用
  • 【项目开发】跨专业合作平台实战(附源码)
  • 基于 Transformer 的中英文翻译项目
  • 48.哀家要长脑子了!
  • 代码随想录算法训练营第四六天| 647. 回文子串 516.最长回文子序列
  • 【Java 集合】List接口 —— ArrayList 与 LinkedList 详解