在MySQL中创建课程表需要先建立对应的数据库,再设计合理的表结构,最后执行建表语句完成创建。课程表通常需要存储课程编号、课程名称、授课教师、上课时间、学分等核心信息,设计时要考虑字段类型和约束的合理性。

一、创建课程表的前置步骤
1. 创建专属数据库
首先创建一个用于存储课程相关数据的数据库,避免和其他业务数据混在一起,执行以下SQL语句:
-- 创建课程管理数据库,如果已存在则不重复创建 CREATE DATABASE IF NOT EXISTS course_management DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; -- 切换到该数据库 USE course_management;
2. 课程表核心字段设计
课程表的字段需要根据实际业务需求设计,常见的字段及说明如下:
| 字段名 | 类型 | 约束 | 说明 |
|---|---|---|---|
| course_id | INT | 主键、自增、非空 | 课程唯一编号 |
| course_name | VARCHAR(50) | 非空 | 课程名称 |
| teacher_name | VARCHAR(30) | 非空 | 授课教师姓名 |
| class_time | VARCHAR(50) | 可空 | 上课时间,如周一1-2节 |
| credit | DECIMAL(2,1) | 非空、默认值0 | 课程学分 |
| create_time | DATETIME | 非空、默认当前时间 | 记录创建时间 |
二、基础版课程表创建代码
适合简单业务场景的基础课程表,包含核心必填字段,执行以下语句即可完成创建:
-- 创建基础课程表
CREATE TABLE IF NOT EXISTS course (
course_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '课程ID',
course_name VARCHAR(50) NOT NULL COMMENT '课程名称',
teacher_name VARCHAR(30) NOT NULL COMMENT '授课教师',
class_time VARCHAR(50) COMMENT '上课时间',
credit DECIMAL(2,1) NOT NULL DEFAULT 0 COMMENT '学分',
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='课程信息表';
三、扩展版课程表创建代码
如果业务需要关联教师表、教室表,可创建扩展版课程表,增加外键关联字段:
-- 先创建教师表(如果不存在)
CREATE TABLE IF NOT EXISTS teacher (
teacher_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '教师ID',
teacher_name VARCHAR(30) NOT NULL COMMENT '教师姓名',
teacher_title VARCHAR(20) COMMENT '教师职称'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='教师信息表';
-- 创建扩展版课程表
CREATE TABLE IF NOT EXISTS course_extend (
course_id INT PRIMARY KEY AUTO_INCREMENT COMMENT '课程ID',
course_name VARCHAR(50) NOT NULL COMMENT '课程名称',
teacher_id INT NOT NULL COMMENT '授课教师ID',
classroom VARCHAR(20) COMMENT '上课教室',
class_time VARCHAR(50) COMMENT '上课时间',
credit DECIMAL(2,1) NOT NULL DEFAULT 0 COMMENT '学分',
max_student INT NOT NULL DEFAULT 50 COMMENT '最大选课人数',
create_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-- 设置外键关联教师表
CONSTRAINT fk_teacher_id FOREIGN KEY (teacher_id) REFERENCES teacher(teacher_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='扩展课程信息表';
四、课程表相关常用操作代码
1. 插入测试数据
建表完成后可以插入测试数据验证表结构是否正常:
-- 向基础课程表插入测试数据
INSERT INTO course (course_name, teacher_name, class_time, credit) VALUES
('MySQL数据库基础', '张三', '周一1-2节', 3.0),
('Python编程入门', '李四', '周二3-4节', 2.5),
('数据结构与算法', '王五', '周三5-6节', 4.0);
2. 查询表结构
如果需要查看已创建的课程表结构,可以执行以下语句:
-- 查看course表的详细结构 DESC course; -- 查看建表语句 SHOW CREATE TABLE course;
3. 修改课程表结构
如果后续需要新增字段,比如增加课程描述字段,可执行以下语句:
-- 向course表新增课程描述字段 ALTER TABLE course ADD COLUMN course_desc VARCHAR(200) COMMENT '课程描述' AFTER credit;
五、注意事项
- 建表时建议统一使用
utf8mb4字符集,避免中文乱码问题 - 主键建议设置为自增,避免手动维护ID出现重复问题
- 如果表需要关联其他表,要合理设置外键约束,保证数据一致性
- 字段注释要清晰,方便后续维护人员理解表结构设计意图