Oracle 产生序列的 6 种方法
方法一: sys@ORCL> select level from dual connect by level<=5; LEVEL ---------- 1 2 3 4 5 方法二: sys@ORCL> select rownum from dba_objects where rownum<=5; ROWNUM ---------- 1 2 3 4 5 方法三: sys@ORCL> select to_number(column_value) n from xmltable(\'1 to 5\'); N ---------- 1 2 3 4 5 方法四: s
to_char 和 to_date 经验分享
㈠ 比较下面两种写法: to_char(start_time,\'yyyy-mm-dd hh24:mi:ss\')=\'2013-06-06 16:18:30\' 和 start_time=to_date(\'2013-06-06 16:18:30\',\'yyyy-mm-dd hh24:mi:ss\') 任何时候都推荐使用后者!! ㈡ 数字转为英文的简单实现sys@ORCL> select to_c
《Oracle Database 11g & MySQL 5.6开发手册》试读有感
大数据浪潮汹涌袭来、一场新的信息技术革命即将开始。“春江水暖鸭先知”,作为数据库从业人员的我、体会尤为深刻 然而、无论是Oracle的 EXADATA 还是MySQL的Scale Out、或者NoSQL、都有其各自的适用场景、没有优劣之分 数据的大集中还是大分布、这取决于公司的财务、技术支持、氛围、需求等等、 看下2013年4月份各数据库在市场的占用率: 其次谈谈Ora
深入理解 Oracle 分区(3):分区表和分区索引概述
㈠ 分区表技术概述 ⑴ Range 分区 ① 例子 create table t (...列定义...) partition by range (week_num) (partition p1 values less than (4)tablespace data0, part
深入理解 Oracle 分区(2):分区方案中常见问题探讨
分区方案设计和实施是一门追求综合平衡、充满辩证统一的哲学、 也是经验和技术不断积累的艺术 然而、实际项目中、却漏洞频出、导致海量数据顷刻坍塌 ㈠ 目标方面的误区 ① 问题分析 在很多分区设计方案、其指导思想往往只考虑部分目标&
深入理解Oracle索引(6):在实践中初步认识3大索引的使用场景
㈠ 某表的一列重复值很多,基数很小时,应该建立什么索引? --创建Bitmap Index,具体原理参见:B-Tree索引与Bitmap索引的锁代价的比较 例如: create bitmap index idx_bm_product on products(list_price) tablespace users;
深入理解Oracle索引(5):反向索引的定义、缺点和适用场景
㈠ 定义 建立一个反向索引将把每个列的键值(each column key value)按字节反向过来,对于组合键,列的顺序被保留,但每个列的字节都作了反向 例如: 表的某一列内容 …… 1234  
深入理解Oracle索引(3):唯一索引和ROWID
索引都会包含rowid来定位到具体的位置,但是唯一索引不会用rowid来作为“索引键”的一部分 比如在列col1上建立非唯一索引,则其索引键是col1| rowid,这样索引键就唯一了,但唯一索引不会在列上加上rowid构成索引键 测试:SQL> conn / as sysdba 已连接。 SQL> create table t as select * from dba_objects; 表已创
深入理解Oracle索引(2):INDEX UNIQUE SCAN,INDEX FULL SCAN和INDEX FAST FULL SCAN
㈠ INDEX UNIQUE SCAN 如果表上有唯一索引, 搜索索引列时会用上INDEX UNIQUE SCAN 原来Index Unique Scan和Index Range Scan在B Tree上的搜索路径是一样的 只是Index Unique Scan在找到应该含有要找的Index Key的block后便停止了搜索,因为该键是唯一的 而Index Range S
【ROLLUP】Oracle分组函数之高效的ROLLUP
㈠ 初始化实验坏境 hr@ORCL> create table rollup_test as 2 select e.department_id,j.job_title,e.first_name,e.salary 3 from employees e,jobs j 4 where e.job_id=j.job_id; Table created. hr@ORCL> select * from rollup_test; DEPARTMENT_ID JOB_TITLE FIRST_NAME SALARY ------------- ----------------------------------- -------------------- ---------- 50 Shipping Clerk Donald
数字转换为英文的函数
sys@ORCL> select to_char(to_date(\'1314\',\'J\'),\'Jsp\') as "I love 1314" from dual; I love 1314 ----------------------------------- One Thousand Three Hundred Fourteen 注释: j就是范围在1--5373484之间 算算是今年的第几天sys@ORCL> select to_date(\'123\',\'J\') from dual; TO_DATE(\'123\',\'J\') ------------------ 03-MAY-12
内连接和等值连接的区别
内连接就是满足连接条件的结果集,这是相对于外连接而言。外连接即使找不到满足条件的记录,另一方的记录还是要输出INNER JOIN可以不等:select * from t1 inner join t2 on t1.id<>t2.id;从集合论角度看:等值连接是内连接的子集
Oracle SQL编写优化总结《一》
㈠ 选用合适的Oracle 优化器 缺省值: 9i默认是choose 10g默认是all_rows sys@EMREP> show parameter optimizer_mode NAME TYPE VALUE ----------------------------------
oracle 开发误区探索《二》
接上一篇。 ③ 堤防DDL提交事务 DDL伪代码展示: begin commit; DDL-statement commit; Exception
oracle 开发误区探索《一》
环境:sys@ORCL> select * from v$version where rownum=1; BANNER ---------------------------------------------------------------- Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod sys@ORCL> !uname -a Linux localhost.localdomain 2.6.18-308.el5xen #1 SMP Fri Jan 27 17:59:00 EST 2012 i686 i686 i386 GNU/Linux ① 单列和复合列NOT IN 子查询 not in (........)里面的null,如果存在null,则返回的
用等比数列解析伪列level的另一个作用
我们都知道,level是个伪列,代表当前节点所在的层级;对根节点来说,level返回1;根节点到子节点返回2,以此类推。 借助level,我们可以控制对表的扫描次数。第一次扫描得出的结果集的level都是1,第二次扫描的结果集的level都是2,依此类推。 实验环境:SQL> create table test as select ename from emp where rownum<=2; Table created. SQL> select * fr
oracle 层次查询
1 定义: 层次查询使用树的遍历,走遍含树形结构的数据集合,来获取树的层次关系报表的方法 树形结构的父子关系,你可以控制: ① 遍历树的方向,是自上而下
oracle insert的扩展
向一个表发散弹枪: ⑴ insert into table_name [(column[,column...])] select_statement 每次只能插入一个表,但性能上比写多条insert语句要高。另外,oracle还提供create table table_name as select ...,as不可少!实现直接创建并且插入表,依赖于后面的select语句的结果
oracle with子句
以例子学习with: with --查询部门和部门的总薪水 dept_costs as ( select d.department_name,sum(e.salary) dept_total from departments d,employees e where d.department_id=e.department_id group by d.department_name ), --利用上一个with查询的结果,计算部门的平均总薪水 avg_costs as ( select avg(dept_total) dept
oracle update关联表的思路总结
1、 其中最普通的是update t1 set b=(select b from t2 where t1.a=t2.a); 但是,要注意空值的影响, 如果怕空值的影响,要写成 update t1 set tname= (select sname from t2 wh