约束

约束是作用于表中字段上的规则,用于限制存储在表中的数据,保证数据库中数据的正确、有效和完整。

一. 常用的约束

  • 约束作用于表中的字段,可以在创建表或修改表的时候添加约束。
  • AUTO_INCREMENT 约束关键字 自动增长:用于比如每次新添加一行数据,id就+1。
  • 如果自增和主键一起使用时,插入了一行未按约束的数据(会显示插入失败),数据库会申请一次主键,那么下一次插入正确的数据时,获得的自增主键就会是数据库中前一个自增主键+2的值。
  • 一个字段可以有多个约束。
  • 创建表时添加约束:
create table {表名}(
字段1 类型 [{约束}] [comment 注释],
字段2 类型 [{约束}] [comment 注释],
...
字段n 类型 [{约束}] [comment 注释]
)[comment 表注释];
  • CHECK 检查约束语法:
# 下面是创建表语法中的其中一行
# 如我们的目的是:创建一个age字段,限制取值范围为0-120
age int check ( age > 0 and age <= 120) comment '年龄',
  • DEFAULT 默认约束语法:
# 下面是创建表语法中的其中一行
# 如我们的目的是:创建一个status字段,默认取值为1
status char(1) default '1' comment '状态',

二. 外键约束

外键约束用于两张表之间建立连接,从而保证数据的一致性和完整性。

  • 如上图所示,箭头的起点称为“子表”,终点称为“父表”
  • 主表与从表:主表存的是从北京到上海的高铁信息,从表则存的是:北京-天津;天津-河北....这种存在一定的主从关系,在数据库中称为主从表。
  • 父表与子表:你定义了一个导航菜单表(父表),然后每一个菜单下的子菜单定义了一张表(子表),这类数据称为父表与子表。

1. 添加外键:

# 创建表时建立外键
create table {表名}(
{字段名} {数据类型},
...
[constraint] [{外键名称}] foreign key({外键字段名}) references {主表}({主表列名})
); # 修改表时建立外键
alter table {表名} add constraint {外键名称} foreign key({外键字段名}) references {主表}({主表列名});

2. 删除外键:

alter table {表名} drop foreign key {外键名};

3. 外键的删除/更新行为

# 添加外键时指定行为
alter table {表名} add constraint {外键名称} foreign key({外键字段名}) references {主表}({主表列名}) on update {在更新时的行为} on delete {在删除时的行为};

MySQL学习笔记-约束的更多相关文章

  1. MySQL学习笔记——约束

    1.约束是在表上强制执行的数据检验规则,约束主要用于保证数据库的完整性. 2.当表中数据有相互依赖性时,可以保护相关的数据不被删除. 3.大部分数据库支持下面五类完整性约束: - NOT NULL非空 ...

  2. Mysql学习笔记(三)对表数据的增删改查。

    正文内容. 这一部分是最简单的,也是最麻烦的.简单是因为其实只包括增删该插四个部分.大体上看,增加数据.删除数据.修改数据.查询数据都不麻烦啊,我们日常都是常用的.这个谁不会呢?以前在培训机构学mys ...

  3. MySQL学习笔记一

    MySQL 学习笔记 一 一.数据库简单介绍 1. 按照数据库的发展时间顺序,主要出现了以下类型数据库系统: Ø 网状型数据库 Ø 层次型数据库 Ø 关系型数据库 Ø 面向对象数据库 上面4中数据库系 ...

  4. 【mysql学习笔记整理】

    /*mysql学习笔记整理*/ /*常用的数据库操作对象*/ #库的操作#创建#数据库的创建USE mysql;CREATE DATABASE db_x;#删除#删除数据库DROP DATABASE ...

  5. MySql学习笔记四

    MySql学习笔记四 5.3.数据类型 数值型 整型 小数 定点数 浮点数 字符型 较短的文本:char, varchar 较长的文本:text, blob(较长的二进制数据) 日期型 原则:所选择类 ...

  6. MySql学习笔记三

    MySql学习笔记三 4.DML(数据操作语言) 插入:insert 修改:update 删除:delete 4.1.插入语句 语法: insert into 表名 (列名1,列名2,...) val ...

  7. 一千行MySQL学习笔记 (转)

    出处:  一千行MySQL学习笔记 /* 启动MySQL */ net start mysql /* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 /* 跳过权 ...

  8. mysql basic operation,mysql总结,对mysql经常使用语句的详细总结,MySQL学习笔记

    mysql> select * from wifi_data where dev_id like "0023-AABBCCCCBBAA" ; 1.显示数据库列表.show d ...

  9. Mysql学习笔记(二)数据类型 补充

    原文:Mysql学习笔记(二)数据类型 补充 PS:简单的补充一下数据类型里的String类型以及列类型... 学习内容: 1.String类型 2.列类型存储需求 String类型: i.char与 ...

  10. Mysql学习笔记(一)数据类型

    原文:Mysql学习笔记(一)数据类型 学习内容: Mysql基本数据类型. 1.数字类型.. i.整型     Mysql数据类型             含义(有符号)     tinyint(m ...

随机推荐

  1. bookstack书栈网docker搭建

    准备好数据后,直接运行以下命令即可. docker run -d --name bookstack \ --restart always \ --privileged=true\ -p 8181:81 ...

  2. Git 中 HEAD、工作树和索引之间的区别

    一.HEAD 在git中,可以存在很多分支,其本质上是一个指向commit对象的可变指针,而Head是一个特别的指针,是一个指向你正在工作中的本地分支的指针 简单来讲,就是你现在在哪儿,HEAD 就指 ...

  3. ES6中数组新增了哪些扩展?

    一.扩展运算符的应用 ES6通过扩展元素符...,好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列 console.log(...[1, 2, 3])// 1 2 3console.l ...

  4. Javascript中的继承?如何实现继承?

    一.是什么 继承(inheritance)是面向对象软件技术当中的一个概念 如果一个类别B"继承自"另一个类别A,就把这个B称为"A的子类",而把A称为&quo ...

  5. 顺通鞋服ERP库存管理系统

    鞋服ERP库存管理系统是专门为鞋服行业设计的企业资源规划软件,它提供了一系列库存管理功能,帮助鞋服企业有效管理库存流程和提升库存管理效率.以下是一些鞋服ERP库存管理系统常见的功能和特点: 1. 库存 ...

  6. kubernetes CNI(Container Network Inferface)

    为什么需要 CNI 在 kubernetes 中,pod 的网络是使用 network namespace 隔离的,但是我们有时又需要互相访问网络,这就需要一个网络插件来实现 pod 之间的网络通信. ...

  7. Advanced .Net Debugging 7:托管堆与垃圾收集

    一.简介 这是我的<Advanced .Net Debugging>这个系列的第七篇文章.这篇文章的内容是原书的第二部分的[调试实战]的第五章,这一章主要讲的是从根本上认识托管堆和垃圾回收 ...

  8. 力扣661(java)-图片平滑器(简单)

    题目: 图像平滑器 是大小为 3 x 3 的过滤器,用于对图像的每个单元格平滑处理,平滑处理后单元格的值为该单元格的平均灰度. 每个单元格的  平均灰度 定义为:该单元格自身及其周围的 8 个单元格的 ...

  9. OpenYurt 之 Yurthub 数据过滤框架解析

    简介:OpenYurt 是业界首个非侵入的边缘计算云原生开源项目,通过边缘自治,云边协同,边缘单元化,边缘流量闭环等能力为用户提供云边一体化的使用体验.在 Openyurt 里边缘网络可以使用数据过滤 ...

  10. Spring Boot Admin 集成诊断利器 Arthas 实践

    简介: Arthas 是 Alibaba 开源的 Java 诊断工具,具有实时查看系统的运行状况:查看函数调用参数.返回值和异常:在线热更新代码:秒解决类冲突问题:定位类加载路径:生成热点:通过网页诊 ...