💡 课堂例题

第 3 章 · 数据库和表的基本操作 · 共 5 题 · 全程以「教学实例」库的 student / course 等表为操作对象 · 代码可一键复制

1
创建并查看教学实例库
建库后查看确认,体会 IF NOT EXISTS 避免重复报错。
sql
CREATE DATABASE IF NOT EXISTS 教学实例
  DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_bin;
SHOW DATABASES;
加上 IF NOT EXISTS 后,库已存在也不会报错,非常适合写进初始化脚本里反复执行。
2
给字段选对类型
判断下列字段该用什么类型最合适。
sql
-- 性别:只占一个汉字,定长 → CHAR(1)
-- 年龄:0~255 足够,无符号 → TINYINT UNSIGNED
-- 身份证:固定18位含X → CHAR(18)
-- 入职时间:只要年月日 → DATE
-- 工资:可能有小数 → DECIMAL(10,2)
先想清楚"这个字段装什么、有多大、会不会变",再选类型,别图省事全用 VARCHAR(255)。
3
为 student 表加约束
演示 NOT NULL、DEFAULT、PRIMARY KEY 的实际写法。
sql
CREATE TABLE student (
  Sno   VARCHAR(10) PRIMARY KEY,
  Sname VARCHAR(10) NOT NULL,
  class CHAR(2) DEFAULT '01'
);
这样姓名必填、班级不填时自动填"01"、学号作为主键唯一。试着插入两条相同学号,看会不会报错。
4
用 AUTO_INCREMENT 造部门表
体会自增列插入时可省略。
sql
CREATE TABLE dept (
  id   INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(50) NOT NULL
);

INSERT INTO dept(name) VALUES('研发部'),('市场部');
-- id 自动变成 1、2
插入时只写了 name,id 由 MySQL 自动分配。emp 表就是通过 dept_id 外键关联到这里的部门。
5
修改表结构(加字段 + 改名)
已建好的表也能改,不必删了重建。
sql
ALTER TABLE student ADD COLUMN email VARCHAR(30) COMMENT '邮箱';
ALTER TABLE student RENAME TO stu_info;
ALTER TABLE 是"对已上线的表动手术",机房练习时谨慎操作,改前最好先 DESC 看看现状。