11g里面有个很有用的新特性,对数据透视图的支持. 简单而言,它可以实现宽表和窄表之间的转化.举一个例子,有一张表记录了全校所有班级所有学生的成绩(A,B,C,D,E),现在想统计每个班级里每个分数级别对应的学生人数.当然,一个SQL就可以实现: SELECT class, score, count(*) FROM score_table GROUP BY class, score; 结果的格式如下: 班级 分数 人数 一年一班 A 10 一年一班 B 16 一年一班
有人提出要将4张表合并成一张.数据量比较大,有4千万条数据.有很多重复数据,需要对某一列进行去重. 数据量太大的话,可以看我另外一篇:http://www.cnblogs.com/magmell/p/8941338.html mysql:思路: 1.导出数据.select into outfile. 2.传输到要导入数据的服务器上. 3.创建一张新表,主键和约束等与那三张表一样. 4.LOAD DATA INFILE导入.利用replace参数进行覆盖达到去重的目的. LOAD DATA INF
万以下小表做性能优化没有多大意义,因此我需要创建大表: 创建大表有三种方法,一种是insert into table selec..connect by.的方式,它最快但是数据要么是连续值,要么是随机值或是系统值,并不好用,而且总量上受到限制:另一种方法是用程序,借助Oracle的批量插值语法插入数据,它好在数据可以用程序掌控,总量也没有限制,缺点是速度慢:还有一种方法是有一张大表,把它的数据倒腾进来,语法是 insert into newtable select * from oldtable
通过拼接sql语句来完成 例如有如下个表 想一次性删除,执行如下语句: select 'drop table '||table_name ||';' as dropsql from USER_TABLES where table_name like 'CLASS%'; 结果如下: 结果为删除各个表的语句,通过程序循环执行即可