约束

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

一. 常用的约束

  • 约束作用于表中的字段,可以在创建表或修改表的时候添加约束。
  • 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. vue watch的this 到底是什么?

    正文 watch: { value: (newV, oldV) => { this.a = newV; } } 加入该vue对象中,data 有: { data:{ a:5 } } 那么请问,如 ...

  2. mmcls/mmdet模型部署至 TorchServe

    mmcls/mmdet模型部署至 TorchServe 官方教程:模型部署至 TorchServe - MMClassification 0.23.2 文档 接口说明: serve/inference ...

  3. Flutter开发技巧集锦

    flutter中单例的写法 class AccountManager { factory AccountManager() => _instance ??= AccountManager._() ...

  4. HarmonyOS NEXT应用开发之预加载so并读取RawFile文件

    介绍 本示例主要介绍在TaskPool子线程中使用 dlopen 预加载 so 库并使用句柄调用库函数的方法,以及在Native中使用 pread 系统函数读取Rawfile文件的部分文本内容,并添加 ...

  5. 云效Codeup代码评审中的代码协同

    简介: 云效 Codeup 汇集了阿里巴巴最新的代码托管.代码协同技术,希望能够造福更多中国和世界的开发者. 大神说:"Show me the code",于是就有了代码评审. & ...

  6. 工业视觉智能实战经验之IVI算法框架2.0

    ​简介: 工业视觉智能团队在交付了多个工业视觉智能质检项目后,发现了工业视觉智能的共性问题和解法,打造了工业视觉智能平台,通过平台的方式积累和提升工业视觉的通用能力.在平台建设上最核心的能力是算法能力 ...

  7. 基于Python语言的数据可视化工具

    在数据分析中常用的图表可以使用使用 python语言的 matplotlib 和 seaborn 库选择要显示的可视化对象. 一.Matplotlib Matplotlib 是一个 Python 的 ...

  8. [FAQ] mogodb Robo3T 客户端全屏后 怎么退出全屏

    mongodb 的 Robo3T 客户端: 如果是不小心全屏了,不用担心,按 F11 恢复. 如果想要全屏,也是按 F11. Link:https://www.cnblogs.com/farwish/ ...

  9. ChatGPT 眼中的程序员

    1 你如何看待程序员这个行业 程序员这个行业在现代社会扮演着非常重要的角色.作为一个技术驱动的职业,程序员们负责开发.设计和维护软件和应用程序,这些技术改变了我们的生活方式.商业模式和社会互动方式. ...

  10. THUWC2024&NOIWC2024游记

    以 NOIWC 考试日为 Day 1 好了. Day -6 到重庆了.去报到,然后直接不去试机走了,这波主打一个自信. Day -5 THUWC Day1,四道传统题. 开 T1,一眼有一个 \(O( ...