sql練習(xí)

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------

-- Table structure for student

-- ----------------------------

DROP TABLE IF EXISTS `student`;

CREATE TABLE `student` (

? `Sid` varchar(6) NOT NULL DEFAULT '',

? `Sname` varchar(10) DEFAULT NULL,

? `Sage` datetime DEFAULT NULL,

? `Ssex` varchar(10) DEFAULT NULL,

? PRIMARY KEY (`Sid`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------

-- Table structure for teacher

-- ----------------------------

DROP TABLE IF EXISTS `teacher`;

CREATE TABLE `teacher` (

? `Tid` varchar(10) NOT NULL DEFAULT '',

? `Tname` varchar(10) DEFAULT NULL,

? PRIMARY KEY (`Tid`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------

-- Table structure for course

-- ----------------------------

DROP TABLE IF EXISTS `course`;

CREATE TABLE `course` (

? `Cid` varchar(10) NOT NULL DEFAULT '',

? `Tid` varchar(10) NOT NULL DEFAULT '',

? `Cname` varchar(10) DEFAULT NULL,

? PRIMARY KEY (`Cid`),

? CONSTRAINT `course_ibfk_1` FOREIGN KEY (`Tid`) REFERENCES `teacher` (`Tid`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------

-- Table structure for sc

-- ----------------------------

DROP TABLE IF EXISTS `sc`;

CREATE TABLE `sc` (

? `Sid` varchar(10) NOT NULL DEFAULT '',

? `Cid` varchar(10) NOT NULL DEFAULT '',

? `score` decimal(18,1) DEFAULT NULL,

? CONSTRAINT `sc_ibfk_1` FOREIGN KEY (`Sid`) REFERENCES `student` (`Sid`),

? CONSTRAINT `sc_ibfk_2` FOREIGN KEY (`Cid`) REFERENCES `course` (`Cid`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

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('08' , '王菊' , '1990-01-20' , '女');

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);

insert into Course values('01' , '語文' , '02');

insert into Course values('02' , '數(shù)學(xué)' , '01');

insert into Course values('03' , '英語' , '03');

insert into Teacher values('01' , '張三');

insert into Teacher values('02' , '李四');

insert into Teacher values('03' , '王五');

1. 查詢" 01 "課程比" 02 "課程成績高的學(xué)生的信息及課程分?jǐn)?shù)

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é)號爷抓,姓名及其平均成績

13. 按平均成績從高到低顯示所有學(xué)生的所有課程的成績以及平均成績

14. 查詢各科成績最高分、最低分和平均分诱告,以如下形式顯示:課程 ID恒削,課程 name羡藐,最高分揖曾,最低分落萎,平均分亥啦,及格率,中等率练链,優(yōu)良率翔脱,優(yōu)秀率(及格為>=60,中等為:70-80兑宇,優(yōu)良為:80-90碍侦,優(yōu)秀為:>=90)。

15. 按平均成績進(jìn)行排序隶糕,顯示總排名和各科排名,Score 重復(fù)時保留名次空缺

15.1 按平均成績進(jìn)行排序站玄,顯示總排名和各科排名枚驻,Score 重復(fù)時合并名次

17. 統(tǒng)計(jì)各科成績各分?jǐn)?shù)段人數(shù):課程編號,課程名稱株旷,[100-85]再登,[85-70],[70-60]晾剖,[60-0] 及所占百分比

18. 查詢各科成績前三名的記錄

20. 查詢出只選修兩門課程的學(xué)生學(xué)號和姓名

22. 查詢名字中含有「風(fēng)」字的學(xué)生信息

24. 查詢 1990 年出生的學(xué)生名單

33. 成績不重復(fù)锉矢,查詢選修「張三」老師所授課程的學(xué)生中,成績最高的學(xué)生信息及其成績

34. 成績有重復(fù)的情況下齿尽,查詢選修「張三」老師所授課程的學(xué)生中沽损,成績最高的學(xué)生信息及其成績

40. 查詢各學(xué)生的年齡,只按年份來算

41. 按照出生日期來算循头,當(dāng)前月日 < 出生年月的月日則绵估,年齡減一

42. 查詢本周過生日的學(xué)生

43. 查詢下周過生日的學(xué)生

44. 查詢本月過生日的學(xué)生

45. 查詢下月過生日的學(xué)生

46.查詢所有課程成績都大于80分的學(xué)生名字

47.查詢所有課程成績都大于80分的學(xué)生名字,不顯示重復(fù)名字卡骂。


查詢學(xué)生的最高成績国裳。

SELECT sid,score from sc group by sid ;

#1. 查詢" 01 "課程比" 02 "課程成績高的學(xué)生的信息及課程分?jǐn)?shù)

select s.* ,a.score as score_01,b.score as score_02 FROM

student s,

(SELECT Sid,score from sc WHERE sc.Cid = "01") a,

(SELECT Sid,score from sc WHERE sc.Cid = "02") b

where a.Sid = b.Sid and a.score> b.score and s.Sid = a.Sid;

SELECT a.*,b.score score1 from

(SELECT Sid,score from sc WHERE sc.Cid = "01") a,

(SELECT Sid,score from sc WHERE sc.Cid = "02") b

where a.sid = b.sid and a.score > b.score;

#2. 查詢平均成績大于等于60分的同學(xué)的學(xué)生編號和學(xué)生姓名和平均成績

SELECT sid,AVG(score) as avgg from sc GROUP BY sid? having AVG(score) >60;

SELECT Sname,sc.sid,AVG(score) as avgg from sc,student s WHERE sc.Sid = s.Sid GROUP BY sid? having AVG(score) >60;

#3. 查詢在 SC 表存在成績的學(xué)生信息

SELECT * from student where sid in(SELECT Sid from sc WHERE score is not null);

SELECT s.*,sc.score FROM student s,sc WHERE s.Sid = sc.sid and sc.score is not null group BY sc.sid;

#4. 查詢所有同學(xué)的學(xué)生編號、學(xué)生姓名全跨、選課總數(shù)缝左、所有課程的總成績(沒成績的顯示為 null )

這道題得用到left join或者right join,不能用where連接浓若,因?yàn)轭}目說了要求有顯示為null的渺杉,where是inner join,不會出現(xiàn)null七嫌,在這道題里會查不出第08號學(xué)生少办。

select? count(sid) as xuankezongshu, sum(score) as xuankezongfen from sc GROUP BY Sid;

select? s.*,count(sc.sid) as xuankezongshu, sum(score) as xuankezongshu from? student s, sc WHERE s.Sid = sc.sid GROUP BY sc.Sid;

select? s.*,count(sc.sid) as xuankezongshu, sum(score) as xuankezongshu from? student s LEFT JOIN sc on s.Sid = sc.sid GROUP BY sc.Sid;

4.1 查有成績的學(xué)生信息? ***************************

select s.*,a.xuankezongshu,a.xuankezongfen,a.score from student s,

(SELECT sid,score,count(sid) as xuankezongshu, sum(score) as xuankezongfen from? sc where score is not NULL GROUP BY sid) a

WHERE s.sid = a.sid

select s.sid, s.sname, count(*) as 選課總數(shù), sum(score) as 總成績,

? ? sum(case when cid = 01 then score else null end) as score_01,

? ? sum(case when cid = 02 then score else null end) as score_02,

? ? sum(case when cid = 03 then score else null end) as score_03

from student as s, sc

where s.sid = sc.sid

group by s.sid

5. 查詢「李」姓老師的數(shù)量

SELECT count(tid) from teacher t WHERE t.tname LIKE "李%";

6. 查詢學(xué)過「張三」老師授課的同學(xué)的信息

SELECT * from student WHERE sid in (SELECT sid FROM sc where cid in (SELECT cid from course WHERE tid in ( select tid from teacher t WHERE t.Tname = "張三" )));

select * from student where sid in (

? ? select sid from sc, course, teacher

? ? where sc.cid = course.cid

? ? and course.tid = teacher.tid

? ? and tname = '張三'

)

7. 查詢沒有學(xué)全所有課程的同學(xué)的信息

select * from student where sid in (select sid from sc group by sid having count(cid) < 3)

SELECT s.*,b.xuankeshu from student s,

(

select sid,count(*) as xuankeshu from sc group by sid HAVING xuankeshu <

(select count(*) coursecount from (SELECT count(cid) from sc group by cid) a)

) b

where s.sid = b.sid;

9. 查詢和" 01 "號的同學(xué)學(xué)習(xí)的課程完全相同的其他同學(xué)的信息

參考地址:https://blog.csdn.net/u010452388/article/details/80150985


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市诵原,隨后出現(xiàn)的幾起案子英妓,更是在濱河造成了極大的恐慌挽放,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蔓纠,死亡現(xiàn)場離奇詭異辑畦,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)腿倚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進(jìn)店門纯出,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人敷燎,你說我怎么就攤上這事暂筝。” “怎么了硬贯?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵焕襟,是天一觀的道長。 經(jīng)常有香客問我饭豹,道長鸵赖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任拄衰,我火速辦了婚禮它褪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘翘悉。我一直安慰自己茫打,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布镐确。 她就那樣靜靜地躺著包吝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪源葫。 梳的紋絲不亂的頭發(fā)上诗越,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天,我揣著相機(jī)與錄音息堂,去河邊找鬼嚷狞。 笑死,一個胖子當(dāng)著我的面吹牛荣堰,可吹牛的內(nèi)容都是我干的床未。 我是一名探鬼主播,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼振坚,長吁一口氣:“原來是場噩夢啊……” “哼薇搁!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起渡八,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤啃洋,失蹤者是張志新(化名)和其女友劉穎传货,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宏娄,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡问裕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了孵坚。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粮宛。...
    茶點(diǎn)故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖卖宠,靈堂內(nèi)的尸體忽然破棺而出巍杈,到底是詐尸還是另有隱情,我是刑警寧澤逗堵,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布秉氧,位于F島的核電站,受9級特大地震影響蜒秤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜亚斋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一作媚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧帅刊,春花似錦纸泡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至栏饮,卻和暖如春吧兔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背袍嬉。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工境蔼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人伺通。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓箍土,卻偏偏與公主長得像,于是被迫代替她去往敵國和親罐监。 傳聞我的和親對象是個殘疾皇子吴藻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,092評論 2 355

推薦閱讀更多精彩內(nèi)容