分享:我的oracle 9i学习笔记(13)

开发者在线 Builder.com.cn 更新时间:2008-04-23作者:please 来源:chinaunix

本文关键词: 数据库 Oracle Oracle 9i

############# Other database Object ###############

CREATE SEQUENCE sequence_name [INCREMENT BY n]

[START WITH n]

[{MAXVALUE n | NOMAXVALUE}]

[{MINVALUE n | NOMINVALUE}]

[{CYCEL | NOCYCLE}]

[{CACHE n | NOCACHE}]; -----创建SEQUENCE

example:

CREATE SEQUENCE sequence_name INCREMENT BY 10

START WITH 120

MAXVALUE 9999

NOCACHE

NOCYCLE;

select * from user_sequences ;---当前用户下记录sequence的视图

select sequence_name.nextval,sequence_name.currval from dual;-----sequence的引用

alter sequence sequence_name INCREMENT BY 20

MAXVALUE 999999

NOCACHE

NOCYCLE; -----修改sequence,不能改变起始序号

drop sequence sequence_name; ----删除sequence

CREATE [PUBLIC] SYNONYM synonym_name FOR object; ------创建同义词

DROP [PUBLIC] SYNONYM synonym_name;----删除同义词

CREATE PUBLIC DATABASE LINK link_name USEING OBJECT;----创建DBLINK

select * from object_name@link_name; ----访问远程数据库中的对象

/*union 操作,它将两个集合的交集部分压缩,并对数据排序*/

select col1,col2,col3 from table1_name union select col1,col2,col3 from table2_name;

/*union all 操作,两个集合的交集部分不压缩,且不对数据排序*/

select col1,col2,col3 from table1_name union all select col1,col2,col3 from table2_name;

/*intersect 操作,求两个集合的交集,它将对重复数据进行压缩,且排序*/

select col1,col2,col3 from table1_name intersect select col1,col2,col3 from table2_name;

/*minus 操作,集合减,它将压缩两个集合减后的重复记录, 且对数据排序*/

select col1,col2,col3 from table1_name minus select col1,col2,col3 from table2_name;

/*EXTRACT 抽取时间函数. 此例是抽取当前日期中的年*/

select EXTRACT(YEAR FROM SYSDATE) from dual;

/*EXTRACT 抽取时间函数. 此例是抽取当前日期中的月*/

select EXTRACT(MONTH FROM SYSDATE) from dual;

########################## 增强的 group by 子句 #########################

select [column,] group_function(column)...

from table

[WHERE condition]

[GROUP BY [ROLLUP] group_by_expression]

[HAVING having_expression];

[ORDER BY column]; -------ROLLUP操作字,对group by子句的各字段从右到左进行再聚合

example:

/*其结果看起来象对col1做小计*/

select col1,col2,sum(col3) from table group by rollup(col1,col2);

/*复合rollup表达式*/

select col1,col2,sum(col3) from table group by rollup((col1,col2));

select [column,] group_function(column)...

from table

[WHERE condition]

[GROUP BY [CUBE] group_by_expression]

[HAVING having_expression];

[ORDER BY column]; -------CUBE操作字,除完成ROLLUP的功能外,再对ROLLUP后的结果集从右到左再聚合

example:

/*其结果看起来象对col1做小计后,再对col2做小计,最后算总计*/

select col1,col2,sum(col3) from table group by cube(col1,col2);

/*复合rollup表达式*/

select col1,col2,sum(col3) from table group by cube((col1,col2));

/*混合rollup,cube表达式*/

select col1,col2,col3,sum(col4) from table group by col1,rollup(col2),cube(col3);

/*GROUPING(expr)函数,查看select语句种以何字段聚合,其取值为0或1*/

select [column,] group_function(column)...,GROUPING(expr)

from table

[WHERE condition]

[GROUP BY [ROLLUP] group_by_expression]

[HAVING having_expression];

[ORDER BY column];

example:

select col1,col2,sum(col3),grouping(col1),grouping(col2) from table group by cube(col1,col2);

/*grouping sets操作,对group by结果集先对col1求和,再对col2求和,最后将其结果集并在一起*/

select col1,col2,sum(col3) from table group by grouping sets((col1),(col2))

用户评论

  • 用户名
  • 评论内容