MySQL 视频课 · 50 集 / 约束:概述、演示、外键与更新删除行为 / P33

第 33 集 / 共 50 · 约束:概述、演示、外键与更新删除行为 · 视频 p=33 · 时长 15:00

P33 33. 基础-约束-演示

讲义 4.2 约束演示 p62–64

按主题对应,非逐句切分

来源与核对说明

以同版讲义的公开镜像核对章节与页码(镜像非官方出品);非逐字稿,示例为原创补充。

本页是学习笔记,不等同于视频逐字稿。原声字幕未取得(匿名接口字幕轨为空且需登录,未使用任何账号),也没有逐句讲解记录;讲义只按节与页码对应,切点未逐句确证。

讲义索引:p62–64 · 4.2 约束演示 · 切点 notexact

讲义是第三方公开镜像(95 页 PDF),不是官方原件;这里只用它核对章节顺序与页码,不转载正文。

完整来源说明与变更记录 →

看视频,对照阅读:在新标签打开原视频(p=33)

约束演示:故意插坏数据,看 1062 / 1048 / 3819 三种报错。

复习模式:快速跳知识点(详解在下方各节)

复习顺序:先看“一句话理解”能否复述,再扫步骤,最后做自测;答不出时回到小例与易错。

一句话理解

这一集把常用约束写进一张表(主键、非空、唯一、默认、CHECK;外键在 P34 单独讲),再故意插入坏数据,看数据库怎样拒绝。

按这 4 步做

  1. 先建带约束的表:主键自增、姓名非空且唯一、年龄用 CHECK 限定范围、状态给默认值。
  2. 先插合法数据,确认能进;再一次只违反一条规则,观察报错。
  3. 对着错误码读原因:1062 是唯一冲突、1048 是非空、3819 是 CHECK 不通过。
  4. 改回合法值再插一次,确认表仍可正常写入。

小例

先准备本集练习数据:p33.sql · 练习库说明

SQL 示例
CREATE TABLE practice_user (
  id     INT PRIMARY KEY AUTO_INCREMENT,
  name   VARCHAR(10) NOT NULL UNIQUE,
  age    INT CHECK (age > 0 AND age <= 120),
  status CHAR(1) DEFAULT '1'
) ENGINE = InnoDB;

INSERT INTO practice_user (name, age) VALUES ('小甲', 19), ('小乙', 25);

【原创演示】原创演示表,字段与视频里的 user 表相似,但表名和数据都不同。插入只给 name 和 age,id 由自增生成,status 取默认 '1'。下面三种插入应被拒绝:重复 name 报 1062 Duplicate entry;name 传 NULL 报 1048;age 传 130 报 3819 检查约束失败。这些结果已在隔离的 MySQL 8.0.46 测试实例逐条验证(1062/1048/3819);你也可以用 p33.sql 在本地练习库复现。

易错点

30 秒速记

建表带约束 → 插合法数据 → 逐条违反 → 读 1062/1048/3819;UNIQUE 允许多 NULL;自增不回填。

自测(2 题,先答再展开)

自测 1:为什么重复插入同名会失败,而插入两个 NULL 姓名不会?

name 同时有 NOT NULL 和 UNIQUE:NULL 先被 NOT NULL 挡住;如果只有 UNIQUE,多个 NULL 是被允许的,因为唯一性比较不把 NULL 当作相等。

自测 2:报 3819 说明什么?

CHECK 的表达式对这条数据不成立(结果为假),数据库拒绝了写入;先看表达式范围和传入值。

材料与来源

展开材料出处、讲义页码与证据等级
材料类型 / 位置支持了什么
P33 原视频页(BV1Kr4y1i7ru)平台视频页 · P33;采样静帧 t012/t20/t30/t40/t50/t60/t70/t80/tendt20/tend 为“根据需求,完成表结构的创建”页,t70 为建表+插入演示。
MySQL 8.0 Reference:CREATE TABLE官方文档核对约束语法与自增、默认值行为,未逐字引用。

按 t70 帧核对:画面是 Workbench 里执行建表 + 插入的演示,建表含主键自增、name 非空唯一、age 的 CHECK 范围、status 默认值,输出区出现 1062 Duplicate entry 报错。正文改用原创表名 practice_user 与自造数据,未照抄课堂表结构与姓名;无字幕,讲师逐步解说未核实。

讲义对照:讲义 4.2 约束演示 · p62–64(公开镜像;按主题对应,切点 notexact)

  • 画面静帧 9 帧,采样点 0:12–14:47 / 全片 15:00(只用于确认画面主题,不作内容边界)
  • 原声字幕未取得:匿名接口字幕轨为空且需登录,未使用任何账号

等级含义:平台视频页 / 官方文档 / 课件 = 原始材料;二手整理 = 参考;推断 = 未经核实。站内补充的解释与练习会在此说明。

下载本集 Markdown