约束的目的:
1、约束保证数据的完整性和一致性。
2、约束分为表级约束 和 列级 约束。(针对约束字段的数目的多少来确定的)
3、约束类型包括 not null (非空约束)
  primary key(主键约束)
  unique key(唯一约束)
  default(默认约束)
  foreign key(外键约束)
 
 
NUll,字段值可以为空
NOt Null,字段值禁止为空。 如果此字段不赋值,mysql将会报错
null/not null 限定mysql字段是否必须赋值。
 
auto_increment
自动编号,且必须与主键组合使用
默认情况下,起始值为1,每次增量为1。
 
primary key
主键约束
每张表只能存在一个主键
主键保证记录的唯一性
主键自动为NOT NULL
aouto_increment 必须和主键一块使用,但是主键不一定要和auto_increment使用
 
unique key
唯一约束
唯一约束可以保证记录的唯一性
唯一约束的字段可以为空值(NULL)
每张数据表可以存在多个字段唯一约束
注: 如果多个字段唯一,且为空的话,其实只有一个为空,这样就保证了字段的唯一性。
 
default
默认值
当插入记录时,如果没有明确为字段赋值,则自动赋值为默认值。
 
foreign key
外键约束
保持数据的一致性,完整性。
实现一对一或一对多的关系。
 
外键约束的条件:
1、父表和子表必须使用相同的存储引擎,且禁止使用临时表。
2、数据表的存储引擎只能为innoDB
3、外键列和参照列必须有相似的参照类型。其中数字的长度或者或者是否有符号位必须相同;而字符的长度可以不同
4、外键与参照列必须创建索引。如果外键列不存在索引的话,mysql将自动创建索引。
写法:foreign key (列名) references 表名 (列名)
 
外键约束的参照操作:(了解了解)
1、cascade:当父表删除或者更新时,自动删除或更新子表的匹配行。
2、set null : 从父表删除或更新,并设置子表中的外键列为null。如果使用该项,必须保证子表列没有指定not null
3、restrict:拒绝父表的删除或更新操作。
4、no action : 标准的sql关键字,在mysql中与restrict相同。
 
注: 在实际开发中一般不使用 foreign key关键字 的物理 外键,一般按照结构 使用逻辑 的外键。因为物理外键 有innodb引擎限制。
 
表级约束与列级约束
对一个数据类建立的约束,称为列级约束。
对多个数据类建立的约束,称为表级约束。
列级约束既可以在列定义时申明,也可以在列定义后申明。
表级约束只能在列定义后申明。
 
 
 
 
 
 
 

mysql基础之约束的更多相关文章

  1. 总结: MySQL(基础,字段约束,索引,外键,存储过程,事务)操作语法

    1. 显示数据库列表 show databases; # 查看当前所有数据库 show databases \G   #以行的方式显示 2. 在命令行中,执行sql语句 mysql -e 'show ...

  2. MySQL基础(三)——约束

    MySQL基础(三)--约束 约束是在表上强制执行的数据校验规则,主要用于维护表中数据的完整性以及当数据之间有以来关系时,保护相关的数据不会被删除. 根据约束对列的限制,可以划分为:单列约束(只约束一 ...

  3. MySQL基础(6) | check约束

    MySQL基础(6) | check约束 前言 在一些情况下,我们需要字段在指定范围的输入, 例如:性别只能输入 '男'或者'女',余额只能大于0等条件, 我们除了在程序上控制以外,我们还能使用 CH ...

  4. Mysql基础代码(不断完善中)

    Mysql基础代码,不断完善中~ /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权限 ...

  5. MYSQL基础操作

    MYSQL基础操作 [TOC] 1.基本定义 1.1.关系型数据库系统 关系型数据库系统是建立在关系模型上的数据库系统 什么是关系模型呢? 1.数据结构可以规定,同类数据结构一致,就是一个二维的表格 ...

  6. mysql 基础篇5(mysql语法---数据)

    6 增删改数据 -- ********一.增删改数据********* --- -- 1.1 增加数据 -- 插入所有字段.一定依次按顺序插入 INSERT INTO student VALUES(1 ...

  7. MySQL基础(二)——DDL语句

    MySQL基础(二)--DDL语句 1.什么是DDL语句,以及DDL语句的作用 DDL语句时操作数据库对象的语句,这些操作包括create.drop.alter(创建.删除.修改)数据库对象. 2.基 ...

  8. MYSQL基础笔记(二)-SQL基本操作

    SQL基本操作 基本操作:CRUD,增删改查 将SQL的基本操作根据操作对象进行分类: 1.库操作 2.表操作 3.数据操作 库操作: 对数据库的增删改查 新增数据库: 基本语法: Create da ...

  9. MYSQL基础笔记(一)

    关系型数据库概念: 1.什么是关系型数据库? 关系型数据库:是一种建立在关系模型(数学模型)上的数据库 关系模型:一种所谓建立在关系上的模型. 关系模型包含三个方面: 1.数据结构:数据存储的问题,二 ...

随机推荐

  1. “selenium.common.exceptions.SessionNotCreatedException: Message: Unable to find a matching set of capabilities“解决办法

    问题: 原因:firefox浏览器版本和浏览器驱动版本不匹配 解决办法:卸载高版本浏览器,安装低版本浏览器 下载地址:http://ftp.mozilla.org/pub/firefox/releas ...

  2. webpack4+koa2+vue 实现服务器端渲染(详解)

    _ 阅读目录 一:什么是服务器端渲染?什么是客户端渲染?他们的优缺点? 二:了解 vue-server-renderer 的作用及基本语法. 三:与服务器集成 四:服务器渲染搭建 4.1 为每个请求创 ...

  3. 百万年薪python之路 -- 面向对象之继承

    面向对象之继承 1.什么是面向对象的继承 继承(英语:inheritance)是面向对象软件技术当中的一个概念. 通俗易懂的理解是:子承父业,合法继承家产 专业的理解是:子类可以完全使用父类的方法和属 ...

  4. 怎么在.NetCore3.0 中使用Log4net 写日志 及读取配置文件的信息

    1:安装Log4Net的 NuGet 包: 我们通常之需要安装这一个包即可,其他的主包会自动被添加进来: insatll-package  Microsoft.Extensions.Logging.L ...

  5. HDFS基本命令与Hadoop MapReduce程序的执行

    一.HDFS基本命令 1.创建目录:-mkdir [jun@master ~]$ hadoop fs -mkdir /test [jun@master ~]$ hadoop fs -mkdir /te ...

  6. js控制进度条数据

    <style><!-- #time{ width:500px; height: 20px; background: red; border-radius: 10px; } --> ...

  7. 匹马行天下之思维决定高度篇——道道道,学习Java之道

    致Java星球的程序员兄弟们的一封信 亲爱的Java星球的程序员兄弟们: 你们好!我是来自地球的一名Java程序员,首先我代表地球人对贵星球的高司令来到地球传授Java语言,造福了全人类,造福了整个地 ...

  8. UE4蓝图与C++交互——射击游戏中多武器系统的实现

    回顾   学习UE4已有近2周的时间,跟着数天学院"UE4游戏开发"课程的学习,已经完成了UE4蓝图方面比较基础性的学习.通过UE4蓝图的开发,我实现了类似CS的单人版射击游戏,效 ...

  9. 虚拟机kali linux与windows主机共享文件

    在windows中我们可以直接拖拽文件,有的时候wmtools无效 很苦恼 从kali中托文件就不可以, 于是那就用到了共享文件夹 一.在虚拟机名称处右键,选择设置,会弹出一个设置框 二.选择选项-& ...

  10. C语言I作业05

    问题 答案 这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-4/homework/9772 我在 ...