数据处理

DML(data manipulation language) 数据操纵语言 可以在下列条件下执行:
--向表中插入数据
--修改现存数据
--删除现存数据
事务是由完成若干项工作的DML语句组成的
(一)增加数据
1.使用insert语句向表中插入数据(这种语法一次只能向表中插入一条数据) 日期和字符应该在单引号中
insert into emp1
values (1001,'AA',sysdate,10000)//依次填入 空项为null
或者
insert into emp1(employee_id,last_name,hire_date) //填入时按此处的顺序和项数
values (1002,'BB',to_date(1999-12-25,'yyyy-mm-dd'))
2.从其他表中拷贝数据
insert into emp1(employee_id,hire_date,last_name)
select employee_id,hire_date,last_name
from employees
where department_id=80
3.创建脚本
insert into emp1(employee_id,last_name,salary,hire_date)
values(&id,'&name',&salary,'&hire_date')
(二)更新数据 //可以使用rollback 提交commit后不可回滚
update emp1
set salary = 12000
where employee_id=179 //如果没有过滤条件会导致所有的数据都更改
------题:更新114号员工的工作和工资使其与205号员工相同
update emp1
set job_id(select job_id from employees where employee_id=205),salary =(select salary from employees where employee_id=205)
where employee_id = 114
------题:调整与emplooyee_id为200的员工的job_id相同的员工的department_id为employee_id为100的员工的department_id
update emp1
set department_id = (select department_id from employees where employee_id=100)
where job_id = (select job_id from employees where employee_id=200)
更新中数据完整性错误
不能将数据更改成表中没有的数据(涉及到父项关键字和约束,将在下一节详细讲解)
(三)删除数据 //可以回滚
使用delete ...from...where子句删除指定数据
----题:从emp1表中删除dept1部门名称中包含public字符的部门id
delete from emp1
where department_id = (select department_id
from departments
where department_name like '%public&'
)

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

数据库事务由以下部分组成:
--一个或多个DML语句
--一个DDL(Data Definition Language 数据定义语言)语句
--一个DCL(Data Control Language 数据控制语言)语句
以DML的语句的执行作为开始
以下面的其中之一作为结束:
--COMMIT或ROLLBACK语句// ①可以确保数据完整性 ②数据改变被提交之前预览 ③将逻辑上相关的操作分组
--DDL语句(自动提交)
--用户会话正常技术
--系统异常终止
设置保存点 savepoint A
rollback to savepoint A 回滚到A位置后的地方
提交或回滚前的数据状态
改变前的数据状态是可以恢复的
执行DML操作的用户可以通过SELECT语句查询之前的修正
其他用户不能看到当前用户所做的改变,直到当前用户结束事务
DML语句所涉及到的行被锁定,其他用户不能操作(提交COMMIT后才可以释放)
提交后的数据状态
数据的改变已经被保存到数据库中
改变前的数据已经丢失
所有用户可以看到结果
锁被释放,其他用户可以操作涉及到的数据,所有保存点被释放

posted @   桥桥泽  阅读(100)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示