SQL刷题笔记-我没做出来的题目

构建数据集

sql 复制代码
DROP TABLE IF EXISTS `book`;
CREATE TABLE `book` (
  `总编号` INT(11) NOT NULL,
  `分类号` VARCHAR(255) DEFAULT NULL,
  `书名` VARCHAR(255) DEFAULT NULL,
  `作者` VARCHAR(255) DEFAULT NULL,
  `出版单位` VARCHAR(255) DEFAULT NULL,
  `单价` DOUBLE DEFAULT NULL,
  PRIMARY KEY  (`总编号`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of book
-- ----------------------------
INSERT INTO `book` VALUES ('112266', 'TP3/12', 'FoxBASE', '张三', '电子工业出版社', '23.6');
INSERT INTO `book` VALUES ('113388', 'TR7/90', '大学英语', '胡玲', '清华大学出版社', '12.5');
INSERT INTO `book` VALUES ('114455', 'TR9/12', '线性代数', '孙业', '北京大学出版社', '20.8');
INSERT INTO `book` VALUES ('118801', 'TP4/15', '计算机网络', '黄力钧', '高等教育出版社', '21.8');
INSERT INTO `book` VALUES ('118802', 'TP4/15', '计算机网络', '黄力钧', '高等教育出版社', '21.8');
INSERT INTO `book` VALUES ('332211', 'TP5/10', '计算机基础', '李伟', '高等教育出版社', '18');
INSERT INTO `book` VALUES ('445501', 'TP3/12', '数据库导论', '王强', '科学出版社', '17.9');
INSERT INTO `book` VALUES ('445502', 'TP3/12', '数据库导论', '王强', '科学出版社', '17.9');
INSERT INTO `book` VALUES ('445503', 'TP3/12', '数据库导论', '王强', '科学出版社', '17.9');
INSERT INTO `book` VALUES ('446601', 'TP4/13', '数据库基础', '马凌云', '人民邮电出版社', '22.5');
INSERT INTO `book` VALUES ('446602', 'TP4/13', '数据库基础', '马凌云', '人民邮电出版社', '22.5');
INSERT INTO `book` VALUES ('446603', 'TP4/13', '数据库基础', '马凌云', '人民邮电出版社', '22.5');
INSERT INTO `book` VALUES ('449901', 'TP4/14', 'FoxPro大全', '周虹', '科学出版社', '32.7');
INSERT INTO `book` VALUES ('449902', 'TP4/14', 'FoxPro大全', '周虹', '科学出版社', '32.7');
INSERT INTO `book` VALUES ('665544', 'TS7/21', '高等数学', '刘明', '高等教育出版社', '20');
-- ----------------------------
-- Table structure for borrow
-- ----------------------------
DROP TABLE IF EXISTS `borrow`;
CREATE TABLE `borrow` (
  `借书证号` VARCHAR(50) NOT NULL,
  `总编号` VARCHAR(50) DEFAULT NULL,
  `借书日期` DATETIME DEFAULT NULL
) ENGINE=INNODB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of borrow
-- ----------------------------
INSERT INTO `borrow` VALUES ('112', '445501', '1997-03-19 00:00:00');
INSERT INTO `borrow` VALUES ('125', '332211', '1997-02-12 00:00:00');
INSERT INTO `borrow` VALUES ('111', '445503', '1997-08-21 00:00:00');
INSERT INTO `borrow` VALUES ('112', '112266', '1997-03-14 00:00:00');
INSERT INTO `borrow` VALUES ('114', '665544', '1997-10-21 00:00:00');
INSERT INTO `borrow` VALUES ('120', '114455', '1997-11-02 00:00:00');
INSERT INTO `borrow` VALUES ('120', '118801', '1997-10-18 00:00:00');
INSERT INTO `borrow` VALUES ('119', '446603', '1997-12-12 00:00:00');
INSERT INTO `borrow` VALUES ('112', '449901', '1997-10-23 00:00:00');
INSERT INTO `borrow` VALUES ('115', '449902', '1997-08-21 00:00:00');
INSERT INTO `borrow` VALUES ('118', '118801', '1997-09-10 00:00:00');
-- ----------------------------
-- Table structure for reader
-- ----------------------------
DROP TABLE IF EXISTS `reader`;
CREATE TABLE `reader` (
  `借书证号` VARCHAR(255) DEFAULT NULL,
  `单位` VARCHAR(255) DEFAULT NULL,
  `姓名` VARCHAR(255) DEFAULT NULL,
  `性别` VARCHAR(255) DEFAULT NULL,
  `职称` VARCHAR(255) DEFAULT NULL,
  `地址` VARCHAR(255) DEFAULT NULL
) ENGINE=INNODB DEFAULT CHARSET=utf8;
INSERT INTO `reader` VALUES ('111', '信息系', '王维利', '女', '教授', '1号楼424');
INSERT INTO `reader` VALUES ('112', '财会系', '李  立', '男', '副教授', '2号楼316');
INSERT INTO `reader` VALUES ('113', '经济系', '张  三', '男', '讲师', '3号楼105');
INSERT INTO `reader` VALUES ('114', '信息系', '周华发', '男', '讲师', '1号楼316');
INSERT INTO `reader` VALUES ('115', '信息系', '赵正义', '男', '工程师', '1号楼224');
INSERT INTO `reader` VALUES ('116', '信息系', '李  明', '男', '副教授', '1号楼318');
INSERT INTO `reader` VALUES ('117', '计算机系', '李小峰', '男', '助教', '1号楼214');
INSERT INTO `reader` VALUES ('118', '计算机系', '许鹏飞', '男', '助工', '1号楼216');
INSERT INTO `reader` VALUES ('119', '计算机系', '刘大龙', '男', '教授', '1号楼318');
INSERT INTO `reader` VALUES ('120', '国际贸易', '李  雪', '男', '副教授', '4号楼506');
INSERT INTO `reader` VALUES ('121', '国际贸易', '李  爽', '女', '讲师', '4号楼510');
INSERT INTO `reader` VALUES ('122', '国际贸易', '王  纯', '女', '讲师', '4号楼512');
INSERT INTO `reader` VALUES ('123', '财会系', '沈小霞', '女', '助教', '2号楼202');
INSERT INTO `reader` VALUES ('124', '财会系', '朱  海', '男', '讲师', '2号楼210');
INSERT INTO `reader` VALUES ('125', '财会系', '马英明', '男', '副教授', '2号楼212');

-- 12.查询 1997 年 7 月以后没有借书的读者借书证号、姓名及单位。

我当时的解题思路,没做出来

sql 复制代码
-- !!!不会!!!
SELECT * FROM borrow b WHERE b.`借书日期`>='1997-07-01';
SELECT * FROM reader r LEFT JOIN borrow b ON r.`借书证号`=b.`借书证号` 
	WHERE b.`借书日期`<'1997-07-01';
-- 1你取>1997-07-01出来的全是借过书的人,完全违背了条件。你取<1997-07-01的话,
-- 2那如果取1997-07-01之前的话,如果07-01之前借了,之后借不借也没限制到。
-- 3如果取 IS NULL的话,那全是自始至终没借过书的人
-- 我是想用reader表left join,取为null的

老师的答案

sql 复制代码
SELECT r.`借书证号`, r.`姓名`, r.`单位` FROM reader r WHERE r.`借书证号` NOT IN (
SELECT w.`借书证号` FROM borrow w WHERE w.`借书日期` >='1997-07-01');

把借过书的人挑出来,不在这里的,其他剩余的留下。

相关推荐
2501_9418059318 小时前
在大阪智能零售场景中构建支付实时处理与高并发顾客行为分析平台的工程设计实践经验分享
数据库
李慕婉学姐18 小时前
【开题答辩过程】以《基于JAVA的校园即时配送系统的设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·开发语言·数据库
珠海西格电力18 小时前
零碳园区有哪些政策支持?
大数据·数据库·人工智能·物联网·能源
孙严Pay18 小时前
快捷支付:高效安全的在线支付新选择
笔记·科技·计算机网络·其他·微信
じ☆冷颜〃18 小时前
黎曼几何驱动的算法与系统设计:理论、实践与跨领域应用
笔记·python·深度学习·网络协议·算法·机器学习
数据大魔方18 小时前
【期货量化实战】日内动量策略:顺势而为的短线交易法(Python源码)
开发语言·数据库·python·mysql·算法·github·程序员创富
Chasing Aurora19 小时前
数据库连接+查询优化
数据库·sql·mysql·prompt·约束
倔强的石头_19 小时前
【金仓数据库】ksql 指南(六)—— 创建与管理用户和权限(KingbaseES 安全控制核心)
数据库
数据皮皮侠AI20 小时前
上市公司股票名称相似度(1990-2025)
大数据·人工智能·笔记·区块链·能源·1024程序员节
小熊officer20 小时前
Python字符串
开发语言·数据库·python