MySQL数据库表约束讲解


Posted in MySQL onJune 21, 2022

MySQL数据库表约束

为了防止往数据表中插入错误的数据,在MySQL中,定义了一些维护数据库完整性的规则,即表的约束。

常见的表的约束:

MySQL数据库表约束讲解

上表中列举的约束条件都是针对表中字段进行限制, 从而保证数据表中数据的正确性和唯一性。

一、主键约束

在MySQL中,为了快速查找表中的某条信息,可以通过设置主键来实现。主键约束是通过PRIMARY KEY定义的,它可以唯一标识表中的记录,这就好比身份证可以用来标识人的身份一样。

在MySQL中,主键约束分两种,具体如下:

1、单字段主键

单字段主键指的是由一个字段构成的主键,其基本语法如下:

MySQL数据库表约束讲解

上述案例中,表student创建了id、name和grade三个字段,其中id字段是主键。

2、多字段主键

多字段主键指的是多个字段组合而成的主键,其基本的语法格式如下所示:

MySQL数据库表约束讲解

上述案例中,表student创建了id、name和grade三个字段,其中id和name两个字段组合可以唯一确定一条记录。

【补充】一个表最多可以创建一个主键。

二、外键约束

如果表A的主键是表B中的字段,则该字段称为表B的外键;另外表A称为主表,表B称为从表。外键是用来

实现参照完整性的,不同的外键约束方式将可以使两张表紧密的结合起来,特别是修改或删除的级联操作将使

得日常维护更轻松。外键主要用来保证数据的完整性和一致性。其基本语法如下:

MySQL数据库表约束讲解

【补充】一个表允许有多个外键,且外键只适用于InnoDB表,MyISAM表不支持外键。

InnoDB表和MyISAM表的主要区别是:InnoDB表支持事务、行锁和外键,MyISAM不支持;InnoDB表索引式修改效率较MyISAM高,MyISAM表查询、插入和删除效率较InnoDB高,而且MyISAM索引和数据分离,索引压缩存储,而InnoDB索引和数据紧密结合,不支持压缩,所以MyISAM内存利用率比InnoDB高;另外MyISAM的移植性也更强。

三、非空约束

非空约束指的是字段的值不能为NULL,在MySQL中,非空约束是通过NOT NULL定义的,其基本语法

如下:

MySQL数据库表约束讲解

上述案例中,表student包含id、name和grade三个字段。其中id为主键,name为非空字段。

【补充】一个表可以有多个非空约束字段。

四、唯一约束

唯一约束用于保存数据表中字段的唯一性,类似于主键,即表中字段值不能重复出现。

唯一约束是通过UNIQUE定义的,其基本语法如下:

MySQL数据库表约束讲解

上述案例中,表student包含id、name和grade三个字段。其中id为主键,name字段为唯一值,不能重复。

【补充】一个表可以有多个唯一约束字段。

五、默认约束

默认约束用于给数据表中的字段指定默认值,即当在表中插入一条新纪录时,如果没有给这个字段赋值,那么,数据库系统会自动为这个字段插入默认值。

默认值是通过DEFAULT关键字定义的,其基本语法如下:

MySQL数据库表约束讲解

上述案例中,表student包含id、name和grade三个字段。其中id为主键,grade字段的默认值为0。

【补充】一个表可以有多个默认约束字段。

六、自增约束

在数据表中,若想为表中插入新记录自动生成唯一的ID,可以使用AUTO_INCREMENT约束来实现。

AUTO_INCREMENT约束的字段可以是任何整数类型。默认情况下,改字段的值是从1开始自增的。

其基本语法如下:

MySQL数据库表约束讲解

上述案例中,表student包含id、name和grade三个字段。其中id为主键,且没插入一条新纪录,id都会自动增加。

【补充】一个表只能设置一个自增约束字段。

数据库建表的约束条件

常用约束条件及简单介绍

primary key (PK)      #标识该字段为该表的主键,可以唯一的标识记录,主键就是不为空    且唯一当然其还有加速查询的作用
foreign key (FK)      #标识该字段为该表的外键,用来建立表与表的关联关系
not null              #标识该字段不能为空
unique key (UK)       #标识该字段的值是唯一的
auto_increment        #标识该字段的值自动增长(整数类型,而且为主键)
default               #为该字段设置默认值
unsigned              #将整型设置为无符号即正数
zerofill              #不够使用0进行填充

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。           


Tags in this post...

MySQL 相关文章推荐
Mysql基础知识点汇总
May 26 MySQL
Mysql数据库按时间点恢复实战记录
Jun 30 MySQL
MySQL系列之十一 日志记录
Jul 02 MySQL
MySQL分库分表详情
Sep 25 MySQL
Mysql Innodb存储引擎之索引与算法
Feb 15 MySQL
一次SQL如何查重及去重的实战记录
Mar 13 MySQL
如何创建一个创建MySQL数据库中的datetime类型
Mar 21 MySQL
MySQL 表锁定 LOCK和UNLOCK TABLES的 SQL语法
Apr 18 MySQL
CentOS MySql8 远程连接实战
Apr 19 MySQL
详解Mysql事务并发(脏读、不可重复读、幻读)
Apr 29 MySQL
MySQL查询日期时间
May 15 MySQL
mysql sock 文件解析及作用讲解
Jul 15 MySQL
MySQL数据库实验之 触发器和存储过程
Jun 21 #MySQL
MySQL transaction事务安全示例讲解
Jun 21 #MySQL
MySQL详细讲解变量variables的用法
Jun 21 #MySQL
mysql sql常用语句大全
Jun 21 #MySQL
MySQL示例讲解数据库约束以及表的设计
Jun 16 #MySQL
mysql幻读详解实例以及解决办法
Jun 16 #MySQL
mysql数据库隔离级别详解
Jun 16 #MySQL
You might like
Apache, PHP在Windows 9x/NT下的安装与配置 (一)
2006/10/09 PHP
PHP中函数内引用全局变量的方法
2008/10/20 PHP
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
2010/05/04 PHP
浅析php单例模式
2014/11/25 PHP
PHP中strcmp()和strcasecmp()函数字符串比较用法分析
2016/01/07 PHP
php 伪造HTTP_REFERER页面URL来源的三种方法
2016/09/22 PHP
php实现的二叉树遍历算法示例
2017/06/15 PHP
原生Js与jquery的多组处理, 仅展开一个区块的折叠效果
2011/01/09 Javascript
jquery select多选框的左右移动 具体实现代码
2013/07/03 Javascript
js判断运行jsp页面的浏览器类型以及版本示例
2013/10/30 Javascript
jquery中交替点击事件的实现代码
2014/02/14 Javascript
jquery.cookie.js用法实例详解
2015/12/25 Javascript
AngularJS 中的指令实践开发指南(一)
2016/03/20 Javascript
javascript学习指南之回调问题
2016/04/23 Javascript
深入理解JavaScript中的预解析
2017/01/04 Javascript
JS验证不重复验证码
2017/02/10 Javascript
js实现添加删除表格(两种方法)
2017/04/27 Javascript
node.js之基础加密算法模块crypto详解
2018/09/11 Javascript
vue-video-player 解决微信自动全屏播放问题(横竖屏导致样式错乱问题)
2020/02/25 Javascript
解决Nuxt使用axios跨域问题
2020/07/06 Javascript
python简单获取本机计算机名和IP地址的方法
2015/06/03 Python
python基础_文件操作实现全文或单行替换的方法
2017/09/04 Python
python try except 捕获所有异常的实例
2018/10/18 Python
Python中正则表达式的用法总结
2019/02/22 Python
pytorch:实现简单的GAN示例(MNIST数据集)
2020/01/10 Python
使用Python实现微信拍一拍功能的思路代码
2020/07/09 Python
推荐值得学习的12款python-web开发框架
2020/08/10 Python
20行代码教你用python给证件照换底色的方法示例
2021/02/05 Python
CSS Grid布局教程之网格单元格布局
2014/12/30 HTML / CSS
新加坡最早生产电动滑板车的制造商之一:FunsToTheFore
2020/09/08 全球购物
优秀村官事迹材料
2014/01/10 职场文书
应届电子商务毕业自荐书范文
2014/02/11 职场文书
中西医专业毕业生职业规划书
2014/02/24 职场文书
群众路线教育实践活动学习心得体会
2014/10/30 职场文书
工地食品安全责任书
2015/05/09 职场文书
无故旷工检讨书
2015/08/15 职场文书