• SQL-----STUDENT


    【学生信息表】

    【宿舍信息表】

    【宿舍分配表】

    为了相互关联,我们需要在表中添加外键。在宿舍分配表中添加用于关联学生信息表的外键 student_id,以及用于关联宿舍信息表的外键 dormitory_id

    sql代码

    1. -- 创建学生信息表
    2. CREATE TABLE students(
    3. id INT PRIMARY KEY AUTO_INCREMENT COMMENT '学生ID',
    4. name VARCHAR(30) NOT NULL COMMENT '学生姓名',
    5. student_number VARCHAR(20) NOT NULL COMMENT '学号',
    6. gender VARCHAR(2) NOT NULL COMMENT '学生性别',
    7. grade VARCHAR(4) NOT NULL COMMENT '年级',
    8. major VARCHAR(30) NOT NULL COMMENT '专业',
    9. phone_number VARCHAR(20) DEFAULT NULL COMMENT '联系方式'
    10. );
    11. -- 创建宿舍信息表
    12. CREATE TABLE `dormitories` (
    13. `id` INT NOT NULL AUTO_INCREMENT COMMENT '宿舍ID',
    14. `building` VARCHAR(20) NOT NULL COMMENT '所属的楼栋',
    15. `room_number` VARCHAR(20) NOT NULL COMMENT '房间号',
    16. `capacity` INT NOT NULL COMMENT '容纳人数',
    17. PRIMARY KEY (`id`)
    18. ) COMMENT='宿舍信息表';
    19. -- 创建宿舍分配表
    20. CREATE TABLE dormitory_assignments(
    21. id INT PRIMARY KEY AUTO_INCREMENT COMMENT '分配记录ID',
    22. student_id INT NOT NULL COMMENT '学生ID',
    23. dormitory_id INT NOT NULL COMMENT '宿舍ID',
    24. grade VARCHAR(4) NOT NULL COMMENT '年级',
    25. major VARCHAR(30) NOT NULL COMMENT '专业',
    26. check_in_time DATETIME DEFAULT NULL COMMENT '入住时间',
    27. check_out_time DATETIME DEFAULT NULL COMMENT '退房时间',
    28. FOREIGN KEY (student_id) REFERENCES students(id),
    29. FOREIGN KEY (dormitory_id) REFERENCES dormitories(id)
    30. );

    插入示例:

    【学生信息表】
    插入一条学生信息,学号为 20230001,姓名为 张三,性别为 男,年级为 2,专业为 计算机科学与技术,联系方式为 13412345678: 

    1. INSERT INTO students (name, student_number, gender, grade, major, phone_number)
    2. VALUES ('张三', '20230001', '男', '2', '计算机科学与技术', '13412345678');

     【宿舍信息表】
    插入一条宿舍信息,楼栋为 2 号楼,房间号为 101,容纳人数为 2:

    1. INSERT INTO dormitories (building, room_number, capacity)
    2. VALUES ('2 号楼', '101', 2);

    【宿舍分配表】
    插入一条宿舍分配记录,学生 ID 为 1,宿舍 ID 为 1,年级为 2,专业为 计算机科学与技术,入住时间为 2023-09-01,退房时间为 2024-02-28:

    1. INSERT INTO dormitory_assignments (student_id, dormitory_id, grade, major, check_in_time, check_out_time)
    2. VALUES (1, 1, '2', '计算机科学与技术', '2023-09-01', '2024-02-28');

    注意:

    在进行宿舍分配时,如果发现目标宿舍已经达到了容纳人数上限,则应该停止当前的分配操作,不再继续分配该宿舍。

    1. % 连接 MySQL 数据库
    2. conn = database(database_name, user_name, password, 'com.mysql.cj.jdbc.Driver', url);
    3. % 查询宿舍的容纳人数和当前入住人数
    4. sql_query = ['SELECT da.capacity, COUNT(*) FROM dormitory_assignments AS da '...
    5. 'WHERE da.dormitory_id = ' num2str(dormitory_id) ' GROUP BY da.dormitory_id;'];
    6. results = exec(conn, sql_query);
    7. % 读取查询结果
    8. results = fetch(results);
    9. current_number = results.Data{1,2};
    10. capacity = results.Data{1,1};
    11. % 判断宿舍是否已满
    12. if current_number >= capacity
    13. disp('该宿舍已经满员,无法分配!');
    14. return;
    15. end
  • 相关阅读:
    java Arrays类
    如何安装 IntelliJ IDEA 最新版本——详细教程
    c - ar 中的 “rcs“选项有什么作用?
    深度学习之基于Tensorflow人脸面部表情识别系统
    利用随机森林对特征重要性进行评估(含实例+代码讲解)
    MYSQL安装及卸载
    SpringMVC处理请求核心流程
    中台深入剖析和实现技巧
    三百六十行行行出状元之短视频入门必备技巧——配音
    PCB阻抗计算
  • 原文地址:https://blog.csdn.net/weixin_42289227/article/details/134384628