1. 程式人生 > >Oracle數據庫(九)—— 數據處理

Oracle數據庫(九)—— 數據處理

back 一個 date insert 當前 語句 完整 con dml

(一)插入數據

方式一

insert語句語法

INSERT INTO table [(column [, column...])]

VALUES (value [, value...]);

使用這種語法一次只能向表中插入一條數據

若按照列的順序賦值,可以不用寫列名

技術分享圖片

否則要寫列名,對於非空的列一定要復制

技術分享圖片

方式二:從其他的表拷貝數據

技術分享圖片

方式三:創建腳本(了解)

  • 在SQL 語句中使用 & 變量指定列值0。
  • & 變量放在VALUES子句中。

技術分享圖片

使用腳本,運行sql語句後,會出現彈框,所有彈框的值填好之後,這條數據會保存在數據庫中

(二)更新數據

UPDATE table

SET column = value [, column = value, ...]

[WHERE condition];

技術分享圖片

-- 更新 114號員工的工作和工資使其與205號員工 相同

(1)先查詢114號與205號員工的工作和工資是否相同

技術分享圖片

(2)更新信息

技術分享圖片

(3)再次查詢114號與205號員工的工作和工資是否相同

技術分享圖片

-- 調整與employee_id 為200的員工job_id相同的,員工的department_id為employee_id為100的員工的department_id

技術分享圖片

更新中的數據完整性錯誤

技術分享圖片

department為55的部門不存在,所以無法修改,違反了完整性約束

技術分享圖片

(三)刪除數據

DELETE FROM table

[WHERE condition];

  • 使用 WHERE 子句刪除指定的記錄
  • 如果省略 WHERE 子句,則表中的全部數據將被刪除

在delete中使用子查詢

-- 刪除dept1部門名稱中含Public字符的部門id

技術分享圖片

刪除中的數據完整性錯誤

技術分享圖片

若存在其他的表使用要刪除的數據,則這條數據不能被刪除

(四)數據庫事務

事務:一組邏輯操作單元,使數據從一種狀態變換成另一種狀態

數據庫事務由以下部分組成:

  • 一個或多個DML 語句
  • 一個 DDL(Data Definition Language – 數據定義語言) 語句
  • 一個 DCL(Data Control Language – 數據控制語言) 語句

以第一個 DML 語句的執行作為開始

以下面的其中之一作為結束:

  • COMMIT 或 ROLLBACK 語句
  • DDL 語句(自動提交)
  • 用戶會話正常結束
  • 系統異常終止

1、COMMIT和ROLLBACK

優點

  • 確保數據完整性。
  • 數據改變被提交之前預覽。
  • 將邏輯上相關的操作分組。

技術分享圖片

2、保留點

  • 使用 SAVEPOINT 語句在當前事務中創建保存點。
  • 使用 ROLLBACK TO SAVEPOINT 語句回滾到創建的保存點。

技術分享圖片

3、事務進程

自動提交在以下情況中執行:

  • DDL 語句。
  • DCL 語句。
  • 不使用 COMMIT 或 ROLLBACK 語句提交或回滾,正常結束會話。

會話異常結束或系統異常會導致自動回滾。

4、提交或回滾前的數據狀態

  • 改變前的數據狀態是可以恢復的
  • 執行 DML 操作的用戶可以通過 SELECT 語句查詢之前的修正
  • 其他用戶不能看到當前用戶所做的改變,直到當前用戶結束事務。
  • DML語句所涉及到的行被鎖定, 其他用戶不能操作。

5、提交後的數據狀態

  • 數據的改變已經被保存到數據庫中。
  • 改變前的數據已經丟失。
  • 所有用戶可以看到結果。
  • 鎖被釋放,其他用戶可以操作涉及到的數據。
  • 所有保存點被釋放。

6、回滾後的數據狀態

  • 數據改變被取消。
  • 修改前的數據狀態被恢復。
  • 鎖被釋放。

(五)總結

使用DML語句改變數據和事務控制

技術分享圖片

Oracle數據庫(九)—— 數據處理