数据库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 表了。
相关推荐
XLYcmy10 小时前
PDF 论文处理器 — 技术报告文档
数据库·python·网络安全·pdf·embedding·dify·rag
ShineWinsu10 小时前
对于Redis:RDB持久化的解析
linux·数据库·redis·缓存·面试·持久化·rdb
做运维的阿瑞10 小时前
MYSQL从语义到执行计划:UNION、EXISTS、IN 的深度辨析
数据库·sql·mysql
Elastic 中国社区官方博客20 小时前
将你自己的密钥用于现有 Elastic Cloud 部署
大数据·数据库·elasticsearch·全文检索
红海云20 小时前
Jev:给智能系统做判断的模型
大数据·数据库·人工智能
wjkjpcba20 小时前
PCBA烧录程序是什么:PCBA包工包料厂家解析烧录与测试
linux·数据库·人工智能·smt贴片加工·pcba贴片加工厂
꯭自꯭闭꯭21 小时前
达梦事物特性及MVCC
linux·运维·数据库
小马同学-21 小时前
MySQL主从复制和读写分离
数据库·mysql
谢亮_vipxieliang21 小时前
Spring 事务失效的常见场景
java·开发语言·数据库·spring boot
geovindu1 天前
sql: JSON and XML Data Handling in SQL using sql server 2025
大数据·数据库·sqlserver·数据库开发·数据库架构