一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

SQL語句之Select

 L羅樂 2019-03-03

      前面一篇SQL語句復(fù)習(xí)的文章復(fù)習(xí)了本學(xué)期需要掌握的6條SQL語句中的5條,今天主要復(fù)習(xí)一下需要掌握的另一條SQL語句:Select語句。

        Select語句,稱為查詢語句,其作用是從一個(gè)或多個(gè)表中檢索數(shù)據(jù),其結(jié)果依然是一個(gè)表(關(guān)系)。由于這個(gè)語句涉及的子句較多,在我們現(xiàn)用教材上僅僅表示語法就書寫了12行,所以不建議一次性全把語法背下來,而是通過一些例子逐漸掌握各個(gè)子句的作用。為便于實(shí)驗(yàn),請(qǐng)?jiān)谀愕哪J(rèn)路徑下準(zhǔn)備如下三張表:

結(jié)構(gòu):學(xué)號(hào) C(5),姓名 C(6),性別 C(2),出生日期 D,班級(jí) C(14)

結(jié)構(gòu):課程號(hào) C(3),課程名 C(14),學(xué)分 N(3,1),任課教師 C(6)

結(jié)構(gòu):學(xué)號(hào) C(5),課程號(hào) C(3),成績(jī) N(5,1)

既然Select語句執(zhí)行的結(jié)果也是一張表,那么它的語句中就應(yīng)該指明產(chǎn)生這張表的字段和記錄。Select關(guān)鍵詞后指明所需要的字段,F(xiàn)rom關(guān)鍵詞指明數(shù)據(jù)的來源。

例1:找出所有學(xué)生的姓名及他們各自所在的班級(jí)。

語句:select 姓名,班級(jí) from 學(xué)生

注:字段的順序任意,各字段間用逗號(hào)隔開。此語句會(huì)顯示“學(xué)生”表中所有學(xué)生的姓名及班級(jí)。

例2:顯示學(xué)生表中所有內(nèi)容。

語句:Select * from 學(xué)生

注:如果需要顯示一張表中的所有字段,并且字段的顯示順序與表中原順序一致,則不需要將字段名像例1那樣全部羅列一遍,而是用一個(gè)星號(hào)(*)代表所有字段

前面兩個(gè)例子主要是說明字段的選取和書寫方式,這是從一個(gè)表的列(字段)方面在考慮,對(duì)行(記錄)方面作出限制則使用where關(guān)鍵字,再加上限制條件即可。

例3:顯示學(xué)生表中所有男生的姓名和班級(jí)。

語句:select 姓名,班級(jí) from 學(xué)生 where 性別='男'

在一張表中不能出現(xiàn)完全相同的記錄,但當(dāng)選擇一個(gè)表的部分字段時(shí)可能出現(xiàn)完全相同的記錄的,想去除重復(fù)的記錄,可在Select后加上Distinct。

例4:顯示學(xué)生表中所有的班級(jí)名。

Select distinct 班級(jí) from 學(xué)生

注:學(xué)生表中有6條記錄,但他們實(shí)際來自于3個(gè)班,上例中若不使用distinct則顯示6行結(jié)果(相同班級(jí)可能顯示多次),加上distinct之后則只顯示3行結(jié)果,符合實(shí)際需要。

將查詢結(jié)果進(jìn)行排序,則需要用到order by子句。語法:order by 字段1 ASC|DESC,字段2 ASC|DESC...。ASC表示升序排列,DESC表示降序排列,默認(rèn)是升序。只有當(dāng)?shù)谝粋€(gè)字段值相同時(shí),才考慮第二個(gè)排序字段...。

例5:查詢“成績(jī)”表中所有“D01”課程的成績(jī),并按升序顯示查詢結(jié)果。

語句:select * from 成績(jī) where 課程號(hào)='D01' order by 成績(jī)

有時(shí)候可能需要將一個(gè)表中的數(shù)據(jù)進(jìn)行分組計(jì)算,例如:如果想知道每門課的最高分怎么辦?這時(shí)候不是首先看哪個(gè)值最大,而是應(yīng)該將所有成績(jī)按課程號(hào)分成不同的組,只有相同課程號(hào)的成績(jī)相互比較才有意義。Select語句中使用“group by 字段名”,按指定的字段名分組計(jì)算。

例6:查詢各課程號(hào)的最高分。

語句:Select 課程號(hào),max(成績(jī)) 最高分 from  成績(jī) group by 課程號(hào)

注:max(成績(jī)) 最高分,最高分是作為max(成績(jī))的別名,另一種寫法是:max(成績(jī))  as 最高分。

需要注意的是,如果想篩選通過分組計(jì)算的結(jié)果,不能使用where子名,而是使用Having子句??梢赃@樣理解:where是對(duì)表的原始記錄做限定,Having是對(duì)分組的計(jì)算結(jié)果進(jìn)行限定,Having不能單獨(dú)使用,只能用在Group by之后。

例7:查詢除“D03“以外的所有課程的最高分,并顯示最高分超過80分的課程。

語句:Select 課程號(hào),max(成績(jī)) 最高分 from  成績(jī) group by 課程號(hào) having 最高分>80 where 課程號(hào)<>'D03'

注:這里有兩個(gè)限定:課程號(hào)不是D03,也就是對(duì)原始記錄作出篩選,where子句將不是D03的記錄選出來進(jìn)行分組;另一個(gè)限定條件是最高分大于80,這個(gè)條件在原表中是無法直接表達(dá)的,只有分組后用Max函數(shù)才能計(jì)算得到,對(duì)分組計(jì)算結(jié)果篩選,這就要用Having子句了。

前面的例子的數(shù)據(jù)來源都來自于一張表,若數(shù)據(jù)來源于多張表,則需要做表的連接查詢。連接的方法可以是where子句簡(jiǎn)單連接,也可以是join子句的超連接。超連接中用得最多的內(nèi)連接,它跟where子句達(dá)到的效果是一致的,所以大部分時(shí)間你可以自由選擇這兩種方法。當(dāng)一個(gè)字段名在多個(gè)表中出現(xiàn)時(shí),需要指明字段所在的表:表名 .字段名。

例8:查詢各個(gè)學(xué)生的姓名、成績(jī)。

語句1:select 姓名,成績(jī) from 學(xué)生,成績(jī) where 學(xué)生.學(xué)號(hào)=成績(jī).學(xué)號(hào)

語句2:select 姓名,成績(jī) from 學(xué)生 join 成績(jī) on 學(xué)生.學(xué)號(hào)=成績(jī).學(xué)號(hào)

例9:查詢各個(gè)學(xué)生所修課程的課程名、成績(jī)

語句1:select 姓名,課程名,成績(jī) from 學(xué)生,成績(jī),課程 where 學(xué)生.學(xué)號(hào)=成績(jī).學(xué)號(hào) and 成績(jī).課程號(hào)=課程.課程號(hào)

語句2:select 姓名,課程名,成績(jī) from 學(xué)生 join 成績(jī)  join 課程 on 成績(jī).課程號(hào)=課程.課程號(hào) on 學(xué)生.學(xué)號(hào)=成績(jī).學(xué)號(hào)

如果一個(gè)查詢的條件需要另一個(gè)查詢?nèi)カ@取,則一個(gè)查詢中需要包含另一個(gè)查詢語句,稱為嵌套查詢。

例10:查詢“代非”所在班的全體學(xué)生信息。

語句:select * from 學(xué)生 where 班級(jí)=(select 班級(jí) from 學(xué)生 where 姓名='代非')

注:括號(hào)內(nèi)的select語句就是一個(gè)子查詢,它的作用是找出“代非”所在班級(jí)的班級(jí)名。

例11:查詢成績(jī)表中女生的成績(jī)信息。

語句1:select 成績(jī).學(xué)號(hào),課程號(hào),成績(jī) from 成績(jī) where 學(xué)號(hào) in (select 學(xué)號(hào) from 學(xué)生 where 性別='女')

語句2:select * from 成績(jī) where 學(xué)號(hào) in (select 學(xué)號(hào) from 學(xué)生 where 性別='女')

注:這里語句2使用了子查詢來找出所有的女生的學(xué)號(hào),然后再在成績(jī)表中找出這些學(xué)號(hào)對(duì)應(yīng)的成績(jī)。仔細(xì)觀察例10和例11兩個(gè)子查詢的區(qū)別。例10的子查詢結(jié)果只有一個(gè)值這里用了“=”號(hào);例11的子查詢的結(jié)果可能是多個(gè)值,這里用了in運(yùn)算符。有興趣的同學(xué)還可以去查查什么時(shí)候用exist。

最后說一說查詢的去向,默認(rèn)情況下都是并查詢結(jié)果以瀏覽窗口的形式顯示出來。也可以自定義查詢?nèi)ハ?。常用的有?/span>

into table 表名   將查詢結(jié)果存入“表名”所指的表中(自動(dòng)創(chuàng)建表,不需要預(yù)先創(chuàng)建,同名的表將被覆蓋)。

into cursor 臨時(shí)表名  將查詢結(jié)果存到內(nèi)存中的臨時(shí)表中

to file 文件名  將查詢結(jié)果存到文本文件中

這里并沒有包含Select語句的所有用法,可在瀏覽完本文后再閱讀一下教材。

公眾號(hào):CDUT-Computer

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    欧美成人黄色一区二区三区| 欧美一区二区三区喷汁尤物| 好吊妞视频免费在线观看| 亚洲国产四季欧美一区| 欧美日韩在线第一页日韩| 国产精品一区二区视频成人| 亚洲国产精品久久琪琪| 国产精品涩涩成人一区二区三区 | 日本高清加勒比免费在线| 久热香蕉精品视频在线播放| 好吊视频有精品永久免费| 国产欧美日产中文一区| 日韩熟妇人妻一区二区三区| 国产一区二区熟女精品免费| 欧美视频在线观看一区| 国产精品欧美一区两区| 国产熟女一区二区不卡| 国产一区二区三区丝袜不卡| 亚洲黄片在线免费小视频| 国产目拍亚洲精品区一区 | 国产午夜免费在线视频| 国产精品免费无遮挡不卡视频| 激情五月天免费在线观看| 欧洲日本亚洲一区二区| 国产成人在线一区二区三区 | 久久永久免费一区二区| 日本高清一道一二三区四五区| 国产在线一区二区三区不卡 | 欧美日韩国产自拍亚洲| 国产精品欧美一级免费| 麻豆视频传媒入口在线看| 国产精品尹人香蕉综合网| 五月婷婷欧美中文字幕| 老熟女露脸一二三四区| 日韩无套内射免费精品| 日韩av亚洲一区二区三区| 国产av天堂一区二区三区粉嫩 | 免费在线成人午夜视频| 老司机精品国产在线视频 | 99久久精品视频一区二区| 福利一区二区视频在线|