Oracle的知识梳理2

本文介绍了SQL查询的基础知识,包括四多表查询、笛卡尔积的概念及其避免方法、自连接与子查询的使用,以及如何进行集合运算。此外,还详细讲解了使用DML语句处理数据的方法,包括插入、更新、删除数据及事务管理。
摘要由CSDN通过智能技术生成

四 多表查询

笛卡尔集

笛卡尔集会在下面条件下产生:

  • 省略连接条件
  • 连接条件无效
  • 所有表中的所有行互相连接
  • 为了避免笛卡尔集, 可以在 WHERE 加入有效的
  • 连接条件。
  • 在实际运行环境下,应避免使用全笛卡尔全集。

Oracle的连接分为等值连接,不等值连接,外连接,自连接

使用连接在多个表中查询数据

区分重复的列名

  • 使用表名前缀在多个表中区分相同的列。
  • 在不同表中具有相同列名的列可以用表的别名加以
  • 区分。

表的别名

  • 使用别名可以简化查询。
  • 使用表名前缀可以提高执行效率。
  • 如果使用了表的别名,则不能再使用表的真名。

连接多个表

连接 n个表,至少需要 n-1个连接条件。 例如:连接三个表,至少需要两个连接条件。

 

自连接

五 子查询

子查询语法

子查询的类型

注意事项:

  • 子查询要包含在括号内 。
  • 将子查询放在比较条件的右侧 。
  • 单行操作符对应单行子查询,多行操作符对应多行子查询。

单行子查询,多行子查询(in,all,any)

六 集合运算

集合运算的注意事项

  • select语句中参数类型和个数要一致。
  • 可以使用括号改变集合执行的顺序
  • 如果有order by子句,必须放到最后一句查询语句后
  • 集合运算采用第一个语句的表头作为表头

七  处理数据

使用DML语句,处理事务

数据操作语言:

DML(Data Manipulation Language – 数据操作语言) 可以在下列条件下执行:

  • 向表中插入数据
  • 修改现存数据
  • 删除现存数据
  • 事务是由完成若干项工作的DML语句组成的

 

数据库事务

  • 数据库事务由以下的部分组成:
  • 一个或多个DML 语句
  • 一个 DDL(Data Definition Language – 数据定义语言) 语句
  •  一个 DCL(Data Control Language – 数据控制语言)语句


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

  • 以下面的其中之一作为结束:
  • 显示结束: commit rollback
  • 隐式结束(自动提交): DDL语言,DCL语言, exit(事务
  • 正常退出)
  • 隐式回滚(系统异常终了): 关闭窗口,死机,掉电

COMMIT和ROLLBACK语句的优点

  • 使用COMMIT 和 ROLLBACK语句,我们可以:
  • 确保数据完整性。
  • 数据改变被提交之前预览。
  • 将逻辑上相关的操作分组.

数据库的隔离级别

对于同时运行的多个事务, 当这些事务访问数据库中相同的数据时, 如果没有采取必要的隔离机制, 就会导致各种并发问题:

  1. 脏读: 对于两个事物 T1, T2, T1 读取了已经被 T2 更新但还没有被提交的字段.之后, 若 T2 回滚, T1读取的内容就是临时且无效的.
  2. 不可重复读: 对于两个事物 T1, T2, T1 读取了一个字段, 然后 T2 更新了该字段.之后, T1再次读取同一个字段, 值就不同了.
  3. 幻读: 对于两个事物 T1, T2, T1 从一个表中读取了一个字段, 然后 T2 在该表中插入了一些新的行. 之后, 如果 T1 再次读取同一个表, 就会多出几行.

 数据库事务的隔离性: 数据库系统必须具有隔离并发运行各个事务的能力, 使它们不会相互影响, 避免各种并发问题.

一个事务与其他事务隔离的程度称为隔离级别. 数据库规定了多种事务隔离级别, 不同隔离级别对应不同的干扰程度,

 隔离级别越高, 数据一致性就越好, 但并发性越弱

 

数据库提供的 4 种事务隔离级别:

Oracle 支持的 2 种事务隔离级别:READ,COMMITED, SERIALIZABLE.

Oracle 默认的事务隔离级别为: READ COMMITED

Mysql 支持 4 中事务隔离级别. Mysql 默认的事务隔离级别为: REPEATABLE READ

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值