• Mysql练习题---2级


    目录

    首先建立表:

    建card表 

    建student表

    建立book表:

    建立borrowrecored表: 

    插入数据: 

    1.根据学生学号 查询 2020年-1-1之后借过哪些书籍

    2.根据书籍编号 查询2020-1-1之前都有那哪些学生借阅过

     3.根据学生编号,查阅该生借阅过哪些书籍

    4.根据学生编号查询该生一共借阅过多少本书

    5.根据书籍编号查询书籍一共被借阅过多少次

    6.根据学院名称查询该学院的学生一共借过哪些书籍

    7.查询哪个学生最爱看书

    8.每本书被借阅了多少次

    9.查询那本书最受欢迎


    首先建立表:

    建card表 

    1. DROP TABLE IF EXISTS `card`;
    2. CREATE TABLE `card`  (
    3.   `cid` varchar(6)  NOT NULL,
    4.   `copendate` date NULL DEFAULT NULL,
    5.   `cprivilige` char(1)  NULL DEFAULT NULL,
    6.   PRIMARY KEY (`cid`) USING BTREE
    7. ) ENGINE = InnoDB;

    建student表

    1. DROP TABLE IF EXISTS `student`;
    2. CREATE TABLE `student`  (
    3.   `sid` int(11NOT NULL AUTO_INCREMENT,
    4.   `sname` varchar(6)  DEFAULT NULL,
    5.   `sage` int(2NULL DEFAULT NULL,
    6.   `sdepartment` varchar(20)  NULL DEFAULT NULL,
    7.   `senterdate` date NULL DEFAULT NULL,
    8.   `cid` varchar(6)  NULL DEFAULT NULL,
    9.   PRIMARY KEY (`sid`) USING BTREE,
    10.   INDEX `fk_student_cid`(`cid`) USING BTREE,
    11.   CONSTRAINT `fk_student_cid` FOREIGN KEY (`cid`) REFERENCES `card` (`cid`) ON DELETE SET NULL ON UPDATE SET NULL
    12. ) ENGINE = InnoDB;

    建立book表:

    1. DROP TABLE IF EXISTS `book`;
    2. CREATE TABLE `book`  (
    3.   `bid` varchar(6)  NOT NULL,
    4.   `bname` varchar(30NULL DEFAULT NULL,
    5.   `bauthor` varchar(50)NULL DEFAULT NULL,
    6.   `bpublishdate` date NULL DEFAULT NULL,
    7.   PRIMARY KEY (`bid`) USING BTREE
    8. ) ENGINE = InnoDB;

    建立borrowrecored表: 

    1. DROP TABLE IF EXISTS `borrowrecored`;
    2. CREATE TABLE `borrowrecored`  (
    3.   `cid` varchar(6)  NOT NULL,
    4.   `bid` varchar(6)  NOT NULL,
    5.   `bdate` date NULL DEFAULT NULL,
    6.  PRIMARY KEY (`cid`, `bid`) USING BTREE,
    7.  INDEX `fk_borrowrecored_bid`(`bid`) USING BTREE,
    8. FOREIGN KEY (`bid`) REFERENCES `book` (`bid`)
    9.    ON DELETE CASCADE ON UPDATE CASCADE,
    10. FOREIGN KEY (`cid`) REFERENCES `card` (`cid`)
    11.    ON DELETE CASCADE ON UPDATE CASCADE
    12. ) ENGINE = InnoDB;

    插入数据: 

    1. INSERT INTO `student` VALUES (1'张三'20'机械设计''2019-06-06''c1');
    2. INSERT INTO `student` VALUES (2'李四'19'机械设计''2019-09-08''c2');
    3. INSERT INTO `student` VALUES (3'王五'21'软件学院''2019-10-10''c3');
    1. INSERT INTO `book` VALUES ('b1''盗墓笔记''唐家三少''2010-02-02');
    2. INSERT INTO `book` VALUES ('b2''西游记''吴承恩''2016-06-06');
    3. INSERT INTO `book` VALUES ('b3''红楼梦''曹雪芹''2015-05-05');
    4. INSERT INTO `book` VALUES ('b4''水浒传''施耐庵''2014-04-04');
    5. INSERT INTO `book` VALUES ('b5''三国演义''罗贯中''2012-02-02');
    1. INSERT INTO `card` VALUES ('c1''2020-01-01''A');
    2. INSERT INTO `card` VALUES ('c2''2020-02-02''B');
    3. INSERT INTO `card` VALUES ('c3''2020-03-03''C');
    1. INSERT INTO `borrowrecored` VALUES ('c1''b1''2019-11-03');
    2. INSERT INTO `borrowrecored` VALUES ('c1''b3''2019-12-15');
    3. INSERT INTO `borrowrecored` VALUES ('c2''b1''2019-12-16');
    4. INSERT INTO `borrowrecored` VALUES ('c2''b2''2020-02-02');
    5. INSERT INTO `borrowrecored` VALUES ('c2''b3''2020-03-06');
    6. INSERT INTO `borrowrecored` VALUES ('c2''b4''2020-01-05');
    7. INSERT INTO `borrowrecored` VALUES ('c3''b1''2019-12-18');
    8. INSERT INTO `borrowrecored` VALUES ('c3''b2''2020-03-08');


    1.根据学生学号 查询 2020年-1-1之后借过哪些书籍

    1. SELECT
    2. b.bdate,
    3. s.sname
    4. FROM
    5. student s
    6. LEFT JOIN card c ON c.cid=s.cid
    7. LEFT JOIN borrowrecored b ON b.cid=s.cid
    8. LEFT JOIN book bo ON bo.bid=b.bid
    9. WHERE
    10. b.bdate>'2020-1-1';

    2.根据书籍编号 查询2020-1-1之前都有那哪些学生借阅过

    1. SELECT
    2. b.bdate,
    3. s.sname
    4. FROM
    5. student s
    6. LEFT JOIN card c ON c.cid=s.cid
    7. LEFT JOIN borrowrecored b ON b.cid=s.cid
    8. LEFT JOIN book bo ON bo.bid=b.bid
    9. WHERE
    10. b.bdate<'2020-1-1';

     

     3.根据学生编号,查阅该生借阅过哪些书籍

    1. SELECT
    2. s.sname,
    3. bo.bname
    4. FROM
    5. student s
    6. LEFT JOIN card c ON c.cid=s.cid
    7. LEFT JOIN borrowrecored b ON b.cid=s.cid
    8. LEFT JOIN book bo ON bo.bid=b.bid
    9. WHERE
    10. s.sid=1;

    4.根据学生编号查询该生一共借阅过多少本书

    1. SELECT
    2. s.sname,
    3. COUNT(bo.bname)
    4. FROM
    5. student s
    6. LEFT JOIN card c ON c.cid=s.cid
    7. LEFT JOIN borrowrecored b ON b.cid=s.cid
    8. LEFT JOIN book bo ON bo.bid=b.bid
    9. WHERE
    10. s.sid=1
    11. GROUP BY
    12. s.sname;

    5.根据书籍编号查询书籍一共被借阅过多少次

    1. SELECT
    2. bo.bname,
    3. bo.bid,
    4. COUNT(s.sname)
    5. FROM
    6. student s
    7. LEFT JOIN card c ON c.cid=s.cid
    8. LEFT JOIN borrowrecored b ON b.cid=s.cid
    9. LEFT JOIN book bo ON bo.bid=b.bid
    10. WHERE
    11. bo.bid='b1'
    12. GROUP BY
    13. bo.bname,
    14. bo.bid;

    6.根据学院名称查询该学院的学生一共借过哪些书籍

    1. SELECT
    2. bo.bname,
    3. bo.bid,
    4. COUNT(s.sname)
    5. FROM
    6. student s
    7. LEFT JOIN card c ON c.cid=s.cid
    8. LEFT JOIN borrowrecored b ON b.cid=s.cid
    9. LEFT JOIN book bo ON bo.bid=b.bid
    10. WHERE
    11. s.sdepartment='机械设计'
    12. GROUP BY
    13. bo.bname,
    14. bo.bid;

    7.查询哪个学生最爱看书

    1. SELECT
    2. s.sname name,
    3. s.sid id,
    4. COUNT(bo.bid) ci
    5. FROM
    6. student s
    7. LEFT JOIN card c ON c.cid=s.cid
    8. LEFT JOIN borrowrecored b ON b.cid=s.cid
    9. LEFT JOIN book bo ON bo.bid=b.bid
    10. GROUP BY
    11. s.sname,
    12. s.sid
    13. ORDER BY
    14. COUNT(bo.bid) DESC
    15. LIMIT 1;

    8.每本书被借阅了多少次

    1. SELECT
    2. bo.bname name,
    3. bo.bid id,
    4. COUNT(s.sname) ci
    5. FROM
    6. student s
    7. LEFT JOIN card c ON c.cid=s.cid
    8. LEFT JOIN borrowrecored b ON b.cid=s.cid
    9. LEFT JOIN book bo ON bo.bid=b.bid
    10. GROUP BY
    11. bo.bname,
    12. bo.bid;

     

    9.查询那本书最受欢迎

    1. SELECT
    2. bo.bname name,
    3. bo.bid id,
    4. COUNT(s.sname) ci
    5. FROM
    6. student s
    7. LEFT JOIN card c ON c.cid=s.cid
    8. LEFT JOIN borrowrecored b ON b.cid=s.cid
    9. LEFT JOIN book bo ON bo.bid=b.bid
    10. GROUP BY
    11. bo.bname,
    12. bo.bid
    13. ORDER BY
    14. COUNT(s.sname) DESC
    15. LIMIT 1;

  • 相关阅读:
    基于神经网络的系统辨识,神经网络与图像识别
    Mac下用Charles实现Android http和https抓包
    Allegro 17.4 SMD 敷铜,Shape 敷铜属性更改, Gerber 生成
    《隐私计算简易速速上手小册》第7章:隐私计算与云计算/边缘计算(2024 最新版)
    通过sls采集k8s集群上的服务日志
    【LeetCode-13】罗马数字转整数
    【python中级】linux系统获得计算机网卡流量
    基于深度学习的高精度工人阶梯检测识别系统(PyTorch+Pyside6+YOLOv5模型)
    MySQL事务篇
    Haskell:嵌套函子
  • 原文地址:https://blog.csdn.net/weixin_49627122/article/details/126393881