數據庫的查詢筆記
數據庫的查詢筆記
1、 在字符查詢語句中:WHERE 語句中的篩選條件應該用LIKE,NOT LIKE 來表達是否匹配。如下所示;
SELECT
S.*
FROM
tb_Major AS S
WHERE
S.ShortName LIKE ‘公共事業管理% ‘;
一定不能表示成
SELECT
S.*
FROM
tb_Major AS S
WHERE
S.ShortName = ‘公共事業管理% ‘;
2、 用戶查詢的字符串本身就含有通配符%或者-時,需要使用ESCAPE’<換碼字符>’短語對通配符進行轉義。
如下代碼例子所示:
SELECT
Cno,Ccredit
FROM
Course
WHERE Cname LIKE ‘DB\_Design’ ESCAPE’\’;
3、為了進一步方便用戶,SQL 語言提供了許多的聚集函數,主要有COUNT(*)、SUM、AVG、MAX、MIN 。在使用這些聚集函數時經常會出現以下情況
正確表達如下:
SELECT
S.*
,MIN(S.BirthDate)
FROM
vw_Student AS S
GROUP BY
S.BirthDate
4、在SQL 語言中WHERE子句是不能用聚集函數作為條件表達式的,聚集函數只能作用於SELECT子句和GROUP BY 的HAVING 語句。
例:錯誤表達方式
正確表達如下
5、ISNULL 函數,判斷是否為空值
例:
語句執行後,若先修課程為空值,則輸出結果‘無‘的數據類型與PreCourseNo 數據類型一致。
故因此可能會出現輸出結果數據被截斷或者出現空格情況,因此該函數在使用時常常連同著轉變函數CONVERT 函數一起使用來轉變輸出結果的數據類型。
6、字符串拼接時若拼接的某一部分的取值為NULL,則拼接後的輸出結果只會是NULL
拼接的前部分將被覆蓋丟失。
例、C.No+C.Name+C.PrecourseNo
當C.PrecourseNo 取NULL時,拼接的最後輸出結果為NULL。
修改後:C.No+C.Name+ RTRIM (ISNULL(C.PrecourseNo ,’’) 則避免了上述問題
7、SQL語言中IF不能用於語句內部,因為它控制的是整個流程,即該段語句是否執行。不能用來表達對語句中某一列的各種取值情況問題。
例
錯誤語句段:
SELECT
S.Name
,S.No
,IF….
正確語句段
SELECT
S.Name
,S.No
,CASE
8、查詢數據庫中所有表的各有多少條記錄的代碼片段如下所示:(以查詢數據庫EduBase中所有表各有多少條記錄為例)
執行結果如下:
數據庫的查詢筆記