show variables like'character_set_%';
set character_set_server=utf8;
set character_set_database=utf8;create database exp;
use exp;create table 教師 (教師號 char(8) primary key,教師名 char(8)not null,學院代碼 char(10))defaultchar set ='utf8';create table 課程
( 課程號 char(8) primary key,課程名 char(20)not null,學時 int)defaultchar set ='utf8';create table 學生( 學號 char(8) primary key,姓名 char(10)not null,性別 char(4)not null,學院代碼 char(10))defaultchar set ='utf8';create table 授課
( 教師號 char(8) references 教師(教師號),課程號 char(8) references 課程(課程號),primary key (教師號, 課程號))defaultchar set ='utf8';create table 學院
( 學院代碼 char(10) primary key,學院名稱 char(30)not null)defaultchar set ='utf8';create table 學習
( 學號 char(8) references 學生(學號),課程號 char(8) references 課程(課程號),教師號 char(8) references 教師(教師號),成績 int,primary key (學號,課程號,教師號))defaultchar set ='utf8';insert into 教師 values('1','李夢','100');
insert into 教師 values('2','張亮','101');
insert into 教師 values('3','王剛','102');
insert into 教師 values('4','趙廣','103');
insert into 教師 values('5','孫露','104');insert into 課程 values('C1','數據庫','40');
insert into 課程 values('C2','軟件工程','32');
insert into 課程 values('C3','經濟學','32');
insert into 課程 values('C4','古代漢語','64');
insert into 課程 values('C5','信號與系統','72');
insert into 課程 values('C6','材料力學','56');
insert into 課程 values('C7','通信原理','72');insert into 學生 values('T01','王娜','女','100');
insert into 學生 values('T02','李倩','女','100');
insert into 學生 values('T03','張皓','男','100');
insert into 學生 values('T04','李靜','女','101');
insert into 學生 values('T05','周小米','女','101');
insert into 學生 values('T06','王石','男','102');
insert into 學生 values('T07','謝楠','女','102');
insert into 學生 values('T08','蔣明','男','102');
insert into 學生 values('T09','陳沖','男','102');
insert into 學生 values('T10','趙琳','女','102');
insert into 學生 values('T11','韓寒','女','103');
insert into 學生 values('T12','吳亮','男','103');
insert into 學生 values('T13','劉波','男','103');
insert into 學生 values('T14','張斌','男','104');
insert into 學生 values('T15','周通','男','104');
insert into 學生 values('T16','張航','男','100');insert into 學習 values('T01','C1','1',88);
insert into 學習 values('T01','C3','3',54);
insert into 學習 values('T01','C4','3',69);
insert into 學習 values('T01','C5','3',85);
insert into 學習 values('T02','C3','3',74);
insert into 學習 values('T02','C4','3',63);
insert into 學習 values('T02','C5','3',66);
insert into 學習 values('T02','C6','4',77);
insert into 學習 values('T03','C1','1',95);
insert into 學習 values('T03','C2','2',92);
insert into 學習 values('T03','C3','3',92);
insert into 學習 values('T03','C4','3',91);
insert into 學習 values('T03','C5','3',87);
insert into 學習 values('T04','C1','1',83);
insert into 學習 values('T04','C3','3',64);
insert into 學習 values('T04','C5','3',62);
insert into 學習 values('T05','C3','3',83);
insert into 學習 values('T05','C4','3',78);
insert into 學習 values('T05','C6','4',78);
insert into 學習 values('T06','C3','3',66);
insert into 學習 values('T06','C5','5',33);
insert into 學習 values('T07','C3','3',69);
insert into 學習 values('T07','C4','3',56);
insert into 學習 values('T08','C3','3',64);
insert into 學習 values('T08','C5','5',65);
insert into 學習 values('T09','C2','2',64);
insert into 學習 values('T09','C3','3',45);
insert into 學習 values('T10','C3','3',46);
insert into 學習 values('T10','C4','3',56);
insert into 學習 values('T11','C3','3',75);
insert into 學習 values('T12','C3','3',86);
insert into 學習 values('T13','C3','3',67);
insert into 學習 values('T14','C3','3',65);
insert into 學習 values('T15','C3','3',68);
insert into 學習 values('T15','C5','3',56);
insert into 學習 values('T16','C1','1',91);
insert into 學習 values('T16','C2','2',89);
insert into 學習 values('T16','C3','3',94);
insert into 學習 values('T16','C4','3',76);
insert into 學習 values('T16','C5','5',81);
insert into 學習 values('T16','C6','4',82);insert into 學院 values('100','計算機');
insert into 學院 values('101','機電');
insert into 學院 values('102','管理');
insert into 學院 values('103','材料');
insert into 學院 values('104','文法');insert into 授課 values('1','C1');
insert into 授課 values('2','C2');
insert into 授課 values('3','C3');
insert into 授課 values('3','C4');
insert into 授課 values('3','C5');
insert into 授課 values('4','C6');
insert into 授課 values('5','C5');
insert into 授課 values('5','C6');
insert into 授課 values('5','C7');
select e.姓名,e1.課程名,e2.成績 from 學生 e,課程 e1,學習 e2,教師 e3 where e.學號=e2.學號 and e1.課程號=e2.課程號 and e2.成績>90and e3.教師號=e2.教師號 and e3.教師名="王剛";
2.求選修了“王剛”老師所授全部課程的學生姓名和學院名稱;(姓名,學院名稱)
select e.姓名,e1.學院名 from 學生 e,學院 e1 where e.學院編碼=e1.學院編碼 andnot exists (select *from 授課 e2,教師 e3 where e2.教師號= e3.教師號 and e3.教師名="王剛"andnotexists(select *from 學習 where 學習.學號=e.學號 and 學習.課程號=e2.課程號));
3.求沒有選修課程“軟件工程”的學生學號和姓名;(學生學號,姓名)
select distinct e.學號,e.姓名 from 學生 e,學習 e1,課程 e2 where e.學號=e1.學號 and e1.課程號=e2.課程號 andnotexists(select e5.學號 from 課程 e4,學習 e5 where e5.課程號=e4.課程號 and e4.課程名="軟件工程"and e5.學號=e.學號);
4.求至少選修了兩門課程的學生學號;(學號)
select distinct e1.學號 from 學習 e1 join (select e2.學號,count(e2.學號) p from 學習 e2 group by e2.學號) t on t.學號=e1.學號 where t.p>=2;
5.求課程“經濟學”不及格學生姓名和考試成績;(姓名,成績)
select e1.姓名,e3.成績 from 學生 e1,課程 e2,學習 e3 where e1.學號=e3.學號 and e2.課程號=e3.課程號 and e2.課程名="經濟學"and e3.成績<60;
6.求至少選修了與學號“T06” 同學選修的課程相同的學生學號;(學號)
select e.學號 from 學生 e where not exists (select *from 學習 e1 where e1.學號="T06"andnotexists(select *from 學習 e2 where e2.學號=e.學號 and e2.課程號=e1.課程號));
7.求至少選修了“C3,C4”兩門課程的學生姓名和學院名稱;(姓名,學院名稱)
select distinct e.姓名,e1.學院名 from 學生 e,學院 e1,學習 e2 where e.學號=e2.學號 and e.學院編碼=e1.學院編碼 and e2.課程號="C3” and e.學號 in (select e3.學號 from 學習 e3 where e3.課程號=”C4”);
8.查詢“王石”同學沒有選修的課程號和課程名; (課程號,課程名)
select distinct e6.課程號,e6.課程名 from 課程 e6 where e6.課程號 not in ( select e1.課程號 from 學生 x ,課程 e1,學習 e where x.學號=e.學號 and e.課程號=e1.課程號 and x.姓名="王石");
9.查詢沒有被任何學生選修的課程的課程號;(課程號)
select distinct e5.課程號 from 課程 e5 where e5.課程號 notin( select distinct e.課程號 from 學習 e);
10.求選修了全部課程的學生姓名;(姓名)
select e.姓名 from 學生 e where notexists(select *from 課程 e1 where notexists(select *from 學習 e2 where e2.課程號=e1.課程號 and e2.學號=e.學號));
11.查詢各學院課程“經濟學”的平均分,并按照成績從高到低的順序排列;(學院名稱,平均分)
select e3.學院名 ,avg(e.成績) 成績 from 學習 e,課程 e1,學生 e2,學院 e3 where e.學號=e2.學號 and e.課程號=e1.課程號 and e2.學院編碼=e3.學院編碼 and e1.課程名=”經濟學” group by e2.學院編碼 order by 成績 desc;
select e2.姓名 ,e3.學院名, e.成績 from 學習 e,課程 e1,學生 e2,學院 e3 where e.學號=e2.學號 and e.課程號=e1.課程號 and e2.學院編碼=e3.學院編碼 and e1.課程名=”經濟學” order by e3.學院名 desc,e.成績 desc;
select e.課程號,e.課程名,e1.教師名 from 課程 e,教師 e1,授課 e2 where e.課程號=e2.課程號 and e2.教師號=e1.教師號 and e.學時 between 30and45;
14.檢索選修課程“經濟學”的最高分學生的姓名;(姓名)
select e1.姓名 from 學生 e1 ,學習 e2,課程 e3 where e1.學號=e2.學號 and e2.課程號=e3.課程號 and e3.課程名=”經濟學” and e2.成績=(select max(e.成績) from 學習 e,課程 e0 where e.課程號=e0.課程號 and e0.課程名=”經濟學”);
15.查詢選課人數超過5人的課程的課程號及課程名;(課程號,課程名)
select e.課程號,e.課程名 from 課程 e join(select e1.課程號,count(e1.課程號) number from 學習 e1 group by e1.課程號) t on e.課程號=t.課程號 where number>5;