首页 > 其他 > 详细

05-数据处理

时间:2020-08-02 18:06:12      阅读:78      评论:0      收藏:0      [点我收藏+]

DML 数据操作语言

  向表中插入数据

  修改现存数据

  删除现存数据

 

增:

  insert  into  表名 values(......);列顺序要与表一致;

  insert  into 表名 select  * from 表名 where .... ;列也要对应;

改:

  update  表名  set  ...  where  条件

删:

  delete  表名 where 条件;

 

 1 --插入数据
 2 --为每一列添加一个新值。
 3 --按列的默认顺序列出各个列的值。 
 4 --在 INSERT 子句中随意列出列名和他们的值。
 5 --字符和日期型数据应包含在单引号中。
 6 INSERT INTO departments(department_id, department_name, 
 7                         manager_id, location_id)
 8 VALUES      (70, Public Relations, 100, 1700);
 9 --
10 INSERT INTO employees(employee_id,last_name,email,hire_date,job_id)
11 VALUES  (300,Tom,tom@126.com,to_date(2012-3-21,yyyy-mm-dd),SA_RAP);
12 
13 --SYSDATE 记录当前系统的日期和时间
14 INSERT INTO employees (employee_id, 
15                  first_name, last_name, 
16                  email, phone_number,
17                  hire_date, job_id, salary, 
18                  commission_pct, manager_id,
19                  department_id)
20 VALUES           (113, 
21                  Louis, Popp, 
22                  LPOPP, 515.124.4567, 
23                  SYSDATE, AC_ACCOUNT, 6900, 
24                  NULL, 205, 100);
25 
26 --在SQL 语句中使用 & 变量指定列值。
27 -- & 变量放在VALUES子句中。       
28 INSERT INTO departments 
29             (department_id, department_name, location_id)
30 VALUES      (&department_id, &department_name,&location);
31 
32 --从其它表中拷贝数据
33 --不必书写 VALUES 子句。 
34 --子查询中的值列表应与 INSERT 子句中的列名对应
35 INSERT INTO emp2 
36 SELECT * 
37 FROM employees
38 WHERE department_id = 90;
39 
40 --更新数据
41 --使用where 子句指定需要更新的数据;如果省略where,则表中所有数据都将被更新;
42 UPDATE     copy_emp
43 SET        department_id = 110
44 where employee_id=113;
45 
46 --题目:更新 114号员工的工作和工资使其与205号员工相同。
47 UPDATE   employees
48 SET      job_id  = (SELECT  job_id 
49                     FROM    employees 
50                     WHERE   employee_id = 205), 
51          salary  = (SELECT  salary 
52                     FROM    employees 
53                     WHERE   employee_id = 205) 
54 WHERE    employee_id    =  114;
55 
56 --题目:调整与employee_id 为200的员工job_id相同的员工的department_id为employee_id为100的员工的department_id。
57 UPDATE  copy_emp
58 SET     department_id  =  (SELECT department_id
59                            FROM employees
60                            WHERE employee_id = 100)
61 WHERE   job_id         =  (SELECT job_id
62                            FROM employees
63                            WHERE employee_id = 200);
64 
65 --删除数据
66 --使用where 子句指定需要删除的数据;如果省略where,则表中所有数据都将被删除;
67 DELETE FROM departments
68 WHERE  department_name = Finance;
69 
70 --在 DELETE 中使用子查询
71 --题目:从emp1表中删除dept1部门名称中含Public字符的部门id
72 DELETE FROM emp1
73 WHERE  department_id =
74                        (SELECT department_id
75                         FROM   dept1
76                         WHERE  department_name LIKE %Public%);

 

数据库事务

  事务:一组逻辑操作单元,使数据从一种状态变换到另一种状态。

 

  以第一个 DML 语句的执行作为开始

  以下面的其中之一作为结束:

  COMMIT 或 ROLLBACK 语句

  DDL 语句(自动提交)

  用户会话正常结束

  系统异常终止

 

使用COMMIT 和 ROLLBACK语句,我们可以: 

  确保数据完整性。

  数据改变被提交之前预览。

  将逻辑上相关的操作分组。

技术分享图片

 

回滚到保留点

  使用 SAVEPOINT 语句在当前事务中创建保存点。

  使用 ROLLBACK TO SAVEPOINT 语句回滚到创建的保存点。 

1 UPDATE...
2 SAVEPOINT update_done;
3 --Savepoint created.
4 INSERT...
5 ROLLBACK TO update_done;
6 --Rollback complete.

 

事务进程

自动提交在以下情况中执行:

  DDL 语句。

  DCL 语句。

  不使用 COMMIT 或 ROLLBACK 语句提交或回滚,正常结束会话。

  会话异常结束或系统异常会导致自动回滚。

 

提交或回滚前的数据状态:

  改变前的数据状态是可以恢复的

  执行 DML 操作的用户可以通过 SELECT 语句查询之前的修正

  其他用户不能看到当前用户所做的改变,直到当前用户结束事务。

  DML语句所涉及到的行被锁定, 其他用户不能操作。

 

 

提交后的数据状态

  数据的改变已经被保存到数据库中。

  改变前的数据已经丢失。

  所有用户可以看到结果。

  锁被释放,其他用户可以操作涉及到的数据。

  所有保存点被释放。

 1 --改变数据
 2 DELETE FROM employees
 3 WHERE  employee_id = 99999;
 4 --1 row deleted.
 5 
 6 INSERT INTO departments 
 7 VALUES (290, Corporate Tax, NULL, 1700);
 8 --1 row inserted.
 9 
10 --提交改变
11 COMMIT;
12 --Commit complete

 

数据回滚后的状态

  使用 ROLLBACK 语句可使数据变化失效:

  数据改变被取消。

  修改前的数据状态被恢复。

  锁被释放。

1 DELETE FROM copy_emp;
2 --22 rows deleted.
3 ROLLBACK;
4 --Rollback complete.

 

技术分享图片

 

05-数据处理

原文:https://www.cnblogs.com/shici/p/13418844.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!