约束的目的:
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.为什么要做图像分割: 图像分割是由图像处理到图像分析的关键步骤,准确的来说,没有图像分割,图像处理将无法实现其后续的操作.进 ...

  2. html简介(1)

    HTML 是用来描述网页的一种语言. HTML 指的是超文本标记语言: HyperText Markup Language HTML 不是一种编程语言,而是一种标记语言

  3. “无处不在” 的系统核心服务 —— ActivityManagerService 启动流程解析

    本文基于 Android 9.0 , 代码仓库地址 : android_9.0.0_r45 系列文章目录: Java 世界的盘古和女娲 -- Zygote Zygote 家的大儿子 -- System ...

  4. Cassandra官方介绍及安装

    Cassandra官方介绍及安装 这个数据库有很高的伸缩性和可用性,你完全不需要向性能妥协.在硬件或者云设施上做修改 官网:Cassandra官网 一.简介 cassandra这个数据库有很高的伸缩性 ...

  5. java大数运算(讲解)

    在算法竞赛或者面试中我们经常遇到大数问题,例如求一个很大的阶层,大数加法等等. 住在这种情况下我们用常规解法(使用long long或long long int)肯定是不行的, 而我们自己用c/c++ ...

  6. Spring Cloud Alibaba学习笔记(23) - 调用链监控工具Spring Cloud Sleuth + Zipkin

    随着业务发展,系统拆分导致系统调用链路愈发复杂一个前端请求可能最终需要调用很多次后端服务才能完成,当整个请求陷入性能瓶颈或不可用时,我们是无法得知该请求是由某个或某些后端服务引起的,这时就需要解决如何 ...

  7. 百万年薪python之路 -- socket()模块的用法

    socket()模块的用法: import socket socket.socket(socket_family,socket_type,protocal=0) socket_family 可以是 A ...

  8. 百万年薪python之路 -- 列表练习

    1.写代码,有如下列表,按照要求实现每一个功能 li = ["alex", "WuSir", "ritian", "barry&q ...

  9. Leetcode(2)两数相加

    Leetcode(2)两数相加 [题目表述]: 给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两 ...

  10. 在npm上发布自己的vue组件库(使用npm install 或者 CDN的方式引用)

    一.npm publish发布包到npm库的命令是npm publish npm publish发布包,需要先配置webpack.json文件,如果没有webpack.json文件,可以通过npm i ...