BtWangZhi的博客

个人平时知识的总结,望大牛赐教,喷子请绕路。

面试题总结

记2018.4.14一次面试的面试,对于SQL了解得不够。
表关系
这里写图片描述
表结构

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `books`
-- ----------------------------
DROP TABLE IF EXISTS `books`;
CREATE TABLE `books` (
  `BNO` int(11) NOT NULL AUTO_INCREMENT,
  `BNAME` varchar(255) DEFAULT NULL,
  `BTYPE` varchar(255) DEFAULT NULL,
  `AUTHOR` varchar(255) DEFAULT NULL,
  `PRICE` int(11) DEFAULT NULL,
  `STOCK` int(11) DEFAULT NULL,
  PRIMARY KEY (`BNO`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of books
-- ----------------------------
INSERT INTO `books` VALUES ('1', '计算方法', '计算', '某某某01', '10', '5');
INSERT INTO `books` VALUES ('2', '计算方法习题集', '计算', '某某某02', '15', '5');
INSERT INTO `books` VALUES ('3', '计算机科学', '计算', '某某某03', '5', '2');

-- ----------------------------
-- Table structure for `borrow`
-- ----------------------------
DROP TABLE IF EXISTS `borrow`;
CREATE TABLE `borrow` (
  `CNO` int(11) DEFAULT NULL,
  `BNO` int(11) DEFAULT NULL,
  `RDATA` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of borrow
-- ----------------------------
INSERT INTO `borrow` VALUES ('1', '1', '2018-04-21 21:09:06');
INSERT INTO `borrow` VALUES ('1', '2', '2018-04-21 21:09:17');
INSERT INTO `borrow` VALUES ('2', '3', '2018-04-14 21:09:30');
INSERT INTO `borrow` VALUES ('3', '2', '2018-04-14 21:10:40');

-- ----------------------------
-- Table structure for `card`
-- ----------------------------
DROP TABLE IF EXISTS `card`;
CREATE TABLE `card` (
  `CNO` int(11) NOT NULL AUTO_INCREMENT,
  `NAME` varchar(255) DEFAULT NULL,
  `CLASS` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`CNO`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of card
-- ----------------------------
INSERT INTO `card` VALUES ('1', '张三', 'C01');
INSERT INTO `card` VALUES ('2', '李四', 'C02');
INSERT INTO `card` VALUES ('3', '王五', 'C03');
//找出借书超过 5本的读者,输出借书卡号及所借图书册数
SELECT CNO,total FROM (SELECT CNO,count(*) AS total FROM BORROW GROUP BY CNO) temp WHERE temp.total>1

//查询当前借了计算方法 但没有借计算方法习题集的读者,输出借书卡号
SELECT
    c.*, bo.*
FROM
    BORROW AS bor
LEFT JOIN BOOKS AS bo ON bor.BNO = bo.BNO
LEFT JOIN CARD AS c ON bor.CNO = c.CNO
WHERE bo.BNAME='计算方法' AND bo.BNAME!='计算方法习题集'  


//将C01班同学所借图书还期都延长一周
UPDATE BORROW AS bor
LEFT JOIN CARD AS c ON bor.CNO = c.CNO
SET RDATA = DATE_ADD(RDATA, INTERVAL 7 DAY)
WHERE
    c.CLASS = 'C01'

//从BOOKS表中删除当前无人借阅的图书记录
DELETE
FROM
    BOOKS
WHERE
    BNO NOT IN (
        SELECT
            BNO
        FROM
            (
                SELECT
                    BNO,
                    count(*) AS borrowNum
                FROM
                    BORROW
                GROUP BY
                    BNO
            ) AS temp
        WHERE
            temp.borrowNum > 0
    )

阅读更多
个人分类: 面试总结
上一篇Python--数据操作
下一篇PHP--日志输出
想对作者说点什么? 我来说一句

java与ssh面试题总结

2011年05月25日 169KB 下载

spring面试题

2018年01月15日 4KB 下载

android面试题 自己总结

2011年05月11日 450KB 下载

php 面试题总结.docx

2018年02月03日 98KB 下载

java中高级面试题十大总结

2018年04月08日 688KB 下载

没有更多推荐了,返回首页

关闭
关闭