mysql(4.有关sql查询练习题1)

创建几张表如下代码如下:

创建如下几张表

course表:

score表:

student表:

teacher

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for course
-- ----------------------------
DROP TABLE IF EXISTS `course`;
CREATE TABLE `course` (
  `c_id` int(10) NOT NULL,
  `c_name` varchar(255) DEFAULT NULL,
  `t_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`c_id`),
  KEY `t_id` (`t_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of course
-- ----------------------------
INSERT INTO `course` VALUES ('1', 'python', '1');
INSERT INTO `course` VALUES ('2', 'java', '1');
INSERT INTO `course` VALUES ('3', 'linux', '3');
INSERT INTO `course` VALUES ('4', 'web', '2');

-- ----------------------------
-- Table structure for score
-- ----------------------------
DROP TABLE IF EXISTS `score`;
CREATE TABLE `score` (
  `sc_id` int(11) NOT NULL AUTO_INCREMENT,
  `s_id` int(10) DEFAULT NULL,
  `c_id` int(11) DEFAULT NULL,
  `s_score` double DEFAULT NULL,
  PRIMARY KEY (`sc_id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of score
-- ----------------------------
INSERT INTO `score` VALUES ('1', '1', '1', '79');
INSERT INTO `score` VALUES ('2', '1', '2', '78');
INSERT INTO `score` VALUES ('3', '1', '3', '35');
INSERT INTO `score` VALUES ('4', '2', '2', '32');
INSERT INTO `score` VALUES ('5', '3', '1', '66');
INSERT INTO `score` VALUES ('6', '4', '2', '77');
INSERT INTO `score` VALUES ('7', '4', '1', '68');
INSERT INTO `score` VALUES ('8', '5', '1', '66');
INSERT INTO `score` VALUES ('9', '2', '1', '69');
INSERT INTO `score` VALUES ('10', '4', '4', '75');
INSERT INTO `score` VALUES ('11', '5', '4', '75');

-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
  `s_id` varchar(20) NOT NULL,
  `s_name` varchar(255) DEFAULT NULL,
  `s_age` int(10) DEFAULT NULL,
  `s_sex` char(1) DEFAULT NULL,
  PRIMARY KEY (`s_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO `student` VALUES ('1', '鲁班', '12', '');
INSERT INTO `student` VALUES ('2', '貂蝉', '20', '');
INSERT INTO `student` VALUES ('3', '刘备', '35', '');
INSERT INTO `student` VALUES ('4', '关羽', '34', '');
INSERT INTO `student` VALUES ('5', '张飞', '33', '');

-- ----------------------------
-- Table structure for teacher
-- ----------------------------
DROP TABLE IF EXISTS `teacher`;
CREATE TABLE `teacher` (
  `t_id` int(10) NOT NULL,
  `t_name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`t_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of teacher
-- ----------------------------
INSERT INTO `teacher` VALUES ('1', '张雪峰');
INSERT INTO `teacher` VALUES ('2', '老子');
INSERT INTO `teacher` VALUES ('3', '墨子');
创建表的代码
-- 1、查询课程编号“001”比课程编号“002”  成绩高的所有学生的学号;

-- select a.s_id from (select s_score ,s_id from score where c_id='1') as a,
(select s_score,s_id from score where c_id='2')as b where a.s_id=b.s_id AND a.s_score>b.s_score


2、查询平均成绩大于60分的同学的学号和平均成绩;

select s_id,AVG(s_score) from score GROUP BY s_id HAVING AVG(s_score)>66


3、查询所有同学的学号、姓名、选课数、总成绩;
#做这类题的时候先看一下题目要求牵扯到几张表,如果有几个字段都在一张表,那么
-- 先在一张表中把要查的字段查出来,在连接另一张表
-- 学号、选课数和总成绩在一张表中,然后再连接另一张表将所要求的字段全部查出来
-- SELECT DISTINCT s.s_name,sc.s_id,COUNT(1),SUM(s_score) from score as sc,student
as s where sc.s_id=s.s_id GROUP BY s_id


-- 4查询含有"子"的老师的个数;

-- SELECT COUNT(1) from teacher where t_name like '%子%'


5、查询没学过“老子”老师课的同学的学号、姓名;

select DISTINCT s.s_id,s.s_name from student as s,score sc where sc.s_id not in (
select s_id from score where c_id in
(SELECT c.c_id from teacher t ,course c where t.t_id=c.t_id and t_name='老子')
)


posted @ 2017-12-18 16:07  兰博~~  阅读(303)  评论(0编辑  收藏  举报