约束的目的:
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. 使用git如何规范地向主线提交代码

    使用git向主干分支合并代码通常采用两种方式:第一种是merge,第二种是利用BeyondCompare等工具进行比对,将差异合并到主干: 通过merge合并代码出现冲突时,并不清楚谁的修改和谁的修改 ...

  2. ajax 轮询(适合web端二维码请求)

    (前几天 一直弄二维码轮询登录 想了半天 总算弄出来了 分享给大家    ^-^) 轮询: 所谓轮询 肯定需要 setInterval   但是怎么加ajax请求  需要有点小问题而且轮询成功后需要停 ...

  3. 14.Nginx四层负载均衡

    1.七层负载均衡: 根据url 调度不同的集群 url.cheng.com 10.0.0.5 10.0.0.7 /pass 10.0.0.8 /user 1.web01和web02配置 (只不过代码不 ...

  4. lambda高级查询

    1.什么是lambda表达式:Lambda 表达式,是一种简化的匿名函数,可用于创建委托或表达式目录树.其次,也可以将 Lambda 表达式作为参数进行传递,或者将它作用于函数调用值调用后返回的一个函 ...

  5. 【redis】redis的过期策略

    redis过期策略 在使用redis做缓存的时候,我们常常会设置过期时间.那么redis是如何清理这些过期的数据呢? 答案是: 定期删除 + 惰性删除 定期删除: redis每100ms就会随机抽查删 ...

  6. javascript运行时中的堆栈和队列

    下面是一个理论上的模型,js引擎着重实现和优化了描述的这几个语义 可视化描述 栈(stack) var a = 10; function bar(x) { var b = 5; fn(x + b); ...

  7. Leetcode Tags(1)Linked List

    1.知识点回顾 https://www.cnblogs.com/BigJunOba/p/9174206.html https://www.cnblogs.com/BigJunOba/p/9174217 ...

  8. vue订阅者模式

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. docker-compose下的java应用启动顺序两部曲之一:问题分析

    在docker-compose编排多个容器时,需要按实际情况控制各容器的启动顺序,本文是<docker-compose下的java应用启动顺序两部曲>的第一篇,文中会分析启动顺序的重要性, ...

  10. SpringCloud之链路追踪整合Sleuth(十三)

    前言 SpringCloud 是微服务中的翘楚,最佳的落地方案. 在一个完整的微服务架构项目中,服务之间的调用是很复杂的,当其中某一个服务出现了问题或者访问超时,很 难直接确定是由哪个服务引起的,所以 ...