数据库2表设计

1 student 表

student 表的 MySQL 创建语句,包含建表 + 插入示例数据,你可以直接复制到 Navicat 里运行:

sql

复制代码
-- 1. 创建学生信息表
CREATE TABLE student (
    name VARCHAR(50) NOT NULL COMMENT '姓名',
    code VARCHAR(10) PRIMARY KEY COMMENT '学号'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='学生信息表';

-- 2. 插入表中的数据
INSERT INTO student (name, code) VALUES
('张三', '001'),
('李四', '002'),
('马五', '003'),
('甲六', '004');

补充说明

  • code 设为主键,确保学号唯一且非空,符合业务逻辑。
  • 字符集用 utf8mb4,可以兼容所有中文和特殊字符。
  • 表和字段都加了 COMMENT 注释,方便后续维护。

你直接在 Navicat 的「新建查询」里粘贴这段 SQL,点击运行就能建好表并插入数据了。

2 exam 表

exam 表的完整 MySQL 建表语句,包含建表 + 插入数据,和你之前的 student 表可以完美关联起来:

sql

复制代码
-- 1. 创建考试信息表 exam
CREATE TABLE exam (
    code VARCHAR(10) NOT NULL COMMENT '学号',
    subject VARCHAR(20) NOT NULL COMMENT '学科',
    score INT NOT NULL COMMENT '成绩',
    -- 复合主键:学号 + 学科,保证同一个学生同一门课不会有重复记录
    PRIMARY KEY (code, subject),
    -- 外键关联 student 表的学号,保证数据一致性
    FOREIGN KEY (code) REFERENCES student(code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='考试信息表';

-- 2. 插入表中的数据
INSERT INTO exam (code, subject, score) VALUES
('001', '数学', 80),
('002', '数学', 75),
('001', '语文', 90),
('002', '语文', 80),
('001', '英语', 90),
('002', '英语', 85),
('003', '英语', 80),
('004', '英语', 70);

🔍 关键设计说明

  1. 复合主键 :PRIMARY KEY (code, subject) 保证了「同一个学生同一门学科只能有一条成绩记录」,避免重复数据。
  2. 外键关联 :FOREIGN KEY (code) REFERENCES student(code) 把 exam 表和你之前创建的 student 表关联起来,保证只有 student 表里存在的学号才能插入成绩,避免脏数据。
  3. 字段类型 :
    • score 用 INT 类型,因为成绩是整数,且范围合理。
    • subject 用 VARCHAR(20) 足够存储常见的学科名称。

✅ 使用步骤

  1. 先确认你之前的 student 表已经创建并插入了数据(否则外键会报错)。
  2. 把这段 SQL 复制到 Navicat 的查询窗口,点击「运行」即可。
  3. 执行完成后,刷新一下左侧的 Test 数据库,就能看到 exam 表了。
相关推荐
摇滚侠6 小时前
《On Java 中文版 基础卷》阅读笔记 实现隐藏 12
java·数据库·笔记
川石课堂软件测试6 小时前
学习软件测试需掌握的一些知识
数据库·python·sql·功能测试·网络协议·mysql·http
2501_937767167 小时前
自建 SQL 数据库定时备份踩坑复盘与落地思路
数据库·sql
silvamux_8 小时前
10款模型写种草笔记:可发布性、返工来源与成本数据缺口复盘
java·数据库·笔记
I Am a robert girl10 小时前
从 GameHorizon 拆解多时间尺度游戏评测:数据管线、离线基准与在线回放的三层设计
数据库·游戏·多时间尺度·数据管线·游戏评测·离线基准·在线回放
躺柒10 小时前
读数据安全架构设计与实践17安全架构案例(下)
数据库·安全·零信任·安全架构·防火墙·无边界
SelectDB11 小时前
实时更新排错现场:导入了却查到旧数据,和 FINAL 越加越慢的两条路
大数据·数据库·数据分析
SelectDB11 小时前
拿 Planet 的账单一行行对下来,我总结出三个可自查的校验点
大数据·数据库·数据分析
SelectDB11 小时前
Apache Doris + Vane:让多模态数据进入业务分析
大数据·数据库·数据分析
pjj1985413 小时前
ClickHouse 与 Doris 数据库技术梳理:看懂分析型数据库
数据库·clickhouse