约束

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

一. 常用的约束

  • 约束作用于表中的字段,可以在创建表或修改表的时候添加约束。
  • 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. 分布式文件存储-FastDFS

    1.1 FastDFS简介 1.1.1 FastDFS体系结构 FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了 ...

  2. Java中list集合深复制

    import org.apache.commons.collections.CollectionUtils; import java.util.ArrayList; import java.util. ...

  3. 跨域是什么?Vue项目中你是如何解决跨域的呢?

    一.跨域是什么 跨域本质是浏览器基于同源策略的一种安全手段 同源策略(Sameoriginpolicy),是一种约定,它是浏览器最核心也最基本的安全功能 所谓同源(即指在同一个域)具有以下三个相同点 ...

  4. 任务不再等待!玩转DataWorks资源组

    引言 DataWorks提供了三种资源组的能力:独享资源组.自定义资源组和默认资源组,很多开发者在使用资源组时经常会碰到各类情况,到时候任务运行失败或者延迟,例如:1. 正在使用默认资源组,任务经常要 ...

  5. MaxCompute 公共云多租户设计的技术要点详解及产品实现特色

    ​简介:公共云大数据平台在多租户的设计和实现方式上有所差异.本文主要介绍在公共云大数据平台的多租实现方案中需要考虑的问题和挑战,重点介绍了MaxCompute在计算和存储多租实现上的特点.期望通过这些 ...

  6. 最佳实践|Spring Boot 应用如何快速接入 Prometheus 监控

    ​简介:SpringBoot 微服务的开发.发布与部署只占其生命周期的一小部分,应用和系统运维才是重中之重.而运维过程中,监控工作更是占据重要位置.那么,为了对系统的状态进行持续地观测,面向Sprin ...

  7. 揭秘!阿里实时数仓分布式事务Scale Out设计

    简介: Hybrid Transaction Analytical Processing(HTAP) 是著名信息技术咨询与分析公司Gartner在2014年提出的一个新的数据库系统定义,特指一类兼具O ...

  8. 双引擎驱动Quick BI十亿数据0.3秒分析,首屏展示时间缩短30%

    ​简介:在规划中,Quick BI制定了产品竞争力建设的三大方向,包括Quick(快)能力.移动端能力和集成能力.针对其中的产品"报表查看打开慢""报表开发数据同步慢&q ...

  9. MaxCompute Spark 资源使用优化祥解

    简介: 本文主要讲解MaxCompute Spark资源调优,目的在于在保证Spark任务正常运行的前提下,指导用户更好地对Spark作业资源使用进行优化,极大化利用资源,降低成本. 本文作者:吴数傑 ...

  10. 获国际架构顶会ATC2021最佳论文!Fuxi2.0去中心化的调度架构详解

    简介: 近日,在国际体系架构顶会USENIX ATC2021上,阿里云飞天伏羲团队与香港中文大学合作的一篇论文<Scaling Large Production Clusters with Pa ...