《oracle数据库》数据处理

数据处理

一、 DML(Data Manipulation Language — 数据操纵语言)

1. 插入数据(INSERT)

为每一列添加一个新值。
按列的默认顺序列出各个列的值。
在 INSERT 子句中随意列出列名和他们的值。
字符和日期型数据应包含在单引号中。

(1) 插入指定的值

在这里插入图片描述

(2) 自动插入空值

在表中包含的列名,而未在INSERT 子句中列出的列名,会在该列插入空值,如下:
在这里插入图片描述
在departments表中共有四列,而在INSERT 子句中只列出了两列,另外两列会自动插入空值,如下:
在这里插入图片描述

(3) 创建脚本

在SQL语句中使用&变量指定列值。
&变量放在VALUES子句中。

在这里插入图片描述
会弹出变量窗口,在对应的列名下输入指定的值,可在该表中插入指定的值。

在这里插入图片描述

(4) 插入基于其它表中的数据

在INSERT语句中加入子查询。
不必书写VALUES子句。

在这里插入图片描述
子查询中的值列表应与 INSERT子句中的列名对应。
在这里插入图片描述

2. 更新数据(UPDATE)

使用 UPDATE 语句更新数据。
可以一次更新多条数据。

(1) 更新指定的值

使用 WHERE 子句指定需要更新的数据。
在这里插入图片描述
如果省略 WHERE 子句,则SET中指定列的所有数据都将被更新。
在这里插入图片描述

(2) 更新基于其他表中的数据

在 UPDATE 中使用子查询,使更新基于另一个表中的数据。
在这里插入图片描述

(3) 更新数据完整性错误

因为employees表通过department_id与父表departments连接,而在父表departments的department_id列没有55,所以更新出错。
在这里插入图片描述

3. 删除数据(DELETE)

使用 DELETE语句删除数据。
可以一次删除多条数据。

(1) 删除指定的记录

使用WHERE子句删除指定的记录。

	DELETE FROM departments
	WHERE department_name = 'Finance';

如果省略WHERE子句,则会清空表。

	DELETE FROM departments;
(2) 删除基于其他表中的数据

在 DELETE 中使用子查询,使删除基于另一个表中的数据。

	DELETE FROM emp1
	WHERE department_id =			
    	(SELECT department_id			
    	FROM dept1			
    	WHERE department_name LIKE '%Public%');
(3) 删除数据完整性错误

因为departments是employees通过department_id连接的父表,而在子表employees中的department_id列有60,所以删除出错。
在这里插入图片描述

二、 DCL(Data Control Language — 数据控制语言)

1. COMMIT(提交)

① 数据的改变已经被保存到数据库中。
② 改变前的数据已经丢失。
③ 所有用户可以看到结果。
④ 锁被释放,其他用户可以操作涉及到的数据。
⑤ 所有保存点被释放。

当执行DML语句时,左上角的提交与回滚会显示。
在这里插入图片描述
点击左上角的提交(F10)或执行以下语句皆可以提交(保存到数据库)。

COMMIT;
2. ROLLBACK(回滚)

① 数据改变被取消。
② 修改前的数据状态被恢复。
③ 锁被释放。

当执行DML语句时,左上角的提交与回滚会显示。
在这里插入图片描述
点击左上角的回滚(Shift+F10)或执行以下语句皆可以回滚(变化失效)。

ROLLBACK;
3. SAVEPOINT(保存点)

① 使用 SAVEPOINT 语句在当前事务中创建保存点。
② 使用 ROLLBACK TO SAVEPOINT 语句回滚到创建的保存点。

在这里插入图片描述

三、 使用DML语句注意

① 会话异常结束或系统异常会导致自动回滚。
② 其他用户不能看到当前用户所做的改变,直到当前用户结束事务。
③ DML语句所涉及到的行被锁定, 其他用户不能操作。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新鑫S

你的鼓励将是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值