sql查詢語句示例


今天沒事又專門學習了一下sql查詢語句,個人感覺太重要了,於是就找了網上的一個示例自己練了起來,感覺學到了很多,下面跟大家分享一下sql查詢語句的示例操作。

首先,我建了5張表,分別如下:

(a)學生表 STUDENTS:

(b)成績表 ENROLLS:

(c)課程表 COURSES:

(d)教師表 TEACHERS:

(e)任課表 TEACHING:

 

以下是一些查詢的sql語句,由簡單到復雜

 

表操作

1、 根據 STUDENTS 表,建立一個只包含學號、姓名、年齡的女學生表。

 

視圖操作

2、 建立一個只包括教師號、姓名和年齡的視圖 FACULTY  ( 在視圖定義中不能包含 ORDER BY 子句 )

3、從學生表、課程表和選課表中產生一個視圖 GRADE_TABLE 它包括學生姓名、課程名和成績

 

索引操作

4、在學生表中按學號建立索引

5、刪除索引

 

 

單表操作

 6、找出 3 個學分的課程號和課程名

7、找出年齡在 20  23 歲之間的學生的學號、姓名和年齡,並按年齡升序排序。 (ASC (升序)或 DESC (降序)聲明排序的方式,缺省為升序。)

8、找出年齡小於 23 歲、籍貫是湖南或湖北的學生的姓名和性別。(條件比較運算符=、<和邏輯運算符 AND (與),此外還可以使用的運算符有:>(大於)、>=(大於等於)、<=(小於等於)、<>(不等於)、 NOT (非)、 OR (或)等。

謂詞 LIKE 只能與字符串聯用,常常是 “ <列名>   LIKE  pattern” 的格式。特殊字符 “_”  “%” 作為通配符。

謂詞 IN 表示指定的屬性應與后面的集合(括號中的值集或某個查詢子句的結果)中的某個值相匹配,實際上是一系列的 OR (或)的縮寫。謂詞 NOT IN 表示指定的屬性不與后面的集合中的某個值相匹配。

謂詞 BETWEEN  “ 包含於 … 之中 ” 的意思。)

 

多表操作

9、找出成績為 95 分的學生的姓名。(子查詢)

或也可使用非子查詢:

10、找出成績在 90 分以上的學生的姓名

注意:這里要寫in,不能寫=或>

或用any關鍵字可寫=:

 

 或也可使用非子查詢:

 11、查詢全部學生的學生名和所學課程名及成績。(連接查詢)

12、找出籍貫為山西或河北,成績為 90 分以上的學生的姓名、籍貫和成績。(當構造多表連接查詢命令時,必須遵循兩條規則。第一,連接條件數正好比表數少 1 (若有三個表,就有兩個連接條件 ) ;第二,若一個表中的主關鍵字是由多個列組成,則對此主關鍵字中的每一個列都要有一個連接條件(也有少數例外情況))

注意:“河北”和“山西”中間要用“,”隔開,如果用“or”則查詢結果不正確

 或者也可以用“or”來寫:

13、 查出課程成績在 80 分以上的女學生的姓名、課程名和成績。( FROM 子句中的子查詢)

或者直接查詢:

 

表達式與函數的使用

14、查詢各課程的學時數。一個學分表示16個課時(算術表達式由算術運算符+、-、 * 、/與列名或數值常量所組成。)

 

15、 找出教師的最小年齡。(內部函數: SQL 標准中只使用 COUNT  SUM  AVG  MAX  MIN 函數,稱之為聚集函數(Set Function )。 COUNT 函數的結果是該列統計值的總數目, SUM 函數求該列統計值之和, AVG 函數求該列統計值之平均值,MAX 函數求該列最大值, MIN 函數求該列最小值。)

 

16、統計年齡小於等於 22 歲的學生人數。(統計)

17、 找出學生的平均成績和所學課程門數

18、找出年齡超過平均年齡的學生姓名

19、找出各課程的平均成績,按課程號分組,且只選擇學生超過 3 人的課程的成績。( GROUP BY  HAVING

        GROUP BY 子句把一個表按某一指定列(或一些列)上的值相等的原則分組,然后再對每組數據進行規定的操作。

        GROUP BY 子句總是跟在 WHERE 子句后面,當 WHERE 子句缺省時,它跟在 FROM 子句后面。

        HAVING 子句常用於在計算出聚集之后對行的查詢進行控制。)

 20、 查詢沒有選任何課程的學生的學號和姓名。(當一個子查詢涉及到一個來自外部查詢的列時,稱為相關子查詢( Correlated Subquery) 。相關子查詢要用到存在測試謂詞 EXISTS  NOT EXISTS ,以及 ALL  ANY  SOME )等。)

注意:子語句中的from后面不能寫上students和enrolls兩張表,只能寫enrolls這一張表,否則查詢的結果不正確;

 21、 查詢哪些課程只有男生選讀

或者也可以這樣寫:

22、要求給出一張學生、籍貫列表,該表中的學生的籍貫省份,也是其他一些學生的籍貫省份。

 

如果只問是哪個省也可以這樣寫:

23、找出選修了全部課程的學生的姓名

有些同學以上sql語句可能看不懂,下面是鏈接,點開有詳細解釋,對理解有幫助https://zhidao.baidu.com/question/258791372.htmlqbl=relate_question_4&word=%CA%FD%BE%DD%BF%E2%B5%C4not%20exist

 

今天先就寫這么多,后面有遇到其他的再補充,未完待續。。。

 

 

 

---恢復內容結束---


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM