SQL經(jīng)典練習題(openGauss數(shù)據(jù)庫)上

目錄

目錄

引言:

一粪摘、 初始化4張基礎表

1瀑晒、數(shù)據(jù)表介紹

2、初始化(創(chuàng)建表并插入測試數(shù)據(jù))

二徘意、 SQL習題

1苔悦、查詢" 01 "課程比" 02 "課程成績高的學生的信息及課程分數(shù)

2、查詢同時存在" 01 "課程和" 02 "課程的情況

3椎咧、查詢存在" 01 "課程但可能不存在" 02 "課程的情況(不存在時顯示為 null )

4玖详、查詢不存在" 01 "課程但存在" 02 "課程的情況

5、查詢平均成績大于等于 60 分的同學的學生編號和學生姓名和平均成績

6、查詢在 SC 表存在成績的學生信息

7蟋座、查詢所有同學的學生編號拗踢、學生姓名、選課總數(shù)巢墅、所有課程的成績總和

8、查有成績的學生信息(同問題6)

9飒硅、查詢「李」姓老師的數(shù)量

10砂缩、查詢學過「張老師」授課的同學的信息

11三娩、查詢沒有學全所有課程的同學的信息

12庵芭、查詢至少有一門課與學號為" 01 "的同學所學相同的同學的信息

13、查詢和" 01 "號的同學學習的課程完全相同的其他同學的信息

14雀监、查詢沒學過"張老師"講授的任一門課程的學生姓名

15、查詢兩門及其以上不及格(小于60分)課程的同學的學號会前,姓名及其平均成績

16好乐、檢索" 01 "課程分數(shù)小于 60,按分數(shù)降序排列的學生信息 13

17蔚万、按平均成績從高到低顯示所有學生的所有課程的成績以及平均成績

18、查詢各科成績最高分临庇、最低分和平均分

19反璃、按各科成績進行排序,并顯示排名淮蜈, Score 重復時保留名次空缺

20、查詢學生的總成績已卷,并進行排名梧田,總分重復時不保留名次空缺

三侧蘸、 實驗小結(jié)(FAQ):

1裁眯、關(guān)鍵字“Tid”

2、數(shù)據(jù)(日期)類型“datetime”

3讳癌、round() 函數(shù)使用

4、group by 子句

5析桥、HAVING子句

6、EXISTS 、 NOT EXISTS

7泡仗、IN 、NOT IN

8娩怎、比較操作符

9搔课、分支語句

10、窗口函數(shù)rank(expression)和row_number(expression)


引言:

SQL 對于現(xiàn)在的互聯(lián)網(wǎng)公司生產(chǎn)研發(fā)等崗位幾乎是一個必備技能爬泥,你可以把 SQL 當做是一個工具,利用它可以幫助你完成相應的工作崩瓤,創(chuàng)造價值袍啡。當然啦却桶, 學習sql 也是有規(guī)可循的

openGauss數(shù)據(jù)庫是國產(chǎn)數(shù)據(jù)庫的佼佼者之一境输,其支持的SQL標準默認包含SQL2、SQL3和SQL4的主要特性颖系。如何在openGauss數(shù)據(jù)庫中使用SQL語句? 接下來嘁扼,我們將準備一些SQL經(jīng)典練習題進行實踐與測試信粮。

本次練習題將分為上下兩部分。

openGauss基礎涉及到的常用“數(shù)據(jù)類型”和“基礎SQL語法”趁啸,可參見前面的文章《openGauss數(shù)據(jù)庫之SQL介紹》 或者官方文檔《開發(fā)者指南》 。

初始化4張基礎表

1莲绰、數(shù)據(jù)表介紹

--學生表:Student(SId,Sname,Sage,Ssex)

--SId 學生編號,Sname 學生姓名,Sage 出生年月,Ssex 學生性別

--課程表:Course(CId,Cname,TeId)

--CId 課程編號,Cname 課程名稱,TId 教師編號

--教師表Teacher(TeId,Tname)

--TId 教師編號,Tname 教師姓名

--成績表:SC(SId,CId,score)

--SId 學生編號,CId 課程編號,score 分數(shù)

2欺旧、初始化(創(chuàng)建表并插入測試數(shù)據(jù))

學生表Student

create table Student(SId varchar(10),Sname varchar(10),Sbirthday date,Ssex varchar(10));

insert into Student values('01' , '趙雷' , date '1990-01-01' , '男');

insert into Student values('02' , '錢電' , date '1990-12-21' , '男');

insert into Student values('03' , '孫風' , date '1990-12-20' , '男');

insert into Student values('04' , '李云' , date '1990-12-06' , '男');

insert into Student values('05' , '周梅' , date '1991-12-01' , '女');

insert into Student values('06' , '吳蘭' , date '1992-01-01' , '女');

insert into Student values('07' , '鄭竹' , date '1989-01-01' , '女');

insert into Student values('09' , '張三' , date '2017-12-20' , '女');

insert into Student values('10' , '李四' , date '2017-12-25' , '女');

insert into Student values('11' , '李四' , date '2012-06-06' , '女');

insert into Student values('12' , '趙六' , date '2013-06-13' , '女');

insert into Student values('13' , '孫七' , date '2014-06-01' , '女');

課程表 Course

create table Course(CId varchar(10),Cname varchar(10),TeId varchar(10));

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

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

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

教師表 Teacher

create table Teacher(Teid 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);

全表顯示:

學生表Student

課程表 Course

教師表 Teacher

成績表 SC

SQL習題

1蛤签、查詢" 01 "課程比" 02 "課程成績高的學生的信息及課程分數(shù)

以學生id為主鍵辞友,查找課程01 比02分數(shù)高的結(jié)果信息作為主表震肮,然后與學生表關(guān)聯(lián)称龙。

2、查詢同時存在" 01 "課程和" 02 "課程的情況

以學生id為主鍵

3戳晌、查詢存在" 01 "課程但可能不存在" 02 "課程的情況(不存在時顯示為 null )

以01課程為主表

4、查詢不存在" 01 "課程但存在" 02 "課程的情況

5沦偎、查詢平均成績大于等于 60 分的同學的學生編號和學生姓名和平均成績

根據(jù)學生ID把成績分組疫向,對分組中的score求平均值咳蔚,最后在選取結(jié)果中AVG大于60的即可搔驼。然后關(guān)聯(lián)學生信息表

6谈火、查詢在 SC 表存在成績的學生信息

7、查詢所有同學的學生編號糯耍、學生姓名、選課總數(shù)囊嘉、所有課程的成績總和

8温技、查有成績的學生信息(同問題6)

EXISTS的參數(shù)是一個任意的SELECT語句扭粱,或者說子查詢舵鳞。系統(tǒng)對子查詢進行運算以判斷它是否返回行。如果它至少返回一行焊刹,則EXISTS結(jié)果就為”真”系任;如果子查詢沒有返回任何行虐块, EXISTS的結(jié)果是”假”俩滥。這個子查詢通常只是運行到能判斷它是否可以生成至少一行為止,而不是等到全部結(jié)束贺奠。

9、查詢「李」姓老師的數(shù)量

10儡率、查詢學過「張老師」授課的同學的信息

11挂据、查詢沒有學全所有課程的同學的信息

12儿普、查詢至少有一門課與學號為" 01 "的同學所學相同的同學的信息

13崎逃、查詢和" 01 "號的同學學習的課程完全相同的其他同學的信息

查詢所選課程數(shù)量和01學生一樣的學生,去掉所選課程中選了01學生未選課程的人

14眉孩、查詢沒學過"張老師"講授的任一門課程的學生姓名

另一種解法也可以將教師表、課程表浪汪、成績表先關(guān)聯(lián)巴柿,然后再學生表中找到對應的學生信息

15、查詢兩門及其以上不及格(小于60分)課程的同學的學號死遭,姓名及其平均成績

16、檢索" 01 "課程分數(shù)小于 60呀潭,按分數(shù)降序排列的學生信息

17钉迷、按平均成績從高到低顯示所有學生的所有課程的成績以及平均成績

18至非、查詢各科成績最高分糠聪、最低分和平均分

/*以如下形式顯示:課程 ID睡蟋,課程 name,最高分枷颊,最低分,平均分夭苗,及格率,中等率隔缀,優(yōu)良率题造,優(yōu)秀率

及格為>=60,中等為:70-80界赔,優(yōu)良為:80-90,優(yōu)秀為:>=90

要求輸出課程號和選修人數(shù)牵触,查詢結(jié)果按人數(shù)降序排列淮悼,若人數(shù)相同,按課程號升序排列*/

openGauss數(shù)據(jù)庫支持中文名稱(字段名袜腥、表名), 但不建議钉汗,當然了根據(jù)具體場景決定羹令。

19、按各科成績進行排序福侈,并顯示排名, Score 重復時保留名次空缺

20卢未、查詢學生的總成績肪凛,并進行排名,總分重復時不保留名次空缺

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末显拜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子爹袁,更是在濱河造成了極大的恐慌远荠,老刑警劉巖失息,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件譬淳,死亡現(xiàn)場離奇詭異档址,居然都是意外死亡,警方通過查閱死者的電腦和手機邻梆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浦妄,“玉大人尼摹,你說我怎么就攤上這事〖谅Γ” “怎么了?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵阅懦,是天一觀的道長和二。 經(jīng)常有香客問我,道長惯吕,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任怕午,我火速辦了婚禮废登,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘诗轻。我一直安慰自己,他們只是感情好扳炬,可當我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布吏颖。 她就那樣靜靜地躺著,像睡著了一般恨樟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上劝术,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天缩多,我揣著相機與錄音,去河邊找鬼养晋。 笑死,一個胖子當著我的面吹牛绳泉,可吹牛的內(nèi)容都是我干的逊抡。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼零酪,長吁一口氣:“原來是場噩夢啊……” “哼拇勃!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起孝凌,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤方咆,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后瓣赂,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡片拍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年钩述,在試婚紗的時候發(fā)現(xiàn)自己被綠了穆碎。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡职恳,死狀恐怖所禀,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情放钦,我是刑警寧澤,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布操禀,位于F島的核電站褂策,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏颓屑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一揪惦、第九天 我趴在偏房一處隱蔽的房頂上張望遍搞。 院中可真熱鬧,春花似錦器腋、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至措左,卻和暖如春依痊,著一層夾襖步出監(jiān)牢的瞬間媳荒,已是汗流浹背抗悍。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工驹饺, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人缴渊。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像衔沼,于是被迫代替她去往敵國和親蝌借。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,941評論 2 355

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