Oracle 操作數據庫(增刪改語句)


  對數據庫的操作除了查詢,還包括插入、更新和刪除等數據操作。后3種數據操作使用的 SQL 語言也稱為數據操縱語言(DML)。

一、插入數據(insert 語句)

  插入數據就是將數據記錄添加到已經存在的數據表中,可以通過 insert 語句實現向數據表中一次插入一條記錄,也可以使用 select 子句將查詢結果批量插入數據表。

  1、單條插入數據

   語法:

insert into table_name [ (column_name[,column_name2]...) ] values(express1[,express2]... )
  •     table_name:要插入數據的表名
  •     column_name1 和 column_name2:指定表的完全或部分列名稱
  •     express1 和 express2 :表示要插入的值列表

      EG:

SQL > insert into dept(deptno,dname,loc) values(88,'Tony','tianjin')

       注意:

  •  insert into 中指定添加數據的列,可以是數據表的全部列,也可以是部分列
  •    給指定列添加數據時,需要注意哪些列不能空;對於可以為空的列,添加數據可以不指定值;添加數據時,還應該數據添加數據和字段的類型和范圍
  •    向表中所有列添加數據時,可以省略 insert into 子句后面的列表清單,使用這種方法時,必須根據表中定義列的順序為所有的列提供數據
  •    添加數據時,還應該注意哪個字段是主鍵(主鍵的字段是不允許重復的),不能給主鍵字段添加重復的值 

  2、批量插入數據

  insert 語句還可以一次向表中添加一組數據,可以使用 select 語句替換原來的 values 子句,語法如下:

insert  into  table_name [ (column_name1[,column_name2...]...) ] selectSubquery
  •       table_name:要插入數據的表名
  •       column_name1  和 column_name2 :表示指定的列名
  •       selectSubquery:任何合法的 select 語句,其所選列的個數和類型要與語句中的 column 對應。

     EG:

SQL > insert into jobs_temp select * from jobs where jobs.salary > 1000

      注意:

  •      使用這種語句實現批量插入數據時,insert into 子句指定的列名可以與 select 子句指定的列名不同,但是它們之間的數據類型必須是兼容的

二、更新數據(update 語句)

  如果表中的數據不正確或不符合需求,那么就可以通過 update 語句實現修改現有的數據記錄。

  更新數據時,更新的列數可以有自己指定,列與列之間用逗號分隔;更新的條數可以通過 where 子句來加以限制,使用 where 子句時,系統只更新符合 where 條件的記錄,語法如下:

update table_name set {column_nam1=express1 [,column_name2=express2...] | (column_name1 [,column_name2...]) = (selectSubquery)} [where condition]
  •    table_name:表示要修改的表名
  •         column_name1 和 column_name2 :表示指定要更新的列名
  •         selectSubquery: 任何合法的 select 語句,其所選列的個數和類型要與語句中 column 對應
  •         condition:篩選條件表達式,只有符合篩選條件的記錄才會被更新

  EG1:

SQL > update emp set sal = sal*1.2 where job = "salesman"

    表示把銷售員(salesman)的工資上調20%。

  EG2:

SQL > update emp set sal = (select avg(sal) from emp where job = "manager") where sal < 2000

    表示把emp表中工資小於2000的人員工資調整為管理者的平均工資的水平。

  注意:

  •   將 update 語句與 select 語句組合使用時,必須保證 select 語句返回單一的值,否則會出現錯誤提示,導致更新數據失敗。

三、刪除數據 (delete 語句和 truncate 語句) 

  Oracle 系統提供了從數據庫刪除記錄的功能,刪除記錄可以使用 delete 語句和 truncate 語句,區分如下:

  1、delete 語句

   delete  語句用來刪除數據庫中的所有記錄和指定方位的記錄,若要刪除指定范圍的記錄,需用 where 子句進行限制,語法如下:

delete from table_name [where condition]
  •     table_name:表示要刪除記錄的表名
  •     condition:篩選條件,可選項,只有符合篩選條件的記錄才會被刪除掉

  EG:

SQL > delete from jobs where job_id = "pro"

   注意:使用 delete 語句來刪除數據時, Oracle 系統會產生回滾記錄,所有這種操作可以使用 rollback 語句來進行撤銷

  2、truncate 語句

  刪除記錄也可以使用 truncate 語句,語法同 delete 語句,使用 truncate 語句刪除表中的所有記錄要比 delete 語句快得多,但是不會產生回滾記錄,執行了 truncate 語句的操作也就無法使用 rollback 語句撤銷。

  注意在 truncate 語句還可以使用 reuse storage  關鍵字或者 drop  storage  關鍵字,前者表示刪除記錄后仍然保存記錄所占用的空間;后者表示刪除記錄后立即回收記錄所占用的空間。Oracle 系統默認情況下的 truncate 語句使用 drop storage 關鍵字。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM