本章我们将介绍约束,约束放在列或表上。 它们限制了可以插入表中的数据。

我们有以下限制:

非空

唯一

主键

外键

枚举

SET

其他数据库也具有 CHECK 约束,该约束为有效数据设置了条件。 MySQL 解析了这个约束,但是没有强制执行。

非空约束

具有NOT NULL约束的列不能具有 NULL 值。

我们创建两个具有NOT NULL约束的列。

第一个SELECT语句执行成功,第二个失败。 SQL 错误说,LastName列不能为空。

唯一约束

UNIQUE约束确保所有数据在列中都是唯一的。

在这里,我们创建一个表Brands。 BrandName列设置为UNIQUE。 不能有两个名称相同的品牌。

对于键“ BrandName”,我们收到一个 SQL 错误 Duplicate 项“ Pepsi”。 只能有一个百事可乐品牌。

注意,PRIMARY KEY约束自动在其上定义了UNIQUE约束。

主键

PRIMARY KEY约束唯一地标识数据库表中的每个记录。 这是唯一键的特例。 主键不能为NULL,唯一键可以为。 可以有更多UNIQUE列,但是表中只有一个主键。 在设计数据库表时,主键很重要。 主键是唯一的 ID。 我们使用它们来引用表行。 在表之间创建关系时,主键成为其他表中的外键。

Brands表的 Id 列成为主键。

DESCRIBE语句显示有关表中各列的信息。 我们可以看到 Id 列定义了PRIMARY KEY,BrandName设置了UNIQUE约束。 在处理特定表时,主键用于唯一标识表中的行。 唯一键强制列中的所有数据都不重复。

外键

一个表中的FOREIGN KEY指向另一表中的PRIMARY KEY。 它是两个表之间的引用约束。 外键标识一个(引用)表中的一列或一组列,该列或表引用另一(引用)表中的一列或一组列。

我们将在两个表上显示此约束:Authors和Books。

在这里,我们创建 Authors 表。 在 MySQL 中,引用表和被引用表必须是 InnoDB 或 BDB 存储引擎。 在 MyISAM 存储引擎中,将解析外键,但不会强制使用外键。

我们创建Books表。 在这里,我们有一个AuthorId列名,它用作外键。 它引用Authors表的主键。

在我们的示例中,外键强制执行意味着什么? 我们无法使用Authors本书中没有的AuthorId在Books表中插入一行。

ENUM约束

ENUM是一个字符串对象,其值是从允许值列表中选择的。 在创建表时,它们在列规范中显式枚举。

我们有一个Shops表。 该表具有定义的Id,Name和Quality列。 Quality列是ENUM。 它允许具有三个指定值之一:High,Average或Low。

在前两个语句中,我们插入了两行。 在第三种情况下,该值在ENUM中不可用。 在这种情况下,将插入一个空字符串。

SET约束

SET可以具有零个或多个值。 每个值都必须从允许值列表中选择。

我们有一个Students表。 在此表中,我们有一个“证书”列。 每个学生可以拥有 0、1 个或多个这些证书。 这与ENUM约束不同,在ENUM约束中,允许值列表中只能有一个不同的值。

保罗有两个证书,珍妮有三个,马克有四个,但是只有两个被认可,因此只有前两个被写到了桌子上。 证书用逗号分隔。 不允许有空格。

mysql约束教程,MySQL 约束相关推荐

  1. MySQL基础教程系列-约束(三)唯一约束

    我们经常要使用唯一性约束来保证我们的数据正确性,例如企业的员工表中,所有人的手机号不可以重复,所有的身份证号不可以重复,这就是唯一性约束的体现,可以帮我们从数据库底层屏蔽很多错误问题,也是我们在设计中 ...

  2. MySQL基础教程系列-约束(一)主键约束

    主键是数据库中十分重要的概念,必须要掌握.合理的主键设置十分重要,直接决定着我们整个模型设计的合理性,如果前期设计不合理,在项目后期更改主键,将会带来灾难性的影响. 什么是主键,如何选取主键,主键的特 ...

  3. mysql php教程,MySQL PHP语法

    MySQL PHP语法 MySQL 可应用于多种语言,包括 PERL, C, C++, JAVA 和 PHP. 在这些语言中,Mysql在PHP的web开发中是应用最广泛. 在本教程中我们大部分实例都 ...

  4. MySQL数据库教程-mysql下载-sqlyog免注册中文下载

    现在在学数据库,推荐闫丽娜老师的视频教程,蛮容易理解的 MySQL数据库教程-我要自学网 http://www.51zxw.net/list.aspx?cid=651 mysql-workbench下 ...

  5. c mysql安装教程,Mysql安装教程_完成版(吐血式安装)

    每次在不同操作系统中安装oracle和mysql这些常规数据库,步骤就那么点儿,但是遇见的错误却是千差万别.. 记一次耗时两天的mysql数据库安装新得,有耐心,有毅力,憋生气. 1.官网上下载免安装 ...

  6. mysql fulsh_MYSQL教程:MySQL用户帐号管理_MySQL

    MySQL用户帐号管理主要用grant(授权)和revoke(撤权)两个SQL指令来管理.这两个指令实质是通过操作user(连接权限和全局权限).db(数据库级权限).tables_priv(数据表级 ...

  7. win10安装解压版mysql详细教程

    win10安装解压版mysql详细教程 MySQL官网下载地址: MySQL8.0下载. MySQL5.x版本的需要自行下载. 文章目录 win10安装解压版mysql详细教程 前言 一.解压下载的压 ...

  8. MySQL基础教程 包含SQL语句、约束、表关系、设计范式、多表、事务等

    简介 数据库 ​ 数据库(Database):是按照数据结构来组织.存储和管理数据的仓库.每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据. ​ 我们也可以将数据存 ...

  9. MySQL数据库之数据库约束,一文带你了解

    前言 从今天开始本系列就带各位小伙伴学习数据库技术.数据库技术是Java开发中必不可少的一部分知识内容.也是非常重要的技术.本系列教程由浅入深, 全面讲解数据库体系. 非常适合零基础的小伙伴来学习. ...

最新文章

  1. 三十七、页面置换算法
  2. RocketMQ(六):namesrv再探
  3. LINUX内核经典面试题30道及解答
  4. STM32 HAL库、标准外设库、LL库(STM32 Embedded Software)
  5. Python输入多行多组数据两个两求和
  6. 用xshell传输jdk_在JDK 9中将InputStream传输到OutputStream
  7. Algs4-1.4.38 3-sum的初级算法与ThreeSum性能比较
  8. 2006最新版个人所得税计算器
  9. pcie握手机制_【博文连载】PCIe扫盲——Ack/Nak 机制详解(一)
  10. 报错:content type application/x-www-form-urlencoded;
  11. bytes和string 与 “w“/“r“ “wb“/“rb“的对应关系
  12. 【蓝桥杯】题目分类汇总
  13. 计算机二级excel经典操作题,计算机二级office经典题库
  14. c语言三个人的象棋,强悍,300多行实现中国象棋人机对战
  15. \xe8\x83\xa5\xe5\xb8\x85\xe6\x9d\xb0转中文
  16. 李纳斯将注册 Linux 商标 用 Linux 名称将收费
  17. 用大白话聊聊JavaSE -- 如何理解Java Bean
  18. cbrt c语音_cbrt (Numerics) – C 中文开发手册 - Break易站
  19. 计算机系高考激励的句子,高考激励人心的句子及图片
  20. cmd中XX不是不是内部或外部命令,也不是可运行的程序 或批处理文件

热门文章

  1. 前端学习(2594):后台系统的权限控制和管理--界面的控制
  2. “约见”面试官系列之常见面试题之第一百零六篇之css只在当前组件中起作用(建议收藏)
  3. 前端学习(2256)如何解决冲突
  4. “约见”面试官系列之常见面试题第三十七篇之CSS3新属性(建议收藏)
  5. 前端学习(2158):webpack配置文件的分离
  6. Python sqrt() 函数
  7. 简单聊聊模型的性能评估标准
  8. xyz坐标图_“色觉地图”的建立(二):辐照度与亮度、rgb空间、“颜色图”的混色方式...
  9. vyos User Guide
  10. 串口数据字节位的理解