今天沒事又專門學習了一下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
今天先就寫這么多,后面有遇到其他的再補充,未完待續。。。
---恢復內容結束---