• 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;

  • 相关阅读:
    深入探究 Java 虚拟机(JVM)中的栈(Stack)和堆(Heap)
    提高Java开发生产力,我选Stream API,真香啊
    Win7旗舰版64位桌面创建32位IE方法
    React Context源码是怎么实现的呢
    用栈实现队列,用队列实现栈(JAVA)
    监控易:支持多种协议和设备,适应复杂多变的IT环境
    程序员凡尔赛,工作三年晒出5月工资条,直言加班太累了
    Requests 与接口请求构造
    【手把手教你基于Keras的AutoEncoder模型拟合预测股票走势】
    [开源]基于流程编排的自动化测试工具,插件驱动,测试无限可能
  • 原文地址:https://blog.csdn.net/weixin_49627122/article/details/126393881