约束的目的:
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. Halcon一日一练:图像分割之阈值分割1

    先了解什么是阈值,度娘告诉我的是:一个领域或一个系统的界限称为阈,其数值称为阈值.在图像中,我们把图像看成一个由像素灰度值组成的数集,那么阈,就是这个图像中,根据目标与背景灰度值的差异,选取的一个合适 ...

  2. 《Java并发编程实战》读书笔记-第5章 基础构建模块

    同步容器类 同步容器类实现线程安全的方式:将所有状态封装起来,对每个公有方法使用同步,使得每一次只有一个线程可以访问.同步容器类包含:Vector.Hashtable.Collections.sync ...

  3. python如何判断一个对象是否是可迭代的?

    from collections import Iterable test_data = [{"type":1,"keyword":None}, {" ...

  4. jmeter-定时器使用

    在一般性能测试过程中,往往在前一个请求之后等待一段时间再执行下一个请求,这时会用到定时器. 以下列举常用的3中: 1.固定定时器: 2.

  5. .NET Core 3.0 本地工具

    .NET Core从最早期的版本就开始支持全局工具了.如果仅仅需要在某个项目中或某个文件夹中使用特定的工具,那么.NET Core 3.0就允许您这样做. 使用.NET Core 3.0,您可以在特定 ...

  6. 【网络安全】SQL注入、XML注入、JSON注入和CRLF注入科普文

    目录 SQL注入 一些寻找SQL漏洞的方法 防御SQL注入 SQL注入相关的优秀博客 XML注入 什么是XML注入 预防XML注入 JSON注入 什么是JSON注入 JSON注入的防御 CRLF注入 ...

  7. Hystrix dashboard - Unable to connect to Command Metric Stream.

    在使用boot 2.0.*以上版本 + cloud Finchley.RELEASE 查看仪表盘的时候会报错 Unable to connect to Command Metric Stream &l ...

  8. 过滤器、拦截器和AOP的分析与对比

    目录 一.过滤器(Filter) 1.1 简介 1.2 应用场景 1.3 源码分析 二.拦截器(Interceptor) 2.1 简介 2.2 应用场景 2.2 源码分析 三.面向切面编程(AOP) ...

  9. Vue---mock.js 使用

    mockjs 概述 在我们的生产实际中,后端的接口往往是较晚才会出来,并且还要写接口文档,于是我们的前端的许多开发都要等到接口给我们才能进行,这样对于我们前端来说显得十分的被动,于是有没有可以制造假数 ...

  10. Java 向数组中添加一个元素

    方法 一般数组是不能添加元素的,因为他们在初始化时就已定好长度了,不能改变长度. 向数组中添加元素思路: 第一步:把 数组 转化为 集合 list = Arrays.asList(array); 第二 ...