数据库原理与应用 第 5 章 · 第二节
课程 › 第 5 章 › 第二节 图形建表建表语句约束概述NOT NULL 版式
第 5 章 数据表的管理和表中数据操纵 · 第二节

创建数据表

用 Workbench 和 CREATE TABLE 建表,约束的种类与 NOT NULL
本 节 知 识 点
  1. 06用 Workbench 创建数据表
  2. 07用 CREATE TABLE 创建数据表
  3. 08定义表的约束
  4. 09NOT NULL 约束
06
第 5 章 · 第二节 · 课件第 8、9 页

用 Workbench 创建数据表

在 Tables 上右键选 Create Table,逐个字段填写。

课件第 8 页

分清楚

勾选项含义
PK主键
NN不能为空
UQ唯一
AI自动增长

重 点

点 Apply 后,Workbench 会先列出它生成的 CREATE TABLE 语句,确认后才执行。

07
第 5 章 · 第二节 · 课件第 10、11 页合并重做

用 CREATE TABLE 创建数据表

CREATE TABLE 写清表名和每个字段的名称、类型、约束。

5.2 MySQL 数据表管理课件第 10、11 页合并

用 CREATE TABLE 创建数据表

CREATE TABLE [IF NOT EXISTS] 表名 ( 字段名 数据类型 [列级约束] [COMMENT '说明'], 字段名 数据类型 [列级约束] [COMMENT '说明'], …… [表级约束] ) [ENGINE=存储引擎] [DEFAULT CHARSET=字符集];
例 在 teaching 数据库中建立学生表 s
CREATE TABLE s (
  sno CHAR(10) NOT NULL COMMENT '学号',
  sn VARCHAR(45) NOT NULL COMMENT '姓名',
  sex ENUM('男','女') NOT NULL DEFAULT '男' COMMENT '性别',
  age INT NOT NULL COMMENT '年龄',
  maj VARCHAR(45) NOT NULL COMMENT '专业',
  dept VARCHAR(45) NOT NULL COMMENT '院系',
  PRIMARY KEY (sno)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
  • 每个字段写一行:字段名、数据类型、约束,字段之间用逗号隔开,最后一项后面不加逗号
  • 方括号中的部分可以省略。加上 IF NOT EXISTS,表已经存在时只给出警告,不报错
08
第 5 章 · 第二节 · 课件第 12 页

定义表的约束

约束是定义在表上的规则,不符合规则的数据不能写入表中。

课件第 12 页

关键术语

数据完整性Data Integrity
数据库中数据的正确性、有效性和相容性。

试一试这条数据违反了哪种约束

插入
NOT NULL不能为空
UNIQUE不能重复
PRIMARY KEY不能为空,也不能重复
FOREIGN KEY值必须在主表中存在
CHECK值必须满足条件
点一种情况,看它违反了哪一种约束。
09
第 5 章 · 第二节 · 课件第 13 页

NOT NULL 约束

定义为 NOT NULL 的字段,插入数据时必须给出值。

课件第 13 页

知道更多名字不加引号

表名、字段名不加引号,需要时用反引号括起来。写在单引号里会报错 1064。

练一练

这张 s_null 表里,插入数据时哪一个字段必须给值?
  1. Asno
  2. Bsn
  3. Cage
  4. D六个字段都不用
答案 A

只有 sno 定义了 NOT NULL,其余字段允许为空。

实 验

实验 1-4 检验约束

保山学院·人工智能教研室·曹鼎鼎