SQL 知識點回顧總結(二)

本文在上篇博客 SQL 知識點回顧總結(一)的基礎上,再結合《SQL 必知必會》一書對 SQL 相關知識點進行了補充整理,供大家參考,也方便自己查閱備忘。

  1. 在指定一條 order by 子句時,應該保證它是 select 語句中最後一條子句。如果它不是最後的子句,將會出現錯誤信息。
  2. 通常,order by 子句中使用的列將是爲顯示而選擇的列。但是實際上並不一定要這樣,用非檢索的列排序數據是完全合法的。
  3. 如果想在多個列上進行降序排序,必須對每一列指定 DESC 關鍵字。
  4. 通配符只能用於文本字段(字符串),非文本數據類型字段不能使用通配符搜索。
    4.1 通配符 % :like ‘%’ 不會匹配爲 NULL 的行
    4.2 通配符 _ :只匹配單個字符
    4.3 通配符 []:指定一個字符集,匹配指定位置(通配符的位置)的一個字符
  5. TRIM 函數
    RTRIM():去掉字符串右邊的空格;
    LTRIM():去掉字符串左邊的空格;
    TRIM() :去掉字符串左右兩邊的空格。
  6. 測試計算:省略了 from 子句的 select 語句就是簡單地訪問和處理表達式,例如 select 3*2 將返回6,select trim(’ abc ') 將返回 abc
  7. soundex() 函數:soundex()考慮了類似的發音字符和音節,使得能對字符串進行發音比較而不是字母比較。
    例如:select name from … where soundex(name) = soundex(‘Michael Green’)
  8. 聚集函數
    8.1 AVG() 函數忽略列值爲NULL的行
    8.2 如果指定列名,則 count() 函數會忽略指定列的值爲空的行,但如果 count() 函數中用的是星號(*),則不忽略。
    8.3 avg(distinct xxx) 只考慮各個不同的xxx所對應的平均值
  9. group by 子句必須出現在 where 子句之後,order by 子句之前
  10. having 與 where 區別:使用having時應該結合group by子句(having爲組級過濾),而where子句用於標準的行級過濾。
  11. insert 與 insert select:insert 通常只插入一行,要插入多行,必須執行多個 insert 語句。insert select 可以用一條 insert 插入多行,不管select語句返回多少行,都將被 insert 插入。
  12. 表的複製:create table copyTable as
    select * from testTable
  13. delete、truncate table 與 drop:delete 語句可以從表中刪除指定行;如果要刪除所有行,可以使用 truncate table 語句,也可以使用 drop table。
    不同之處在於 drop table 不但會刪除表中所有數據,還會將整個表結構從數據庫中移除,如果想重新向表中存儲數據的話必須重建該數據表。
  14. 使用事務處理,通過確保成批的SQL操作要麼完全執行,要麼完全不執行,用來維護數據庫的完整性。
  15. 事務處理用來管理 insert、update和delete語句。不能回退select語句(回退select語句也沒有必要),也不能回退create後drop操作。
  16. 事務處理中的幾個語句:
    rollbck:回退;
    commit:提交;
    savepoint:保留點;越多越好,保留點越多,就能越靈活地進行回退。
  17. 使用遊標操作數據
      下面的示例用@@FETCH_STATUS控制在一個WHILE循環中的遊標活動
      DECLARE E1cursor cursor /* 聲明遊標,默認爲FORWARD_ONLY遊標 */
      FOR SELECT * FROM c_example
      OPEN E1cursor /* 打開遊標 */
      FETCH NEXT from E1cursor /* 讀取第1行數據 */
      WHILE @@FETCH_STATUS = 0 /* 用WHILE循環控制遊標活動 */
      BEGIN
       FETCH NEXT from E1cursor /* 在循環體內將讀取其餘行數據 */
      END
      CLOSE E1cursor /* 關閉遊標 */
      DEALLOCATE E1cursor /* 刪除遊標 */
  18. 主鍵與唯一約束:
    相同點:Unique key與primarykey 約束都強調唯一性;
    不同點:
    (1)一個表只能有一個PRIMARY KEY,但可以有多個UNIQUE KEY ;
    (2)unique key 約束只針對非主鍵列,允許有空值。Primary key 約束針對主鍵列,不允許有空值。
    UNIQUE KEY的用途:主要是用來防止數據插入的時候重複的。表的主鍵就是一個唯一性約束,不過主鍵只能有一個,所以如果其他列的數據不允許重複的話,就可以建立唯一性約束。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章