0
点赞
收藏
分享

微信扫一扫

mysql专项练习----菜鸟水平提升第一道题


按照上回老哥的代码进行一次练习

mysql专项练习----菜鸟水平提升第一道题_字段

创建数据库

插入字段

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `Teacher`
-- ----------------------------
DROP TABLE IF EXISTS `Teacher`;
CREATE TABLE `Teacher` (
  `T_ID` bigint(10) NOT NULL AUTO_INCREMENT,
  `TID` varchar(10) DEFAULT NULL,
  `Tname` varchar(10) DEFAULT NULL,
  PRIMARY KEY (`T_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4;

-- ----------------------------
-- Records of Teacher
-- ----------------------------
INSERT INTO `Teacher` VALUES ('1', '01', '张三');
INSERT INTO `Teacher` VALUES ('2', '02', '李四');
INSERT INTO `Teacher` VALUES ('3', '03', '王五');
 

 

 

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `Student`
-- ----------------------------
DROP TABLE IF EXISTS `Student`;
CREATE TABLE `Student` (
  `PK_ID` bigint(10) NOT NULL AUTO_INCREMENT,
  `SID` varchar(10) DEFAULT NULL,
  `Sname` varchar(10) DEFAULT NULL,
  `Sage` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `Ssex` varchar(10) DEFAULT NULL,
  PRIMARY KEY (`PK_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4;

-- ----------------------------
-- Records of Student
-- ----------------------------
INSERT INTO `Student` VALUES ('1', '01', '赵雷', '1990-02-12 00:00:00', '男');
INSERT INTO `Student` VALUES ('2', '02', '钱电', '1990-12-21 00:00:00', '男');
INSERT INTO `Student` VALUES ('3', '03', '孙风', '1990-05-20 00:00:00', '男');
INSERT INTO `Student` VALUES ('4', '04', '李云', '1990-08-06 00:00:00', '男');
INSERT INTO `Student` VALUES ('5', '05', '周梅', '1991-12-01 00:00:00', '女');
INSERT INTO `Student` VALUES ('6', '06', '吴兰', '1992-03-01 00:00:00', '女');
INSERT INTO `Student` VALUES ('7', '07', '郑竹', '1989-07-01 00:00:00', '女');
INSERT INTO `Student` VALUES ('8', '08', '王菊', '1990-01-20 00:00:00', '女');
 

 

 

 

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `SC`
-- ----------------------------
DROP TABLE IF EXISTS `SC`;
CREATE TABLE `SC` (
  `ID` bigint(10) NOT NULL AUTO_INCREMENT,
  `SID` varchar(10) DEFAULT NULL,
  `CID` varchar(10) DEFAULT NULL,
  `score` decimal(18,1) DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8mb4;

-- ----------------------------
-- Records of SC
-- ----------------------------
INSERT INTO `SC` VALUES ('1', '01', '01', '80.0');
INSERT INTO `SC` VALUES ('2', '01', '02', '90.0');
INSERT INTO `SC` VALUES ('3', '01', '03', '99.0');
INSERT INTO `SC` VALUES ('4', '02', '01', '70.0');
INSERT INTO `SC` VALUES ('5', '02', '02', '60.0');
INSERT INTO `SC` VALUES ('6', '02', '03', '80.0');
INSERT INTO `SC` VALUES ('7', '03', '01', '80.0');
INSERT INTO `SC` VALUES ('8', '03', '02', '80.0');
INSERT INTO `SC` VALUES ('9', '03', '03', '80.0');
INSERT INTO `SC` VALUES ('10', '04', '01', '50.0');
INSERT INTO `SC` VALUES ('11', '04', '02', '30.0');
INSERT INTO `SC` VALUES ('12', '04', '03', '20.0');
INSERT INTO `SC` VALUES ('13', '05', '01', '76.0');
INSERT INTO `SC` VALUES ('14', '05', '02', '87.0');
INSERT INTO `SC` VALUES ('15', '06', '01', '31.0');
INSERT INTO `SC` VALUES ('16', '06', '03', '34.0');
INSERT INTO `SC` VALUES ('17', '07', '02', '89.0');
INSERT INTO `SC` VALUES ('18', '07', '03', '98.0');

 

 

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `Course`
-- ----------------------------
DROP TABLE IF EXISTS `Course`;
CREATE TABLE `Course` (
  `PK_ID` bigint(10) NOT NULL AUTO_INCREMENT,
  `CID` varchar(10) DEFAULT NULL,
  `Cname` varchar(10) DEFAULT NULL,
  `TID` varchar(10) DEFAULT NULL,
  PRIMARY KEY (`PK_ID`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4;

-- ----------------------------
-- Records of Course
-- ----------------------------
INSERT INTO `Course` VALUES ('1', '01', '语文', '02');
INSERT INTO `Course` VALUES ('2', '01', '语文', '02');
INSERT INTO `Course` VALUES ('3', '02', '数学', '01');
INSERT INTO `Course` VALUES ('4', '03', '英语', '03');
 

 

 

 

问题一 :--1、查询"01"课程比"02"课程成绩高的学生的信息及课程分数
--1.1、查询同时存在"01"课程和"02"课程的情况
--1.2、查询同时存在"01"课程和"02"课程的情况和存在"01"课程但可能不存在"02"课程的情况(不存在时显示为null)(以下存在相同内容时不再解释)
 

问题分析:

1.1首先确定第一道

 查询哪些表   student表跟 成绩表

from student s,

       SC sc01,

      SC sc02

查询出来什么信息

  select  s *,

           sc.成绩

条件是什么

课程一成绩比课程二成绩高的学生

 

where  sc01.score>sc02.score

AND  sc01.SID="01"

AND sc02.SID="02"

AND  s.SID=sc01.SID

AND s.SID=sc02.SID

最终实现是这种

mysql专项练习----菜鸟水平提升第一道题_字段_02

    

 1.2的具体实现

 

 

留坑代填

 

 

 

二者的区别

 

留坑代填

 

 

 

 

答案:1.1 select a.* , b.score 课程01的分数,c.score 课程02的分数 from Student a , SC b , SC c
where a.SID = b.SID and a.SID = c.SID and b.CID = '01' and c.CID = '02' and b.score > c.score

1.2select a.* , b.score 课程01的分数,c.score 课程02的分数 from Student a
left join SC b on a.SID = b.SID and b.CID = '01'
left join SC c on a.SID = c.SID and c.CID = '02'
where b.score > isnull(c.score,0)

举报

相关推荐

0 条评论