SQL進修筆記三 select語句的各類情勢小結。本站提示廣大學習愛好者:(SQL進修筆記三 select語句的各類情勢小結)文章只能為提供參考,不一定能成為您想要的結果。以下是SQL進修筆記三 select語句的各類情勢小結正文
Select * from T_Employee
select FName,FAge from T_Employee
select FName from T_Employee where FSalary < 5000
select FName as 姓名,FAge as 年紀,FSalary as 月薪from T_Employee where FSalary < 5000
select FName as 姓名,FAge as 年紀,FSalary as 月薪,getdate() as 以後時光from T_Employee
3.3.1 SELECT敕令的格局與根本應用
Ø數據查詢是數據庫中最多見的操作。
ØSQL說話供給SELECT語句,經由過程查詢操作可獲得所需的信息。
ØSELECT語句的普通格局為:
SELECT〈列名〉[{,〈列名〉}]
FROM〈表名或視圖名〉[{,〈表名或視圖名〉}]
[WHERE〈檢索前提〉]
[GROUP BY <列名1>[HAVING <前提表達式>]]
[ORDER BY <列名2>[ASC|DESC]];
ØØ查詢的成果是還是一個表。
ØSELECT語句的履行進程是:
Ø依據WHERE子句的檢索前提,從FROM子句指定的根本表或視圖當選取知足前提的元組,再依照SELECT子句中指定的列,投影獲得成果表。
Ø假如有GROUP子句,則將查詢成果依照<列名1>雷同的值停止分組。
Ø假如GROUP子句後有HAVING短語,則只輸入知足HAVING前提的元組。
Ø假如有ORDER子句,查詢成果還要依照<列名2>的值停止排序。
Ø例3.21 查詢全部先生的學號、姓名和年紀。
SELECT SNO, SN, AGE FROM S
Ø例3.22 查詢先生的全體信息。
SELECT * FROM S
Ø用‘ * '表現S表的全體列名,而不用一一列出。
Ø例3.23 查詢選修了課程的先生號。
SELECT DISTINCT SNO FROM SC
Ø查詢成果中的反復行被去失落
ØØ上述查詢均為不應用WHERE子句的無前提查詢,也稱作投影查詢。
Ø別的,應用投影查詢可掌握列名的次序,並可經由過程指定別號轉變查詢成果的列題目的名字。
例3.24 查詢全部先生的姓名、學號和年紀。
SELECT SNAME NAME, SNO, AGE FROM S
Ø個中,NAME為SNAME的別號
3.3.2 前提查詢
Ø當要在表中找出知足某些前提的行時,則需應用WHERE子句指定查詢前提。
ØWHERE子句中,前提平日經由過程三部門來描寫:
1. 列名;
2. 比擬運算符;
3. 列名、常數。
3.3.2.1 比擬年夜小
例3.25 查詢選修課程號為‘C1'的先生的學號和成就。
SELECT SNO,SCORE FROM SC WHERE CNO='C1'Ø例3.26 查詢成就高於85分的先生的學號、課程號和成就。
SELECT SNO,CNO,SCORE FROM SC WHERE SCORE>85
Ø3.3.2.2 多重前提查詢
Ø當WHERE子句須要指定一個以上的查詢前提時,則須要應用邏輯運算符AND、OR和NOT將其貫穿連接成復合的邏輯表達式。
Ø其優先級由高到低為:NOT、AND、OR,用戶可使用括號轉變優先級。
Ø例3.27 查詢選修C1或C2且分數年夜於等於85分先生的的學號、課程號和成就。
SELECT SNO,CNO,SCORE
FROM SC
WHERE(CNO='C1' OR CNO='C2') AND SCORE>=85
3.3.2.3 肯定規模
例3.28 查詢工資在1000至1500之間的教員的教員號、姓名及職稱。
SELECT TNO,TN,PROF
FROM T
WHERE SAL BETWEEN 1000 AND 1500
Ø等價於
SELECT TNO,TN,PROF
FROM T
WHERE SAL>=1000 AND SAL<=1500
Ø例3.29 查詢工資不在1000至1500之間的教員的教員號、姓名及職稱。
SELECT TNO,TN,PROF
FROM TWHERE SAL NOT BETWEEN 1000 AND 1500
3.2.2.4 肯定聚集
Ø應用“IN”操作可以查詢屬性值屬於指定聚集的元組。
例3.30 查詢選修C1或C2的先生的學號、課程號和成就。
SELECT SNO, CNO, SCORE
FROM SC
WHERE CNO IN(‘C1', ‘C2')
Ø此語句也能夠應用邏輯運算符“OR”完成。
SELECT SNO, CNO, SCORE
FROM SC
WHERE CNO=‘C1' OR CNO= ‘C2'Ø應用“NOT IN”可以查詢指定聚集外的元組。
例3.31 查詢沒有選修C1,也沒有選修C2的先生的學號、課程號和成就。
SELECT SNO, CNO, SCORE
FROM SC
WHERE CNO NOT IN(‘C1', ‘C2')
Ø等價於:
SELECT SNO, CNO, SCORE
FROM SC
WHERE CNO!=‘C1' AND CNO!= ‘C2'Ø
3.3.2.5 部門婚配查詢
Ø上例均屬於完整婚配查詢,當不曉得完整准確的値時,用戶還可使用LIKE或NOT LIKE停止部門婚配查詢(也稱隱約查詢)。
ØLIKE界說的普通格局為:
<屬性名> LIKE <字符串常量>
Ø屬性名必需為字符型,字符串常量的字符可以包括以下兩個特別符號:
Ø%:表現隨意率性知長度的字符串;
Ø_:表現隨意率性單個字符。
例3.32 查詢一切姓張的教員的教員號和姓名。
SELECT TNO, TN
FROM T
WHERE TN LIKE ‘張%'
例3.33 查詢姓名中第二個漢字是“力”的教員號和姓名。
SELECT TNO, TN
FROM T
WHERE TN LIKE ‘_ _力%'Ø注:一個漢字占兩個字符。
3.3.2.6 空值查詢
Ø某個字段沒有值稱之為具有空值(NULL)。
Ø平日沒無為一個列輸出值時,該列的值就是空值。
Ø空值分歧於零和空格,它不占任何存儲空間。
Ø例如,某些先生選課後沒有加入測驗,有選課記載,但沒有測驗成就,測驗成就為空值,這與加入測驗,成就為零分的分歧。
例3.34 查詢沒有測驗成就的先生的學號和響應的課程號。
SELECT SNO, CNO
FROM SC
WHERE SCORE IS NULL
Ø留意:這裡的空值前提為IS NULL,不克不及寫成SCORE=NULL。