ORACLE_資料處理,oracle資料處理

來源:互聯網
上載者:User

ORACLE_資料處理,oracle資料處理


ORACLE_資料處理

①資料操縱語言
DML(Data Manipulation Language – 資料操縱語言) 可以在下列條件下執行:
向表中插入資料
修改現存資料
刪除現存資料
查詢現存資料
事務是由完成若干項工作的DML語句組成的

②INSERT 語句文法

1.使用 INSERT 語句向表中插入資料。
INSERT INTO table [(column [, column...])]
VALUES  (value [, value...]);
使用這種文法一次只能向表中插入一條資料。

2.從其它表中拷貝資料
在 INSERT 語句中加入子查詢。

INSERT INTO table1 [(column [, column...])]
select [(column [, column...])]
from table2
where condition

不必書寫 VALUES 子句。
子查詢中的值列表應與 INSERT 子句中的列名對應

3.建立指令碼
在SQL 陳述式中使用 & 變數指定列值。
& 變數放在VALUES子句中。


③UPDATE 語句文法
1.使用 UPDATE 語句更新資料。
UPDATE  table
SET  column = value [, column = value, ...]
[WHERE   condition];

可以一次更新多條資料。
使用 WHERE 子句指定需要更新的資料
如果省略 WHERE 子句,則表中的所有資料都將被更新

2.在 UPDATE 語句中使用子查詢
在 UPDATE 中使用子查詢,使更新基於另一個表中的資料。
UPDATE  copy_emp
SET     department_id  =  (SELECT department_id
                           FROM employees
                           WHERE employee_id = 100)
WHERE   job_id         =  (SELECT job_id
                           FROM employees
                           WHERE employee_id = 200);
3.更新中的資料完整性錯誤
UPDATE employees
SET    department_id = 55
WHERE  department_id = 110;

department_id是引用外鍵,但是55不存在於參考資料表中,違反外鍵約束

④DELETE 語句
1.使用 DELETE 語句從表中刪除資料。
DELETE FROM   table
[WHERE   condition];
使用 WHERE 子句刪除指定的記錄。
如果省略 WHERE 子句,則表中的全部資料將被刪除

2.在 DELETE 中使用子查詢
DELETE FROM emp1
WHERE  department_id =
(SELECT department_id
FROM   dept1
WHERE  department_name LIKE '%Public%');

3.刪除中的資料完整性錯誤
DELETE FROM departments
WHERE       department_id = 60;

註:department_id = 60 已經被引用,故不能刪除

⑤資料庫事務
事務:一組邏輯操作單元,使資料從一種狀態變換到另一種狀態。
1.資料庫事務由以下的部分組成:
一個或多個DML 語句
一個 DDL(Data Definition Language – 資料定義語言 (Data Definition Language)) 語句
一個 DCL(Data Control Language – 資料控制語言) 語句

2.開始與結束
以第一個 DML 語句的執行作為開始

以下面的其中之一作為結束:
COMMIT 或 ROLLBACK 語句
DDL 語句(自動認可)
使用者會話正常結束
系統異常終止

3.COMMIT和ROLLBACK語句的優點
使用COMMIT 和 ROLLBACK語句,我們可以:
確保資料完整性。
資料改變被提交之前預覽。
將邏輯上相關的操作分組。

4.復原到保留點
使用 SAVEPOINT 語句在當前事務中建立儲存點。
使用 ROLLBACK TO SAVEPOINT 語句復原到建立的儲存點。

5.事務進程
自動認可在以下情況中執行:
DDL 語句。
DCL 語句。
不使用 COMMIT 或 ROLLBACK 語句提交或復原,正常結束會話。
會話異常結束或系統異常會導致自動復原。

6.提交或復原前的資料狀態
改變前的資料狀態是可以恢複的
執行 DML 操作的使用者可以通過 SELECT 語句查詢之前的修正
其他使用者不能看到目前使用者所做的改變,直到目前使用者結束事務。
DML語句所涉及到的行被鎖定, 其他使用者不能操作。

7.提交後的資料狀態
資料的改變已經被儲存到資料庫中。
改變前的資料已經丟失。
所有使用者可以看到結果。
鎖被釋放,其他使用者可以操作涉及到的資料。
所有儲存點被釋放。


oracle資料處理

使用行轉列進行轉換一下就可以了,指令碼如下:
insert into othertable ( zddm, cjsj, f1110101, f1110102, f1110103 )select zddm, cjsj, sum(f1110101) f1110101, sum(f1110102) f1110102, sum(f1110103) f1110103 from (select zddm, cjsj, decode(xdm, '1110101', xsj, 0) f1110101, decode(xdm, '1110102', xsj, 0) f1110102, decode(xdm, '1110103', xsj, 0) f1110103 from table_name) a group by a.zddm, z.cjsj -- 如果是建立表的時候create table othertable asselect zddm, cjsj, sum(f1110101) f1110101, sum(f1110102) f1110102, sum(f1110103) f1110103 from (select zddm, cjsj, decode(xdm, '1110101', xsj, 0) f1110101, decode(xdm, '1110102', xsj, 0) f1110102, decode(xdm, '1110103', xsj, 0) f1110103 from table_name) a group by a.zddm, z.cjsj以上是資料項目代碼個數固定的時候可以這樣轉換,如果資料項目代碼個數不確定的話,就要使用動態SQL了,最好寫個預存程序,每天來執行
有問題請追問,希望可以幫到你

 
Oracle實驗報告

實驗報告格式很規範
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.