欢迎投稿

今日深度:

ORACLE_数据处理,oracle数据处理

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 – 数据定义语言) 语句
一个 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实验报告

实验报告格式很规范
 

www.htsjk.Com true http://www.htsjk.com/shujukunews/4443.html NewsArticle ORACLE_数据处理,oracle数据处理 ORACLE_数据处理 ①数据操纵语言 DML(Data Manipulation Language – 数据操纵语言) 可以在下列条件下执行: 向表中插入数据 修改现存数据 删除现存数据 查询现存...
评论暂时关闭