- 浏览: 92264 次
- 性别:
- 来自: 上海
最新评论
-
lihao312:
insert all功能好强大哦 之前都没有用到过
oracle 多表插入 insert all 用法(即列转行)
文章列表
Model子句是在Oracle数据库10g版本中引入的,提供了一个很好的替代电子表格的方法。通过Model子句,可以使用SQL语句中的一些很强大的功能,如聚合、并行、以及多维、多变量分析。如果你喜欢使用excel的电子表格来进行公式计算,你同样也会乐于使用model子句。由于model子句是SQL语言应用的一个扩展,其可扩展性是很强的,近似于oracle数据库的可扩展性。超过几百万行数据的多维、多变量计算,如果不是10亿级数据量的话,可以很容易地通过model子句来实现,而电子表格就不行。同时,很多数据库特性如对象分区以及并行执行都可以在model子句中高效地应用,从而进一步提高了可 ...
rowid是一个用来唯一标记表中行的伪列。它是物理表中行数据的内部地址,包含两个地址,其一为指向数据表中包含该行的块所存放数据文件的地址,另一个是可以直接定位到数据行自身的这一行在数据块中的地址。
具体如下:
select rowid,
(select file_name
from dba_data_files
where file_id =
dbms_rowid.rowid_to_absolute_fno(s.rowid,
...
autotrace 命令
- 博客分类:
- oracle sql编程及优化
在SQL*Plus中,你可以通过设置autotrace选项来在执行SQL命令的同时,自动的获得语句的执行计划和附加的统计信息。AUTOTRACE是一个很出色的Oracle SQL语句的诊断工具,与Explain plan不同的是这条SQL是实际执行了的,同时AUTOTRACE使用起来也极为方便。
Autotrace命令:
1. SET AUTOTRACE OFF 此为默认值,即关闭Autotrace
2. SET AUTOTRACE ON EXPLAIN 只显示执行计划
3. SET AUTOTRACE O ...
oracle 常用集合
- 博客分类:
- oracle基础
1. union
2. union all
3. minus 等于 not exists 如下:
select * from test_employees e
where not exists (select * from test_employees2 e2 where e.id = e2.id);
select * from test_employees
minus
select * from test_employees2;
4. intersect 等于 exists
sel ...
聚簇因子笔记
- 博客分类:
- oracle sql编程及优化
1、聚簇因子(Clustering factor)
索引行的存储顺序与表中行的存储顺序之间的相似程度。
当相似度高时,这些数据行就会密集地存储在相对较少的数据块中,这是聚簇因子比较好的情况。Oracle中,对于同一个 ...
merge 语句用法
- 博客分类:
- oracle基础
create table TEST_EMPLOYEES(ID NUMBER,NAME NVARCHAR2(50),SALARY NUMBER);
insert into TEST_EMPLOYEES (ID, NAME, SALARY) values (1, '张三', 8000);
insert into TEST_EMPLOYEES (ID, NAME, SALARY) values (2, '李四', 7000);
insert into TEST_EMPLOYEES (ID, NAME, SALARY) values (3, '王五', 9000);
cr ...
建表如下:
create table TEST_GROUP(NAME VARCHAR2(20),CLASS VARCHAR2(10),KEMU VARCHAR2(4),CHENGJI VARCHAR2(3));
insert into TEST_GROUP (NAME, CLASS, KEMU, CHENGJI)
values ('张三', '1班', '数学', '90');
insert into TEST_GROUP (NAME, CLASS, KEMU, CHENGJI)
values ('张三', '1班', '语文', '68');
insert into TE ...
oracle 分析函数之lead和lag
- 博客分类:
- oracle基础
Lag
和Lead
函数可以在一次查询中取出同一字段的前N行
的数据和后N行
的值。这种操作可以使用对相同表的表连接来实现,不过使用LAG和LEAD有更高的效率。
语法:Lead
(expression, offset, default) over(partition-clause order-by-clause)
参数说明:
offset 偏移,表示查询其后第n条记录, 如果不提供这个参数,就是默认为1;
default 默认值,如果没有找到。如果没有设置,且 ...
first_value函数返回结果集中排在第一位的值
语法:first_value(expression) over(partition-clause order-by-clause windowing-clause)
建表语句:
create table SMALL_CUSTOMERS(CUSTOMER_ID NUMBER,SUM_ORDERS NUMBER);
insert into SMALL_CUSTOMERS (CUSTOMER_ID, SUM_ORDERS) values (1000, 10);
insert in ...
rank,dense_rank,row_number
函数都是为每条记录产生一个从1开始至N的自然数,N的值可能小于等于记录的总数。这3个函数的唯一区别在于,当碰到相同数据时的排名策略。
语法:rank() over(partition-clause order-by-clause)
rank:
rank函数返回一个唯一的值,除非遇到相同的数据时,此时所有相同数据的排名是一样的,同时会在最后一条相同记录和下一条记录排名之间空出排名。
dense_rank:
dense_rank函数返回一个唯一的值,除非当碰到相同数据时,此时所有相同数据 ...
ratio_to_report函数是某个值占总值的百分比。
建表:
create table SMALL_CUSTOMERS(CUSTOMER_ID NUMBER,SUM_ORDERS NUMBER);
insert into SMALL_CUSTOMERS (CUSTOMER_ID, SUM_ORDERS) values (1000, 10);
insert into SMALL_CUSTOMERS (CUSTOMER_ID, SUM_ORDERS) values (1000, 20);
insert into SMALL_CUSTOME ...
create table TEST_EMPLOYEES(ID NUMBER,NAME NVARCHAR2(50),SALARY NUMBER);
insert into TEST_EMPLOYEES (ID, NAME, SALARY) values (1, '张三', 8000);
insert into TEST_EMPLOYEES (ID, NAME, SALARY) values (2, '李四', 7000);
insert into TEST_EMPLOYEES (ID, NAME, SALARY) values (3, '王五', 9000);
create table T ...
1.首先建表如下:
create table TEST_LINE_TO_COL(ID NUMBER,NAME NVARCHAR2(50),COURSE NVARCHAR2(20),SCORE NUMBER);
insert into TEST_LINE_TO_COL (ID, NAME, COURSE, SCORE)
values (1, '张三', '语文', 65);
insert into TEST_LINE_TO_COL (ID, NAME, COURSE, SCORE)
values (2, '张三', '数学', 85);
insert into TEST_LI ...
建表语句:
create table ORDERS(CUSTOMER_ID NUMBER,SUM_ORDERS NUMBER);
create table small_customers(CUSTOMER_ID NUMBER,SUM_ORDERS NUMBER);
create table medium_customers(CUSTOMER_ID NUMBER,SUM_ORDERS NUMBER);
create table large_customers(CUSTOMER_ID NUMBER,SUM_ORDERS NUMBER);
create ta ...