Mysql版本:6.3
練習(xí)數(shù)據(jù)
數(shù)據(jù)表
--1.學(xué)生表 Student(SId,Sname,Sage,Ssex)
SId 學(xué)生編號,Sname 學(xué)生姓名,Sage 出生年月,Ssex 學(xué)生性別
--2.課程表 Course(CId,Cname,TId)
CId 課程編號,Cname 課程名稱,TId 教師編號
--3.教師表 Teacher(TId,Tname)
TId 教師編號,Tname 教師姓名
--4.成績表 SC(SId,CId,score)
SId 學(xué)生編號,CId 課程編號,score 分?jǐn)?shù)
創(chuàng)建測試數(shù)據(jù)
學(xué)生表 Student:
導(dǎo)入數(shù)據(jù)方法:將以下 mysql 語句示绊,完整復(fù)制到 workbench 語句窗口(或者是 mysql 的黑窗口)陪白,然后運(yùn)行即可導(dǎo)入与学,不需要另外創(chuàng)建表,下面表的操作一樣薪贫。這些語句第一條是創(chuàng)建表(create table),后面都是插入數(shù)據(jù)到表中(insert into table )。
create table Student(SId varchar(10),Sname varchar(10),Sage datetime,Ssex varchar(10));
insert into Student values('01' , '趙雷' , '1990-01-01' , '男');
insert into Student values('02' , '錢電' , '1990-12-21' , '男');
insert into Student values('03' , '孫風(fēng)' , '1990-05-20' , '男');
insert into Student values('04' , '李云' , '1990-08-06' , '男');
insert into Student values('05' , '周梅' , '1991-12-01' , '女');
insert into Student values('06' , '吳蘭' , '1992-03-01' , '女');
insert into Student values('07' , '鄭竹' , '1989-07-01' , '女');
insert into Student values('09' , '張三' , '2017-12-20' , '女');
insert into Student values('10' , '李四' , '2017-12-25' , '女');
insert into Student values('11' , '李四' , '2017-12-30' , '女');
insert into Student values('12' , '趙六' , '2017-01-01' , '女');
insert into Student values('13' , '孫七' , '2018-01-01' , '女');
科目表 Course
create table Course(CId varchar(10),Cname nvarchar(10),TId varchar(10));
insert into Course values('01' , '語文' , '02');
insert into Course values('02' , '數(shù)學(xué)' , '01');
insert into Course values('03' , '英語' , '03');
教師表 Teacher
create table Teacher(TId varchar(10),Tname varchar(10));
insert into Teacher values('01' , '張三');
insert into Teacher values('02' , '李四');
insert into Teacher values('03' , '王五');
成績表 SC
create table SC(SId varchar(10),CId varchar(10),score decimal(18,1));
insert into SC values('01' , '01' , 80);
insert into SC values('01' , '02' , 90);
insert into SC values('01' , '03' , 99);
insert into SC values('02' , '01' , 70);
insert into SC values('02' , '02' , 60);
insert into SC values('02' , '03' , 80);
insert into SC values('03' , '01' , 80);
insert into SC values('03' , '02' , 80);
insert into SC values('03' , '03' , 80);
insert into SC values('04' , '01' , 50);
insert into SC values('04' , '02' , 30);
insert into SC values('04' , '03' , 20);
insert into SC values('05' , '01' , 76);
insert into SC values('05' , '02' , 87);
insert into SC values('06' , '01' , 31);
insert into SC values('06' , '03' , 34);
insert into SC values('07' , '02' , 89);
insert into SC values('07' , '03' , 98);
練習(xí)題目
1.查詢" 01 "課程比" 02 "課程成績高的學(xué)生的信息及課程分?jǐn)?shù)
1.1 查詢同時(shí)存在" 01 "課程和" 02 "課程的情況
1.2 查詢存在" 01 "課程但可能不存在" 02 "課程的情況(不存在時(shí)顯示為 null ) 1.3 查詢不存在" 01 "課程但存在" 02 "課程的情況
2.查詢平均成績大于等于 60 分的同學(xué)的學(xué)生編號和學(xué)生姓名和平均成績
3.查詢在 SC 表存在成績的學(xué)生信息
4.查詢所有同學(xué)的學(xué)生編號趣避、學(xué)生姓名、選課總數(shù)新翎、所有課程的總成績(沒成績的顯示為 null ) 4.1 查有成績的學(xué)生信息
5.查詢「李」姓老師的數(shù)量
6.查詢學(xué)過「張三」老師授課的同學(xué)的信息
7.查詢沒有學(xué)全所有課程的同學(xué)的信息
8.查詢至少有一門課與學(xué)號為" 01 "的同學(xué)所學(xué)相同的同學(xué)的信息
9.查詢和" 01 "號的同學(xué)學(xué)習(xí)的課程 完全相同的其他同學(xué)的信息
10.查詢沒學(xué)過"張三"老師講授的任一門課程的學(xué)生姓名
11.查詢兩門及其以上不及格課程的同學(xué)的學(xué)號程帕,姓名及其平均成績
12.檢索" 01 "課程分?jǐn)?shù)小于 60,按分?jǐn)?shù)降序排列的學(xué)生信息
13.按平均成績從高到低顯示所有學(xué)生的所有課程的成績以及平均成績
14.查詢各科成績最高分地啰、最低分和平均分: 以如下形式顯示:課程 ID愁拭,課程 name,最高分亏吝,最低分岭埠,平均分,及格率蔚鸥,中等率惜论,優(yōu)良率,優(yōu)秀率 及格為>=60止喷,中等為:70-80馆类,優(yōu)良為:80-90,優(yōu)秀為:>=90 要求輸出課程號和選修人數(shù)弹谁,查詢結(jié)果按人數(shù)降序排列乾巧,若人數(shù)相同,按課程號升序排列
15.按各科成績進(jìn)行排序预愤,并顯示排名卧抗, Score 重復(fù)時(shí)保留名次空缺 15.1 按各科成績進(jìn)行排序,并顯示排名鳖粟, Score 重復(fù)時(shí)合并名次
16.查詢學(xué)生的總成績社裆,并進(jìn)行排名,總分重復(fù)時(shí)保留名次空缺 16.1 查詢學(xué)生的總成績向图,并進(jìn)行排名泳秀,總分重復(fù)時(shí)不保留名次空缺
17.統(tǒng)計(jì)各科成績各分?jǐn)?shù)段人數(shù):課程編號差凹,課程名稱叨咖,[100-85]买置,[85-70]饮潦,[70-60],[60-0] 及所占百分比
18.查詢各科成績前三名的記錄
19.查詢每門課程被選修的學(xué)生數(shù)
20.查詢出只選修兩門課程的學(xué)生學(xué)號和姓名
21.查詢男生昼蛀、女生人數(shù)
22.查詢名字中含有「風(fēng)」字的學(xué)生信息
23.查詢同名同性學(xué)生名單弯院,并統(tǒng)計(jì)同名人數(shù)
24.查詢 1990 年出生的學(xué)生名單
25.查詢每門課程的平均成績翎卓,結(jié)果按平均成績降序排列,平均成績相同時(shí)偶房,按課程編號升序排列
26.查詢平均成績大于等于 85 的所有學(xué)生的學(xué)號趁曼、姓名和平均成績
27.查詢課程名稱為「數(shù)學(xué)」,且分?jǐn)?shù)低于 60 的學(xué)生姓名和分?jǐn)?shù)
28.查詢所有學(xué)生的課程及分?jǐn)?shù)情況(存在學(xué)生沒成績棕洋,沒選課的情況)
29.查詢?nèi)魏我婚T課程成績在 70 分以上的姓名挡闰、課程名稱和分?jǐn)?shù)
30.查詢不及格的課程
31.查詢課程編號為 01 且課程成績在 80 分以上的學(xué)生的學(xué)號和姓名
32.求每門課程的學(xué)生人數(shù)
33.假設(shè)成績不重復(fù),查詢選修「張三」老師所授課程的學(xué)生中掰盘,成績最高的學(xué)生信息及其成績
34.假設(shè)成績有重復(fù)的情況下摄悯,查詢選修「張三」老師所授課程的學(xué)生中,成績最高的學(xué)生信息及其成績
35.查詢不同課程成績相同的學(xué)生的學(xué)生編號愧捕、課程編號奢驯、學(xué)生成績
36.查詢每門功成績最好的前兩名
37.統(tǒng)計(jì)每門課程的學(xué)生選修人數(shù)(超過 5 人的課程才統(tǒng)計(jì))。
38.檢索至少選修兩門課程的學(xué)生學(xué)號
39.查詢選修了全部課程的學(xué)生信息
40.查詢各學(xué)生的年齡次绘,只按年份來算
41.按照出生日期來算瘪阁,當(dāng)前月日 < 出生年月的月日則,年齡減一
42.查詢本周過生日的學(xué)生
43.查詢下周過生日的學(xué)生
44.查詢本月過生日的學(xué)生
45.查詢下月過生日的學(xué)生
參考答案:
1.查詢" 01 "課程比" 02 "課程成績高的學(xué)生的信息及課程分?jǐn)?shù)
1.1 查詢同時(shí)存在" 01 "課程和" 02 "課程的情況
1.2 查詢存在" 01 "課程但可能不存在" 02 "課程的情況(不存在時(shí)顯示為 null ) 1.3 查詢不存在" 01 "課程但存在" 02 "課程的情況
2.查詢平均成績大于等于 60 分的同學(xué)的學(xué)生編號和學(xué)生姓名和平均成績
3.查詢在 SC 表存在成績的學(xué)生信息
4.查詢所有同學(xué)的學(xué)生編號断盛、學(xué)生姓名、選課總數(shù)愉舔、所有課程的總成績(沒成績的顯示為 null ) 4.1 查有成績的學(xué)生信息
5.查詢「李」姓老師的數(shù)量
6.查詢學(xué)過「張三」老師授課的同學(xué)的信息
7.查詢沒有學(xué)全所有課程的同學(xué)的信息
8.查詢至少有一門課與學(xué)號為" 01 "的同學(xué)所學(xué)相同的同學(xué)的信息
9.查詢和" 01 "號的同學(xué)學(xué)習(xí)的課程 完全相同的其他同學(xué)的信息
10.查詢沒學(xué)過"張三"老師講授的任一門課程的學(xué)生姓名
11.查詢兩門及其以上不及格課程的同學(xué)的學(xué)號钢猛,姓名及其平均成績
12.檢索" 01 "課程分?jǐn)?shù)小于 60,按分?jǐn)?shù)降序排列的學(xué)生信息
13.按平均成績從高到低顯示所有學(xué)生的所有課程的成績以及平均成績
14.查詢各科成績最高分轩缤、最低分和平均分: 以如下形式顯示:課程 ID命迈,課程 name,最高分火的,最低分壶愤,平均分,及格率馏鹤,中等率征椒,優(yōu)良率,優(yōu)秀率 及格為>=60湃累,中等為:70-80勃救,優(yōu)良為:80-90,優(yōu)秀為:>=90 要求輸出課程號和選修人數(shù)治力,查詢結(jié)果按人數(shù)降序排列蒙秒,若人數(shù)相同,按課程號升序排列
15.按各科成績進(jìn)行排序宵统,并顯示排名晕讲, Score 重復(fù)時(shí)保留名次空缺?
15.1 按各科成績進(jìn)行排序,并顯示排名, Score 重復(fù)時(shí)合并名次
SELECT @rank := 0, @sco := NULL;
SELECT
? ? *,
? ? CASE
? ? ? ? WHEN (@sco = score) THEN @rank
? ? ? ? ELSE @rank:=@rank + 1
? ? END AS rn,
? ? @sco:=score
FROM
? ? sc
ORDER BY score DESC
16.查詢學(xué)生的總成績瓢省,并進(jìn)行排名弄息,總分重復(fù)時(shí)保留名次空缺
?16.1 查詢學(xué)生的總成績,并進(jìn)行排名净捅,總分重復(fù)時(shí)不保留名次空缺
17.統(tǒng)計(jì)各科成績各分?jǐn)?shù)段人數(shù):課程編號疑枯,課程名稱,[100-85]蛔六,[85-70]荆永,[70-60],[60-0] 及所占百分比
18.查詢各科成績前三名的記錄
19.查詢每門課程被選修的學(xué)生數(shù)
20.查詢出只選修兩門課程的學(xué)生學(xué)號和姓名
21.查詢男生国章、女生人數(shù)
22.查詢名字中含有「風(fēng)」字的學(xué)生信息
23.查詢同名同性學(xué)生名單具钥,并統(tǒng)計(jì)同名人數(shù)
24.查詢 1990 年出生的學(xué)生名單
25.查詢每門課程的平均成績,結(jié)果按平均成績降序排列液兽,平均成績相同時(shí)骂删,按課程編號升序排列
26.查詢平均成績大于等于 85 的所有學(xué)生的學(xué)號、姓名和平均成績
27.查詢課程名稱為「數(shù)學(xué)」四啰,且分?jǐn)?shù)低于 60 的學(xué)生姓名和分?jǐn)?shù)
28.查詢所有學(xué)生的課程及分?jǐn)?shù)情況(存在學(xué)生沒成績宁玫,沒選課的情況)
29.查詢?nèi)魏我婚T課程成績在 70 分以上的姓名、課程名稱和分?jǐn)?shù)
30.查詢不及格的課程
31.查詢課程編號為 01 且課程成績在 80 分以上的學(xué)生的學(xué)號和姓名
32.求每門課程的學(xué)生人數(shù)
33.假設(shè)成績不重復(fù)柑晒,查詢選修「張三」老師所授課程的學(xué)生中欧瘪,成績最高的學(xué)生信息及其成績
34.假設(shè)成績有重復(fù)的情況下,查詢選修「張三」老師所授課程的學(xué)生中匙赞,成績最高的學(xué)生信息及其成績
35.查詢不同課程成績相同的學(xué)生的學(xué)生編號佛掖、課程編號、學(xué)生成績
36.查詢每門功成績最好的前兩名
37.統(tǒng)計(jì)每門課程的學(xué)生選修人數(shù)(超過 5 人的課程才統(tǒng)計(jì))涌庭。
38.檢索至少選修兩門課程的學(xué)生學(xué)號
39.查詢選修了全部課程的學(xué)生信息
40.查詢各學(xué)生的年齡芥被,只按年份來算
41.按照出生日期來算,當(dāng)前月日 < 出生年月的月日則坐榆,年齡減一
42.查詢本周過生日的學(xué)生
43.查詢下周過生日的學(xué)生
44.查詢本月過生日的學(xué)生
45.查詢下月過生日的學(xué)生