zoukankan      html  css  js  c++  java
  • MySQL综合练习题

    题目:

    请创建如下表,并创建相关约束
    
    班级表:class				学生表:student
    cid	caption	grade_id		sid	sname	gender	class_id
    1	一年一班	1		1	乔丹	女	1
    2	二年一班	2		2	艾弗森	女	1
    3	三年二班	3		3	科比	男	2
    老师表:teacher				课程表:course
    tid	tname			cid	cname	teacher_id
    1	张三			1	生物	1
    2	李四			2	体育	1
    3	王五			3	物理	2
    成绩表:score					年级表:class_grade
    sid	student_id	course_id	score		gid	gname
    1	1	1	60		1	一年级
    2	1	2	59		2	二年级
    3	2	2	99		3	三年级
    班级任职表:teach2cls
    tcid	tid	cid
    1	1	1
    2	1	2
    3	2	1
    4	3	2
    二、操作表
    1、自行创建测试数据;
    
    2、查询学生总人数;
    
    3、查询“生物”课程和“物理”课程成绩都及格的学生id和姓名;
    
    4、查询每个年级的班级数,取出班级数最多的前三个年级;
    
    5、查询平均成绩最高和最低的学生的id和姓名以及平均成绩;
    
    6、查询每个年级的学生人数;
    
    7、查询每位学生的学号,姓名,选课数,平均成绩;
    
    8、查询学生编号为“2”的学生的姓名、该学生成绩最高的课程名、成绩最低的课程名及分数;
    
    9、查询姓“李”的老师的个数和所带班级数;
    
    10、查询班级数小于5的年级id和年级名;
    
    11、查询班级信息,包括班级id、班级名称、年级、年级级别(12为低年级,34为中年级,56为高年级),示例结果如下;
    
    班级id	班级名称	年级	年级级别
    1	一年一班	一年级	低
    12、查询学过“张三”老师2门课以上的同学的学号、姓名;
    
    13、查询教授课程超过2门的老师的id和姓名;
    
    14、查询学过编号“1”课程和编号“2”课程的同学的学号、姓名;
    
    15、查询没有带过高年级的老师id和姓名;
    
    16、查询学过“张三”老师所教的所有课的同学的学号、姓名;
    
    17、查询带过超过2个班级的老师的id和姓名;
    
    18、查询课程编号“2”的成绩比课程编号“1”课程低的所有同学的学号、姓名;
    
    19、查询所带班级数最多的老师id和姓名;
    
    20、查询有课程成绩小于60分的同学的学号、姓名;
    
    21、查询没有学全所有课的同学的学号、姓名;
    
    22、查询至少有一门课与学号为“1”的同学所学相同的同学的学号和姓名;
    
    23、查询至少学过学号为“1”同学所选课程中任意一门课的其他同学学号和姓名;
    
    24、查询和“2”号同学学习的课程完全相同的其他同学的学号和姓名;
    
    25、删除学习“张三”老师课的score表记录;
    
    26、向score表中插入一些记录,这些记录要求符合以下条件:①没有上过编号“2”课程的同学学号;②插入“2”号课程的平均成绩;
    
    27、按平均成绩从低到高显示所有学生的“语文”、“数学”、“英语”三门的课程成绩,按如下形式显示: 学生ID,语文,数学,英语,有效课程数,有效平均分;
    
    28、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分;
    
    29、按各科平均成绩从低到高和及格率的百分数从高到低顺序;
    
    30、课程平均分从高到低显示(现实任课老师);
    
    31、查询各科成绩前三名的记录(不考虑成绩并列情况)
    
    32、查询每门课程被选修的学生数;
    
    33、查询选修了2门以上课程的全部学生的学号和姓名;
    
    34、查询男生、女生的人数,按倒序排列;
    
    35、查询姓“张”的学生名单;
    
    36、查询同名同姓学生名单,并统计同名人数;
    
    37、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列;
    
    38、查询课程名称为“数学”,且分数低于60的学生姓名和分数;
    
    39、查询课程编号为“3”且课程成绩在80分以上的学生的学号和姓名;
    
    40、求选修了课程的学生人数
    
    41、查询选修“王五”老师所授课程的学生中,成绩最高和最低的学生姓名及其成绩;
    
    42、查询各个课程及相应的选修人数;
    
    43、查询不同课程但成绩相同的学生的学号、课程号、学生成绩;
    
    44、查询每门课程成绩最好的前两名学生id和姓名;
    
    45、检索至少选修两门课程的学生学号;
    
    46、查询没有学生选修的课程的课程号和课程名;
    
    47、查询没带过任何班级的老师id和姓名;
    
    48、查询有两门以上课程超过80分的学生id及其平均成绩;
    
    49、检索“3”课程分数小于60,按分数降序排列的同学学号;
    
    50、删除编号为“2”的同学的“1”课程的成绩;
    
    51、查询同时选修了物理课和生物课的学生id和姓名;
    

      

    答案:

    创建表:

    create table class(
    cid int primary key auto_increment,
    caption char(6),
    grade_id int not null
    );
    
    insert class(caption,grade_id) values ('一年一班',1),('二年一班',2),('三年二班',3);
    
    create table student(
    sid int primary key auto_increment,
    sname char(6) not null,
    gender enum('女','男') default '男',
    class_id int not null ,
    foreign key(class_id) references class(cid)
    on delete cascade
    on update cascade
    );
    
    insert student(sname,gender,class_id) values ('乔丹','女',1),('艾弗森','女',1),('科比','男',2);
    
    
    create table teacher(
    tid int auto_increment,
    tname char(6) not null,
    primary key(tid)
    );
    
    insert teacher (tname) values ('张三'),('李四'),('王五');
    
    
    create table course(
    cid int primary key auto_increment,
    cname char(6) not null,
    teacher_id int,
    foreign key(teacher_id) references teacher(tid)
    on delete cascade
    on update cascade
    );
    
    insert course(cname,teacher_id) values('生物',1),('体育',1),('物理',2);
    
    
    create table score(
    sid int auto_increment,
    student_id int not null,
    course_id int not null,
    score int ,
    primary key (sid),
    foreign key (student_id) references student(sid) on delete cascade on update cascade,
    foreign key (course_id) references course(cid) on delete cascade on update cascade);
    
    insert score (student_id, course_id,score) values(1,1,60),(1,2,59),(2,2,99);
    
    
    create table class_grade(
    gid int auto_increment,
    gname char(6) not null,
    primary key (gid)
    );
    
    insert class_grade(gname) values ('一年级'),('二年级'),('三年级');
    
    
    create table teach2cls(
    tcid int primary key auto_increment,
    tid int not null,
    cid int not null,
    foreign key(tid) references teacher(tid) on delete cascade on update cascade,
    foreign key (cid) references class(cid) on delete cascade on update cascade);
    
    insert teach2cls (tid,cid) values(1,1),(1,2),(2,1),(3,2);
    

      

    补充数据

    insert class_grade(gname) values ('四年级'),('五年级'),('六年级');
    
    insert class(caption,grade_id) values ('四年一班',4),('五年三班',5),('五年一班',5),('六年二班',6);
    
    insert teacher (tname) values ('赵柳'),('孙策'),('狄仁杰'),("李新");
    
    insert teach2cls (tid,cid) values(4,6),(5,5),(6,4),(6,2);
    
    insert course(cname,teacher_id) values('语文',4),('数学',5),('英语',6),('化学',3),('美术',4);
    
    insert student(sname,gender,class_id) values 
    ('alsa','女',4),('lily','女',5),('jack','男',6),('alsa','女',7),
    ('lucy','女',1),('bob','男',3),('乔丹','女',4),('nico','女',5),
    ('alex','男',3),('张良',男',4),('lily','女',2),('jack','男',7),
    ("kitty",'女',5),('诸葛','男',5),('妲己','女',4),('甄姬','女',6);
    
    insert score (student_id, course_id,score) values
    (4,1,58),(5,2,88),(6,3,73),(16,4,75),(16,5,92),
    (7,4,65),(8,5,98),(9,6,72),(16,6,88),(17,7,63),(18,7,77),(19,7,90),
    (11,3,81),(10,5,85),(12,1,63),(12,2,87),
    (13,6,55),(14,3,55),(15,5,41),(6,1,80);
    

      

    答案:

    # 2、查询学生总人数;
    select 
    	count(sid) 
    from 	
    	student;
    
    # 3、查询“生物”课程和“物理”课程成绩都及格的学生id和姓名;
    select 
    	sid,sname 
    from 
    	student where sid in(
    		select 
    			student_id 
    		from 
    			score
    		inner join 
    			course 
    		on 
    			score.course_id = course.cid 
    		where 
    			cname='生物' or cname='物理' and score>=60
    group by 
    	score.student_id 
    having 
    	count(course_id)=2
    	);
    
    # 4、查询每个年级的班级数,取出班级数最多的前三个年级;
    select
    	grade_id,
    	count(grade_id) as num
    from 
    	class
    group by
    	grade_id
    order by count(grade_id) desc
    limit 3;
    
    # 5、查询平均成绩最高和最低的学生的id和姓名以及平均成绩;
    select 	
    	sid,
    	sname,
    	t1.avg_score 
    from 
    	student 
    inner join(
    	select 
    		student_id,
    		avg(score)as avg_score 
    	from 
    		score 
    	group by 
    		student_id 
    	having 
    		avg(score) in(
    			(select avg(score)as low_score from score group by student_id order by avg(score) limit 1),
    			(select avg(score)as high_score from score group by student_id order by avg(score) desc limit 1))
    		)as t1
    on 
    	student.sid=t1.student_id;
    
    # 6、查询每个年级的学生人数;
    select 
    	gname,
    	count(sid)as student_count 
    from 
    	student
    inner join(
    	select 
    		* 
    	from 
    		class_grade 
    	inner join 
    		class 
    	on 
    	class_grade.gid=class.grade_id
    	)as t1
    on 
    	student.class_id=t1.cid 
    group by 
    	gid;
    
    # 7、查询每位学生的学号,姓名,选课数,平均成绩;
    select 
    	sid, 
    	sname, 
    	t1.total_course, 
    	t1.avg_score 
    from 
    	student 
    left join(
    	select 
    		student_id,
    		count(course_id)as total_course,
    		avg(score)as avg_score 
    	from 
    		score
    	group by 
    		student_id
    	)as t1
    on 
    student.sid=t1.student_id;
    
    # 8、查询学生编号为“2”的学生的姓名、该学生成绩最高的课程名、成绩最低的课程名及分数;
    select 
    	sid,
    	sname,
    	t1.course_id,
    	t1.score 
    from 
    	student 
    inner join(
    	select 
    		student_id,
    		course_id,
    		score 
    	from 
    		score 
    	where 
    		score in(
    			(select score from score where student_id=2 order by score desc limit 1),
    			(select score from score where student_id=2 order by score limit 1 )
    			)
    		)as t1
    on 
    	student.sid=t1.student_id;
    
    # 9、查询姓“李”的老师的个数和所带班级数;
    select 
    	total_teach,
    	count(teach2cls.cid)as total_class 
    from 
    	teach2cls 
    inner join(
    	select 
    		tid,
    		count(tid)as total_teach 
    	from 
    		teacher 
    	where 
    		tname like "李%" 
    	)as teach
    on 
    	teach2cls.tid=teach.tid 
    group by 
    	teach2cls.tid;
    
    # 10、查询班级数小于5的年级id和年级名;
    select 
    	gid, gname from class_grade 
    inner join(
    	select 
    		grade_id,
    		count(cid) as class_count
    	from
    		class
    	group by 
    		grade_id
    	) as t1
    on 
    	class_grade.gid = t1.grade_id
    where 
    	t1.class_count<5;
    
    # 11、查询班级信息,包括班级id、班级名称、年级、年级级别(12为低年级,34为中年级,56为高年级),示例结果如下;
    班级id	班级名称	年级	年级级别
      1	 	一年一班	一年级	   低
      
    select
    	class.cid as '班级id',
    	class.caption as '班级名称',
    	class_grade.gname as '年级',
    	case when class_grade.gid between 1 and 2 then '低'
    	when class_grade.gid between 3 and 4 then '中'
    	when class_grade.gid between 5 and 6 then '高' else 0 end as '年级级别'
    from
    	class,
    	class_grade
    where
    	class.grade_id = class_grade.gid;
    
    
    # 12、查询学过“张三”老师2门课以上的同学的学号、姓名;
    select 
    	sid,
    	sname 
    from 
    	student 
    where 
    	sid in(
    		select 
    			student_id 
    		from 
    			score 
    		inner join(
    			select 
    				cid 
    			from 
    				course 
    			where 
    				teacher_id =(
    					select 
    						tid 
    					from 
    						teacher 
    					where 
    						tname='张三'
    				)
    		)as t1
    on 
    	score.course_id=t1.cid 
    group by 
    	student_id 
    having 
    	count(course_id)=2
    );
    
    # 13、查询教授课程超过2门的老师的id和姓名;
    select 
    	tid, 
    	tname 
    from 
    	teacher 
    where tid in (
    	select 
    		teacher_id 
    	from 
    		course 
    	group by 
    		teacher_id 
    	having 
    		count(cid)>=2
    );
    
    # 14、查询学过编号“1”课程和编号“2”课程的同学的学号、姓名;
    select 
    	sid,
    	sname 
    from 
    	student 
    where 
    	sid in (
    		select 
    			student_id 
    		from 
    			score 
    		where 
    			course_id='1' or course_id='2' 
    		group by 
    			student_id 
    having 
    	count(course_id)=2
    );
    
    # 15、查询没有带过高年级的老师id和姓名
    select 
    	tid,
    	tname 
    from 
    	teacher 
    where 
    	tid not in(
    		select 
    			distinct tid 
    		from 
    			teach2cls 
    		where 
    			cid in (
    				select 
    					cid 
    				from 
    					class 
    				where 
    					grade_id in (
    						select 
    							gid 
    						from 
    							class_grade
    						where 
    							gname='五年级' or gname='六年级'
    					)
    			)
    	);
    
    # 16、查询学过“张三”老师所教的所有课的同学的学号、姓名;
    select 
    	sid, 
    	sname 
    from 
    	student 
    where sid in (
    	select distinct student_id from score where course_id in (
    		select cid from course where teacher_id in(
    			select tid from teacher where tname='张三'
    			)
    		)
    	);
    
    # 17、查询带过超过2个班级的老师的id和姓名;
    select 
    	tid, 
    	tname
    from 
    	teacher 
    where tid in (
    	select 
    		tid 
    	from 
    		teach2cls 
    	group by 
    		tid 
    	having 
    		count(cid)>2
    );
    
    # 18、查询课程编号“2”的成绩比课程编号“1”课程低的所有同学的学号、姓名;
    select
      sid,
      sname
    from student
    where sid in (
      select s1.student_id
      from score as s1 inner join score as s2 on s1.student_id = s2.student_id and s1.course_id = 1 and s2.course_id = 2
      where s1.score < s2.score);
    
    # 19、查询所带班级数最多的老师id和姓名;
    select 
    	tid,
    	tname 
    from 
    	teacher
    where 
    	tid in (
    		select 
    			tid 
    		from 
    			teach2cls 
    		group by 
    			tid 
    		having 
    			count(cid)=(
    				select 
    					count(cid) 
    				from 
    					teach2cls 
    				group by 
    					tid 
    				order by 
    					count(cid) desc 
    				limit 1
    			)
    	);
    
    # 20、查询有课程成绩小于60分的同学的学号、姓名;
    select 
    	sid,
    	sname 
    from 
    	student 
    where 
    	sid in (
    		select 
    			student_id 
    		from 
    			score 
    		where 
    			score<60
    	);
    
    # 21、查询没有学全所有课的同学的学号、姓名;
    select 
    	sid,
    	sname 
    from 
    	student 
    left join (
    	select 
    		student_id 
    	from 
    		score 
    	group by 
    		student_id 
    	having 
    		count(course_id)=(
    			select count(cid) from course)
    	)as t1 
    on 
    	student.sid=t1.student_id
    where 
    	t1.student_id is null;
    
    # 22、查询至少有一门课与学号为“1”的同学所学相同的同学的学号和姓名;
    select 
    	sid,sname 
    from 
    	student 
    where 
    	sid in (
    		select 
    			distinct student_id 
    		from 
    			score 
    		where 
    			course_id in( 
    				select 
    					course_id 
    				from 
    					score 
    				where 
    					student_id =1
    			)
    	) 
    	and sid !=1;
    
    # 23、查询至少学过学号为“1”同学所选课程中任意一门课的其他同学学号和姓名;
    select 
    	distinct sid,
    	sname 
    from 
    	student
    where 
    	sid in (
    		select 
    			student_id 
    		from 
    			score 
    		where 
    			course_id in (
    				select 
    					course_id 
    				from 
    					score 
    				where 
    					student_id=1
    			) 
    			and student_id!=1
    	);
    
    # 24、查询和“2”号同学学习的课程完全相同的其他同学的学号和姓名;
    select 
    	sid,
    	sname 
    from 
    	student 
    where sid in (
    	select student_id from score,
    	(select course_id from score where student_id=2)as t1
    	where score.course_id = t1.course_id and score.student_id !=2 group by score.student_id 
    	having count(score.course_id)=(select count(course_id)from score where student_id=2)
    );
    	
    # 25、删除学习“张三”老师课的score表记录;
    delete from score where course_id in (
    	select cid from course where teacher_id =(
    		select tid from teacher where tname='张三')
    );
    
    # 26、向score表中插入一些记录,这些记录要求符合以下条件:①没有上过编号“2”课程的同学学号;②插入“2”号课程的平均成绩;
    insert score(student_id,course_id,score)
        select t1.sid,2,t2.avg_score from(
    	(select sid from student where sid not in (select student_id from score where course_id = 2)) as t1,
    	(select avg(score)as avg_score from score where course_id = 2) as t2);
    
    # 27、按平均成绩从低到高显示所有学生的“语文”、“数学”、“英语”三门的课程成绩,按如下形式显示: 学生ID,语文,数学,英语,有效课程数,有效平均分;	
    select 
    	student_id,
    	(select score from score where course_id =(select cid from course where cname='语文') and score.student_id =s1.student_id ) as '语文',
    	(select score from score where course_id =(select cid from course where cname='数学') and score.student_id =s1.student_id ) as '数学',
    	(select score from score where course_id =(select cid from course where cname='英语') and score.student_id =s1.student_id ) as '英语',
    	count(course_id) as '有效课程数',
    	avg(score) as '有效平均分'
    from 
    	score as s1
    group by
    	student_id
    order by
    	avg(score);
    
    # 28、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分;
    select 
    	course_id as id,
    	max(score.score) as '最高分', 
    	min(score.score) as '最低分' 
    from 
    	course 
    left join score 
    on score.course_id=course.cid  
    group by course_id; 
    
    # 29、按各科平均成绩从低到高和及格率的百分数从高到低顺序;
    select course_id, 
    	avg(score) as avg_score,
    	sum(case when score.score >= 60 then 1 else 0 end) / count(sid) * 100 as percent
    from 
    	score 
    group by 
    	course_id 
    order by 
    	avg(score) asc,percent desc;
    
    # 30、课程平均分从高到低显示(现实任课老师);
    select 
    	t1.cid,
    	t1.tname,
    	t2.avg_score 
    from(
    	select 
    		teacher.tid as tid, 
    		teacher.tname as tname,
    		course.cid as cid 
    	from 
    		teacher 
    	inner join 
    		course 
    	on teacher.tid = teacher_id
    	)as t1
    inner join
    	(select course_id,avg(score)as avg_score from score group by course_id )as t2
    on 
    	t1.cid=t2.course_id 
    order by 
    	avg_score desc;
    
    # 31、查询各科成绩前三名的记录(不考虑成绩并列情况)
    select
      student_id,
      score,
      course_id
    from score r1
    where (SELECT count(1)
           from (select distinct
                   score,
                   course_id
                 from score) r2
           where r2.course_id = r1.course_id AND r2.score > r1.score) <= 2
    order by course_id, score DESC;
    
    
    # 32、查询每门课程被选修的学生数;
    select 
    	course_id, 
    	count(student_id) 
    from 
    	score 
    group by 
    	course_id;
    
    # 33、查询选修了2门以上课程的全部学生的学号和姓名;
    select 
    	sid, 
    	sname 
    from 
    	student 
    where sid in(
    	select 
    		student_id 
    	from 
    		score 
    	group by 
    		student_id 
    	having 
    		count(course_id)>2);
    
    # 34、查询男生、女生的人数,按倒序排列;
    select 
    	gender, 
    	count(sid) 
    from 
    	student 
    group by 
    	gender 
    order by 	
    	count(sid) desc;
    
    # 35、查询姓“张”的学生名单;
    select 
    	* 
    from 
    	student 
    where 
    	sname like "张%";
    
    # 36、查询同名同姓学生名单,并统计同名人数;
    select 
    	sname,
    	count(sid) 
    from 
    	student 
    group by 
    	sname 
    having 
    	count(sid)>1;
    
    # 37、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列;
    select 
    	course_id, 
    	avg(score) 
    from 
    	score 
    group by 
    	course_id 
    order by 
    	avg(score),
    	course_id desc;
    
    # 38、查询课程名称为“数学”,且分数低于60的学生姓名和分数;
    select 
    	student.sname, 
    	t1.score 
    from 
    	student 
    inner join  (
    	select 
    		student_id, 
    		score 
    	from 
    		score 
    	where score.score<60 and course_id in (
    		select 
    			cid 
    		from 
    			course 
    		where cname='数学'
    	) 
    )as t1
    on 	
    	t1.student_id=student.sid;
    
    # 39、查询课程编号为“3”且课程成绩在80分以上的学生的学号和姓名;
    select 
    	sid,
    	sname 
    from 
    	student 
    where sid in(
    	select 
    		student_id 
    	from 
    		score 
    	where 
    	course_id=3 and score>80
    );
    
    # 40、求选修了课程的学生人数
    select 
    	coalesce(student_id,"总人数")as id,
    	count(course_id) 
    from 
    	score 
    group by 
    	student_id 
    with rollup;
    
    # 41、查询选修“王五”老师所授课程的学生中,成绩最高和最低的学生姓名及其成绩;
    select 
    	s1.student_id,
    	low_score,
    	s2.student_id,
    	high_score 
    from(
    	select 
    		tid,
    		student_id,
    		score as low_score 
    	from 
    		(select student_id,cid,cname,score,tid 
    		from score 
    		inner join
    			(select tid,tname,cid,cname from teacher inner join course on teacher.tid=course.teacher_id where tname='王五')as t1
    		on score.course_id=t1.cid)as t2 order by score limit 1) as s1
    	inner join (
    		select tid,student_id,score as high_score from 
    			(select student_id,cid,cname,score,tid 
    			from score 
    			inner join
    				(select tid,tname,cid,cname from teacher 
    				inner join 
    					course 
    				on teacher.tid=course.teacher_id where tname='王五')as t1
    			on score.course_id=t1.cid)as t2 order by score desc limit 1) as s2
    	on s1.tid=s2.tid;
    
    
    # 42、查询各个课程及相应的选修人数;
    select 
    	course_id ,
    	count(student_id) 
    from 
    	score 
    group by 
    	course_id;
    
    # 43、查询不同课程但成绩相同的学生的学号、课程号、学生成绩;
    select distinct
    	s1.course_id,
    	s1.student_id,
    	s1.score,
    	s2.course_id,
    	s2.student_id,
    	s2.score 
    from 
    	score as s1, 
    	score as s2 
    where 
    s1.score = s2.score and s1.course_id != s2.course_id;
    
    
    # 44、查询每门课程成绩最好的前两名学生id和姓名;
    select student.sid,student.sname,course.cname, score.score
    	from score
    inner join (
    	select course_id, score, ranking
    		from (
    			 select a.course_id, a.score, count(1) as ranking
    				from 
    					(select course_id, score from score group by course_id, score order by course_id, score desc)as a
    				inner join 
    					(select course_id, score from score group by course_id, score order by course_id, score desc)as b
    				on a.course_id = b.course_id and a.score <= b.score group by course_id, score
    		) as t1
    		where ranking in (1, 2) order by course_id, ranking)as s1
    on score.course_id = s1.course_id and score.score = s1.score
    inner join student
    	on score.student_id = student.sid
    inner join course 
    	on score.course_id = course.cid;
    
    
    # 45、检索至少选修两门课程的学生学号;
    select 
    	student_id 
    from 
    	score 
    group by 
    	student_id 
    having 
    	count(course_id)>=2;
    
    # 46、查询没有学生选修的课程的课程号和课程名;
    select 
    	course.cid,
    	course.cname 
    from 
    	course 
    left join 
    	score 
    on 
    	course.cid=score.course_id 
    where 
    	score.student_id is null;
    
    # 47、查询没带过任何班级的老师id和姓名;
    select 
    	teacher.tid,
    	tname 
    from 
    	teacher 
    left join 
    	teach2cls 
    on 
    	teacher.tid=teach2cls.tid 
    where 
    	teach2cls.tcid is null;
    
    # 48、查询有两门以上课程超过80分的学生id及其平均成绩;
    select 
    	student_id,
    	avg(score) 
    from 
    	score 
    where 
    	score>80 
    group by 
    	student_id 
    having 
    	count(course_id)>2;
    
    # 49、检索“3”课程分数小于60,按分数降序排列的同学学号;
    select 
    	student_id,
    	score 
    from 
    	score 
    where 
    	score<60 and course_id=3 
    order by 
    	score desc;
    
    # 50、删除编号为“2”的同学的“1”课程的成绩;
    delete from score where student_id='2' and course_id='1';
    
    # 51、查询同时选修了物理课和生物课的学生id和姓名;
    select 
    	student.sid,
    	student.sname 
    from 
    	student 
    where sid in (
            select 
    			student_id 
    		from 
    			score 
    		where 
    			course_id IN (
                    select 
    					cid 
    				from 
    					course 
    				where cname = '物理' or cname = '生物'
    			)
            group by 
    			student_id 
    		having 
    			count(course_id) = 2
        );
    

      

      

  • 相关阅读:
    如何进行有效沟通避免出现误会
    如何进行有效沟通
    怎样提高自己的团队合作能力
    javaScript简介
    css文本格式详解
    css简介及相关概念
    WebGL10---3D模型的加载与使用
    Canvas绘图与动画详解
    Canvas绘制时钟
    WebGL9----将canvas作为纹理,将动画作为纹理(2)
  • 原文地址:https://www.cnblogs.com/fantsaymwq/p/10260792.html
Copyright © 2011-2022 走看看