Basic SQL & PL/SQL
文章平均质量分 70
大数据最好
大数据,机器学习,深度学习
展开
-
结构化程序设计
结构化程序设计的三种基本结构是:顺序结构、选择结构和循环结构。顺序结构顺序结构表示程序中的各操作是按照它们出现的先后顺序执行的。例如,要计算两个员工的薪资总数,就可以用一个简单的顺序结果来实现,代码如下:DECLARE --define variable v_sal1 NUMBER; v_sal2 NUMBER; v_sumsal NUMBER;BEGIN原创 2015-02-04 21:54:37 · 580 阅读 · 0 评论 -
执行计划查看方法(Explain plan)
什么是执行计划所谓执行计划,顾名思义,就是对一个查询任务,做出一份怎样去完成任务的详细方案。举个生活中的例子,我从珠海要去英国,我可以选择先去香港然后转机,也可以先去北京转机,或者去广州也可以。但是到底怎样去英国划算,也就是我的费用最少,这是一件值得考究的事情。同样对于查询而言,我们提交的SQL仅仅是描述出了我们的目的地是英国,但至于怎么去,通常我们的SQL中是没有给出提示信息的,原创 2015-02-07 16:55:24 · 7329 阅读 · 0 评论 -
多表连接的三种方式hash join,merge join,nested loop
多表之间的连接有三种方式:Nested Loops,Hash Join和 Sort Merge Join. 下面来介绍三种不同连接的不同: 一. NESTED LOOP:对于被连接的数据子集较小的情况,嵌套循环连接是个较好的选择。在嵌套循环中,内表被外表驱动,外表返回的每一行都要在内表中检索找到与它匹配的行,因此整个查询返回的结果集不能太大(大于1 万不适合),要把返回子原创 2015-02-09 18:29:11 · 1513 阅读 · 0 评论 -
数据访问方法
oracle总共只有两种基本的数据访问途径:全扫描或者索引扫描 。统计信息在优化器准备确定最优方法的过程中扮演了关键的角色。全扫描访问方法: 当对一个对象进行全扫描时,与该对象相关的所有数据块都必须取出并进行处理,以确定块中所包含的数据行是否是你的查询所需要的。请记住ORACLE必须将整个数据块读取到内存中以取得这个块中所存储的数据行的数据。因此,当发生全扫描时,实际上优原创 2015-03-07 19:21:31 · 447 阅读 · 0 评论 -
oracle清空缓存
在做实验的时候,很多时候需要清空缓存,让实验结果更加的精准。清空buffer cache:ALTER SYSTEM FLUSH BUFFER_CACHE; 清空shared pool:alter system flush shared_pool;原创 2015-04-07 13:15:24 · 1137 阅读 · 0 评论 -
大表在前,下表在后的说法真的对吗?
我自己以前在网上,看到说oracle是从下到上,从右到左访问,因此我们写sql时应该把大表放在前面,小表放在后面。今天我看了一个教程,然后自己做了实验,发现这种说法是有问题的。下面,让我用事实来说话。首先,准备数据drop table tab_big;drop table tab_small;create table tab_big as select * fro原创 2015-04-07 16:50:43 · 2528 阅读 · 0 评论 -
count(*),count(1),count(column)性能比较
想要比较这三者的性能,当然做实验是最精准的,用事实说话。先准备数据:Microsoft Windows [版本 5.2.3790](C) 版权所有 1985-2003 Microsoft Corp.C:\Documents and Settings\Administrator>sqlplus sys/manager as sysdbaSQL*Plus: Rele原创 2015-04-07 16:00:39 · 433 阅读 · 0 评论 -
oracle 集群因子
集群因子(Clustering Factor)集群因子是索引与它所基于的表相比较而得出的有序性度量,它用于检查在索引访问之后执行的表查找的成本(将集群因子与选择性相乘即可得到该操作的成本)。集群因子记录在扫描索引时将读取的块数量。如果使用的索引具有较大的集群因子,则必须访问更多的表数据块才可以获得每个索引块中的行(因为邻近行位于不同的块中)。如果集群因子接近于表中的块数量,则表示索引适当排原创 2015-05-04 23:33:42 · 948 阅读 · 0 评论 -
in 和 exists 的比较
EXISTS的执行流程 select * from t1 where exists ( select null from t2 where y = x ) 可以理解为: for x in ( select * from t1 ) loop if ( exists ( select null from t2 where y = x.x )原创 2015-02-09 15:55:36 · 415 阅读 · 0 评论 -
case when 与 decode 用法
case when 在不同条件需要有不同返回值的情况下使用非常方便,可以在给变量赋值时使用,也可以在select查询语句中使用。case搜索语句格式:case when 条件1 then 返回值1 when 条件2 then 返回值2 ... else 返回值N end;case when使用示例代码:select empno,ename,job,原创 2015-02-09 14:06:13 · 1532 阅读 · 0 评论 -
多表查询方式
笛卡尔积 笛卡尔(Descartes)乘积又叫直积。 假设有两个集合X和Y,其笛卡尔积表示为X*Y,其积表示集合X中的每一个 元素和集合Y中每一个元素的所有可能的有序对 X*Y={(x,y)|x∈X∧y∈Y} 例如:X={a,b},Y={c,d,e},则X*Y={(a,c),(a,d),(a,e),(b,c)原创 2015-02-07 17:21:03 · 422 阅读 · 0 评论 -
ORACLE PL/SQL 介绍
Overview of PL/SQLPL/SQL, the Oracle procedural extension of SQL, is a portable, high-performance transaction-processing language. This chapter explains its advantages and briefly describes its ma原创 2015-02-04 19:52:02 · 379 阅读 · 0 评论 -
ORACLE SQL 介绍
1 Introduction to Oracle SQLStructured Query Language (SQL) is the set of statements with which all programs and users access data in an Oracle Database. Application programs and Oracle tools ofte原创 2015-02-04 18:52:22 · 359 阅读 · 0 评论 -
with as 的使用
with as语法–针对一个别名with tmp as (select * from tb_name)–针对多个别名with tmp as (select * from tb_name), tmp2 as (select * from tb_name2), tmp3 as (select * from tb_name3), …--相当于建了个e临原创 2015-02-04 23:36:01 · 1565 阅读 · 1 评论 -
merge into 语句的使用
MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句。 通过MERGE语句,根据一张表或子查询的连接条件对另外一张表进行查询, 连接条件匹配上的进行UPDATE,无法匹配的执行INSERT。 这个语法仅需要一次全表扫描就完成了全部工作,执行效率要高于INSERT+UPDATE。语法MERGE INTO [your table-name原创 2015-02-04 23:27:53 · 545 阅读 · 0 评论 -
CBO & RBO
Oracle数据库中的优化器又叫查询优化器(Query Optimizer)。它是SQL分析和执行的优化工具,它负责生成、制定SQL的执行计划。Oracle的优化器有两种,基于规则的优化器(RBO)与基于代价的优化器(CBO) RBO: Rule-Based Optimization 基于规则的优化器 CBO: Cost-Based Optim原创 2015-02-07 15:15:08 · 394 阅读 · 0 评论