1. 程式人生 > >oracle sql基礎學習篇《一》

oracle sql基礎學習篇《一》

  每個RDBMS都基於標準sql走出了屬於自己的sql特色。oracle也不例外。現起,我們來學習oracle sql。
  學習sql,於開發者,實現優秀的業務邏輯;於管理者,完成資料庫的調優。

  oracle sql可分:
  a)select
  b)DML:update,insert,delete,merge
  c)DDL:create,alter,drop
  d)DCL:grant,revoke
  e)TCL:commit,roolback,savepoint

  oracle 資料型別共有:
  1)整數型別
  oracle中沒有專門的整數型別,因此,需要使用number(10)來表示整形。
  2)數值型別
  number(m,n)
  m:所有有效數字的位數
  n:小數點後的位數
  3)字元型別
  char(m):定長
  varchar2(m):變長,max為m
  4)日期時間型別
  date:日期時間資料
  timestamp:時間戳(是具有法律效益的電子憑證)
  5)二進位制型別
  blob:儲存視訊,圖片等


  在寫sql語句時,建議分行來寫,因為RDBMS是根據行號來提示錯誤資訊的。而且,也可以提高可讀性。在使用主鍵時,最佳實踐是使用邏輯主鍵而不是業務主鍵。所以,避免使用聯合主鍵,因為,聯合主鍵基本都是有業務含義的。而且,聯合主鍵也不適合建立外來鍵約束。

  外來鍵是關係型資料庫的第三維。定義:foreign key (欄位名) references 目標表名 (被參照的欄位名)。複雜的業務便是通過外來鍵約束來實現的。

  修改已有資料表
  增加欄位:alter table table_name add 欄位名 欄位型別;
  刪除欄位:alter table table_name drop 欄位名;


  如果在表之間存在外來鍵關聯,對被引用表執行drop table table_name時會報錯。必須先刪除引用表!


  對於一些受限操作,我們可採取新建表來變通我們想要的功能。


  上面談的都是對錶的操作。接下來,我們來聊聊對資料的操作。


  使用外來鍵約束,所插入的資料必須在被引用表中存在。更新表,set後可多列同時更新,用逗號分隔。加上where子句可過濾所需的行。


  delete from table_name where ...,是吃光碗裡的飯;drop table...則是吃光碗裡的飯還將碗給砸了。


  oracle很少涉及到雙引號。列別名,就是其中一例。通過雙引號,我們可以控制列名的輸出格式。


  NULL幾乎不佔儲存。如果在null和0選,建議儲存null,而非0.


  對於_或%打頭的欄位,模糊查詢時須轉義。如:
  like '\%%' escape '\'
  like '\_%' escape '\'


  聚合函式count使用上的小區別。如:
  count(*):統計結果集的總條數
  count(name):統計結果集中name不為null的記錄的總條數


  對於order by的多個排序規則,order by首先按照第一個排序規則進行排序,如果第一個排序規則無法區分兩條記錄的順序,則按照第二個排序規則進行排序,如果第二個排序規則無法區分兩條記錄的順序,則按照第三個排序規則進行排序,以此類推。