避免使用Oracle的char类型
尽量避免使用Oracle的char类型,即使只有一个字节,也应该使用varchar2类型。char的缺点主要有两个1.占用空间大 如果声明一个char(10)的字段,仅仅使用了一个字节,剩余的9个字节也会使用空格补齐。 create table a( id c...
使用Sign统计范围问题
有一个学生表,有id和分数两列。低于60分为不及格低于75分为及格低于85分为良高于85分为优数据初始化。create table student( student_id number, grade number);insert into student select rownum,ro...
裁剪树
最近需要做实验,用到hr的employees表,但是这个表的数据很多,不容易看清结果。所以需要精简他的数据,但是还要维护他原有的树形结构。准备实验数据create table emp as select * from hr.employees;select lpad(employee_id,level*4,' ') from emp start with manager_id i...
判断表中数据是否有重复
有一个很简单的需求,就是判断表中的数据是否有重复初始化场景如下:create table t as select rownum r from dual connect by level<10;insert into t values(1);commit;第一种方法 第二种方法 &nb...
在两个数据库之间进行数据同步
OLAP的第一步就是从业务系统中抽取数据到数据仓库系统。除了ETL工具Kettle,也可以使用PL/SQL创建Source表,模拟业务系统的数据表。create table source as select sys_guid() id ,o.* from dba_objects o where rownum<1000;alter table source add constraint PK_source primary key (id);创建Target表,模拟数据...
维护树状数据
给定一个树,要求查询所有状态为"异常"的叶子节点的所有上级节点create table t as select employee_id id,manager_id pid ,'正常' status from hr.employees;update t set status='异常' where id in ('109','107');查询表数据如下.因为节点109,107状态为异常,所以需要查他们的所有上级节点...
给非空记录增加行号
create table t(a varchar2(10));insert into t values('b');insert into t values(null);insert into t values(null);insert into t values('a');insert into t values('e');insert into t values(null);insert into t value...
滑动订单问题
MySQL技术内幕148页订单表有两个字段,订单日期(按月)和订单数量,需要求每个月到一年以后间隔的订单总数。create table MonthlyOrders( ordermonth date, ordernum int, primary key (orde...
SQL生成日历
http://jackywood.itpub.net/post/1369/127565一条SQL语句生成年历。select case when (new_yweek = min(new_yweek)over(partition by mon order by new_yweek)) then ...
去除重复记录
试验表包括200万记录,其中20万记录是重复的。比较新建表然后改名和原表删除两种去重方法。首先初始化数据。CREATE TABLE test_t ( id NUMBER (8) NOT NULL PRIMARY KEY, name VARCHAR2 (32) ); ...
删除一个用户下所有的对象
http://blog.csdn.net/tianlesoftware/article/details/5040984set echo offset feedback offset newpage noneset pagesize 5000set linesize 500set verify offset pagesize 0set term offset trims onset linesiz...
计算两个日期之间所有的工作日
s是开始日期,e是结束日期create or replace function workday(s in date,e in date) RETURN INTEGERasresult integer;beginselect count(*) into result from (select to_char(s+level-1,'d') w,s+level-1 from dual connect by level...
行转列
1.固定列数create table t1( studentno int, subject varchar2(10), grade int );insert into t1 values(1,'语文',80);insert into t1 values(1,'数学...