MySQL 视频课 · 50 集 / DDL:数据库与表操作、数据类型、图形化工具 / P08

第 08 集 / 共 50 · DDL:数据库与表操作、数据类型、图形化工具 · 视频 p=8 · 时长 20:44

P08 08. 基础-SQL-DDL-数据类型及案例

讲义 2.3.2.2 数据类型 / 2.3.2.3 表操作-案例 p20–23

按主题对应,非逐句切分

来源与核对说明

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

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

讲义索引:p20–23 · 2.3.2.2 数据类型 / 2.3.2.3 表操作-案例 · 切点 notexact

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

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

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

类型选错,后面插入和查询都会别扭。跟着员工表案例走一遍最直观。

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

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

一句话理解

建表时要给每个字段挑类型:挑小了存不下,挑大了浪费。这一集过一遍数值、字符串、日期三类常用类型,再用员工表案例练手。

按这 4 步做

  1. 数值类型按范围从小到大:TINYINT(1 字节)、SMALLINT、MEDIUMINT、INT(4 字节)、BIGINT(8 字节),还有 FLOAT、DOUBLE 和精确小数 DECIMAL。年龄用 TINYINT UNSIGNED 就够,还顺便挡掉负数。
  2. 字符串用 CHAR(n) 定长、VARCHAR(n) 变长。姓名、工号这类短文本用 VARCHAR,长度按业务上限给,不是越大越好。
  3. 日期时间:DATE 只要年月日、TIME 只要时分秒、DATETIME 存年月日+时分秒(范围到 9999 年)、YEAR 只存年份、TIMESTAMP 也存日期+时间但只占 4 字节、范围到 2038-01-19。入职时间只要日期就用 DATE;要存「某时刻」用 DATETIME;2038 年以后的时间(比如长期合同到期日)不能用 TIMESTAMP。
  4. 案例需求是“设计一张员工信息表”:编号纯数字、工号≤10 位、姓名≤10 位、性别一个汉字、年龄非负、身份证 18 位可能含 X、入职时间到日。逐条翻译成类型,就是下面这条建表语句。

小例

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

SQL 示例
CREATE TEMPORARY TABLE emp_case (
  id INT COMMENT '编号',
  workno VARCHAR(10) COMMENT '工号',
  name VARCHAR(10) COMMENT '姓名',
  gender CHAR(1) COMMENT '性别',
  age TINYINT UNSIGNED COMMENT '年龄',
  idcard CHAR(18) COMMENT '身份证号',
  entrydate DATE COMMENT '入职时间'
);
DESC emp_case;

七个字段对应七条需求:id 用 INT;workno、name 用 VARCHAR(10) 卡住 10 位;gender 用 CHAR(1) 正好一个汉字;age 用 TINYINT UNSIGNED 保证非负;idcard 用 CHAR(18),因为长度固定且末位可能是 X;entrydate 用 DATE。DESC 应返回 7 行,逐行看 Type 列就能对上设计。

下面每条只演示一个点,可以单独复制执行。

四种日期 / 时间类型的实际取值
CREATE TABLE t_time (
  d DATE,
  dt DATETIME,
  y YEAR,
  ts TIMESTAMP
);
INSERT INTO t_time VALUES
  ('2026-10-22', '2026-10-22 08:30:00', 2026, '2026-10-22 08:30:00');
SELECT d, dt, y, ts FROM t_time;

一行结果:2026-10-22、2026-10-22 08:30:00、2026、2026-10-22 08:30:00。DATE 与 DATETIME 的区别就是「要不要时分秒」;YEAR 只能存年份;TIMESTAMP 范围到 2038 年,超出会报错,而 DATETIME 能存到 9999 年。这里只记用途和范围,不展开时区换算。

2026-10-22 | 2026-10-22 08:30:00 | 2026 | 2026-10-22 08:30:00

易错点

30 秒速记

整数按范围选;精确小数用 DECIMAL;短文本 VARCHAR、定长 CHAR;日期用 DATE;类型本身就是一层约束。

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

自测 1:身份证号为什么不能用 INT 存?

INT 只有 4 字节,放不下 18 位数字;而且二代身份证末位可能是字母 X,不是数值。CHAR(18) 定长、能存字母,才匹配这个字段。

自测 2:CHAR 和 VARCHAR 该怎么选?

长度基本固定的短字段(性别、身份证、国家代码)用 CHAR,省去长度前缀;长度差别大的(姓名、地址)用 VARCHAR,避免定长浪费。

材料与来源

展开材料出处、讲义页码与证据等级
材料类型 / 位置支持了什么
B站原视频 P08《08. 基础-SQL-DDL-数据类型及案例》平台视频页 · P8标题、时长与分 P 信息取自平台公开页面;仅作外链,不在站内播放
本集采样画面 p08_t20.jpg(约 248s)平台视频页 · P8 / 约 248s已人工查看该帧:数据类型表格(MySQL数据类型.xlsx)的数值类型页:TINYINT/SMALLINT/MEDIUMINT/INT/BIGINT/FLOAT/DOUBLE/DECIMAL 及大小;只证明这一画面,不代表整集讲解
本集采样画面 p08_t80.jpg(约 994s)平台视频页 · P8 / 约 994s已人工查看该帧:幻灯片“案例—根据需求创建表(设计合理的数据类型、长度)”,列出员工表七条需求;右侧记事本写 create table emp;只证明这一画面,不代表整集讲解
MySQL 8.0 Reference Manual: Data Types官方文档语法条目备查,未逐字引用

讲义 p20–23「2.3.2.2 数据类型 / 2.3.2.3 案例」为主要依据:数值表、日期时间表(DATE/TIME/YEAR/DATETIME/TIMESTAMP,含 1/3/4/8 字节与范围)与员工表建表案例。原声字幕未取得(匿名接口字幕轨为空),讲师逐句讲解未核;正文示例为原创,四种类型的取值在 MySQL 8.0.46 实跑核对。

讲义对照:讲义 2.3.2.2 数据类型 / 2.3.2.3 表操作-案例 · p20–23(公开镜像;按主题对应,切点 notexact)

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

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

下载本集 Markdown