程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> ORACLE 常用的SQL語法和數據對象

ORACLE 常用的SQL語法和數據對象

編輯:Oracle數據庫基礎
 

一.數據控制語句 (DML) 部分

  1.INSERT (往數據表裡插入記錄的語句)

  INSERT INTO 表名(字段名1, 字段名2, ……) VALUES ( 值1, 值2, ……);

  INSERT INTO 表名(字段名1, 字段名2, ……) SELECT 字段名1, 字段名2, …… FROM 另外的表名;

  字符串類型的字段值必須用單引號括起來, 例如: ’GOOD DAY’

  如果字段值裡包含單引號’ 需要進行字符串轉換, 我們把它替換成兩個單引號''.

  字符串類型的字段值超過定義的長度會出錯, 最好在插入前進行長度校驗.

  日期字段的字段值可以用當前數據庫的系統時間SYSDATE, 精確到秒

  或者用字符串轉換成日期型函數TO_DATE(‘2001-08-01’,’YYYY-MM-DD’)

  TO_DATE()還有很多種日期格式, 可以參看Oracle DOC.

  年-月-日 小時:分鐘:秒 的格式YYYY-MM-DD HH24:MI:SS

  INSERT時最大可操作的字符串長度小於等於4000個單字節, 如果要插入更長的字符串, 請考慮字段用CLOB類型,

  方法借用Oracle裡自帶的DBMS_LOB程序包.

  INSERT時如果要用到從1開始自動增長的序列號, 應該先建立一個序列號

  CREATE SEQUENCE 序列號的名稱 (最好是表名+序列號標記) INCREMENT BY 1 START WITH 1

  MAXVALUE 99999 CYCLE NOCACHE;

  其中最大的值按字段的長度來定, 如果定義的自動增長的序列號 NUMBER(6) , 最大值為999999

  INSERT 語句插入這個字段值為: 序列號的名稱.NEXTVAL

  2.DELETE (刪除數據表裡記錄的語句)

  DELETE FROM表名 WHERE 條件;

  注意:刪除記錄並不能釋放Oracle裡被占用的數據塊表空間. 它只把那些被刪除的數據塊標成unused.

  如果確實要刪除一個大表裡的全部記錄, 可以用 TRUNCATE 命令, 它可以釋放占用的數據塊表空間

  TRUNCATE TABLE 表名;

  此操作不可回退.

  3.UPDATE (修改數據表裡記錄的語句)

  UPDATE表名 SET 字段名1=值1, 字段名2=值2, …… WHERE 條件;

  如果修改的值N沒有賦值或定義時, 將把原來的記錄內容清為NULL, 最好在修改前進行非空校驗;

  值N超過定義的長度會出錯, 最好在插入前進行長度校驗..

  注意事項:

  A. 以上SQL語句對表都加上了行級鎖,

  確認完成後, 必須加上事物處理結束的命令 COMMIT 才能正式生效,

  否則改變不一定寫入數據庫裡.

  如果想撤回這些操作, 可以用命令 ROLLBACK 復原.

  B. 在運行INSERT, DELETE 和 UPDATE 語句前最好估算一下可能操作的記錄范圍,

  應該把它限定在較小 (一萬條記錄) 范圍內,. 否則Oracle處理這個事物用到很大的回退段.

  程序響應慢甚至失去響應. 如果記錄數上十萬以上這些操作, 可以把這些SQL語句分段分次完成,

  其間加上COMMIT 確認事物處理.

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved