SQL操作語句中的注意點

一 查詢語句

1 distinct關鍵字消除重複行

當查詢的結果數據中出現重複數據時,在查詢條件中加上distinct關鍵字消除重複行;
如:select distinct Sno from SC;

2 like匹配的通配符%和_

% :代表任意長度(包括0)的字符串,例如:like'a%b',表示以a開頭,以b結尾的任意長度的字符串;
_ :代表任意單個字符,注意數據庫的字符集爲ASCII時一個漢字需要兩個_,當字符集爲GBK時只需要一個_,例如:like'歐陽__';
注:當要查詢的字符串本身就含有通配符%或_,這時就要用escape<'換碼字符'>短語,對通配符進行轉義了,例如:select  Cno,Ccredit from Course where Cname
like 'DB\_Design' escape '\';   escape'\'表示“\”爲換行字符,這樣匹配串中緊跟在“\”後面的字符“_”不再具有通配符的含義,轉義爲普通的“_”字符

3  涉及空值的查詢

當查詢某個字段值爲空的條件下,字段與字段值之間要用"IS",不能用"="代替,例如:  select   Sno,Cno from SC where Grade IS NULL;

4  有關升序降序

如:select * from Student order by Sdept, Sage desc; 查詢結果按所在系的系號(Sdept)升序排列,同一系中的學生按年齡降序排列

5  關於聚集函數的一些注意

在聚集函數(如:count() sum() avg() max() min()等)遇到空值時,都跳過空值而只處理非空值。注意:where字句中是不能用聚集函數作爲條件表達式的

6   group by分組條件中的having短語指定篩選條件

如果group by分組後,還要要求按一定的條件對這些組進行篩選,最終只輸出滿足指定條件的組,可以使用having短語指定篩選條件;
如:select Sno from SC group by Sno having count(*) > 3;       這裏先用group by字句按Sno進行分組,然後再用聚集函數count 對每一組計數,having短語給出了選擇組的條件,只有滿足條件的組(即元組個數>3)纔會被選出來
注意:where字句作用於基本表或視圖,從中選擇滿足條件的元組。having短語作用於組,從中選擇滿足條件的組

7   關於嵌套查詢的注意

嵌套查詢是將一個查詢塊(子查詢)嵌套在另一個查詢塊(父查詢)的where字句或having短語的條件中的查詢;
需要特別指出的是,子查詢的select語句中不能使用order by字句,order by字句只能對最終查詢結果排序

8   帶有exists謂詞的子查詢

exists代表存在量詞。所以帶有exists謂詞的子查詢不返回任何數據,只產生邏輯真‘TRUE’,或邏輯假‘FALSE’。
例如:select Sname from Student where exists (select * from SC where Sno=Student.Sno and Cno='1'); 由exists引出的子查詢,其目標列表達式通常用*,因爲帶exists的子查詢只返回真值或假值,給出別名無實際意義

9   集合查詢

集合操作主要包括並操作UNION,交操作INTERSECT和差操作EXCEPT;
union的使用比較多,將多個查詢結果合併起來,系統會自動去掉重複元組,如果要保留重複元組則用union all操作符;
intersect的使用是獲取多個查詢結果中相同的結果(即取交集)
except的使用是用前一個查詢結果減去後一個查詢結果(即取差集)

二 插入語句

1  插入子查詢結果

子查詢不僅可以嵌套在select語句中,也可以嵌套在insert語句中,用以生成要插入的批量數據
例如:insert into Dept_age(Sdept, Avg_age)  select Sdept, avg(Sage) from Student group by Sdept;

三 修改語句

1  修改表中所有數據的值

如:update Student set Sage=Sage+1;

四 模式的刪除

刪除模式語句:drop schema  <模式名> <cascade | restrict>
選擇cascade(級聯),表示在刪除模式的同時把該模式中所有的數據庫對象全部一起刪除
選擇restrict(限制),表示如果該模式中定義了下屬的數據庫對象(如:表,視圖等),則拒絕該刪除語句的執行。只有當該模式下沒有任何下屬的對象時才能執行drop schema語句
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章