SQL常用语法手册(二)

2007-06-20 05:05 P.M.

21.查询view的创建语句

sql

sql

or

sql

22、去除数据库中特殊字符

>1

比如:replace(f1,””,”)

>2

比如:replace(f2,’\t’,”)

>3

比如: replace(f2,chr(13)||chr(10),”)

23、如何在字符串里加回车或者tab键

在sqlplus中执行

sql

24、树形查询

create table zj(

bm number(8),

bmmc varchar2(20),

sjbm number(8)

)

insert into zj values(1,’aaa’,0)

insert into zj values(11,’aaa1′,1)

insert into zj values(12,’aaa2′,1)

insert into zj values(111,’aaa11′,11)

insert into zj values(112,’aaa12′,11)

insert into zj values(113,’aaa13′,11)

insert into zj values(121,’aaa21′,12)

insert into zj values(122,’aaa22′,12)

insert into zj values(123,’aaa23′,12)

select bm,bmmc,sjbm,level

from zj

start with sjbm=0

connect by prior bm = sjbm

或者

select bm,bmmc,sjbm,level

from zj

start with sjbm=0

connect by sjbm = prior bm

25、快照

create snapshot SNAPSHOT_NAME

[storage (storage parameter)]

[tablespace TABLESPACE_NAME]

[refresh [fast\complete\force]

[start with START_DATE next NEXT_DATE]

as QUERY;

create snapshot snapshot_to_study as select * from TABLE_NAME@to_study;

创建角色

create role aa identified by aaa;

授权 grant create snapshot,alter snapshot to aaa;

grant aaa to emp;

create snapshot SNAPSHOT_TO_HTML refresh complete start with sysdate next

sysdate+5/(24*60*60) as select * from a@to_html;

删除 drop snapshot snap_to_html

手工刷新快照,(调用DBMS_SNAPSHOT包中的refresh过程)DBMS_SNAPSHOT.refresh(snapshot_name,refresh_type);

begin

DBMS_SNAPSHOT.REFRESH(’snap_to_html’,'c’);

end;

对所有快照进行刷新

begin

DBMS_SNAPSHOT.REFRESH_ALL;

end;

怎样执行远程的内嵌过程

begin

otherdbpro@to_html(参数);

end;

26、用户管理

create a user: database authentication

sql

sql

sql

>1

SQL

>2

create user 用户名 identified by 口令 default tablespace 表空间名;

>3

alter user 用户名 default tablespace 表空间名

>4

SQL

>5

SQL

SQL

>6

SQL

>7

如:alter user jf quota 10M on system;

27、查看放在ORACLE的内存区里的表

SQL

28、约束条件

create table employee

(empno number(10) primary key,

name varchar2(40) not null,

deptno number(2) default 10,

salary number(7,2) check salary>10000,

birth_date date,

soc_see_num char(9) unique,

foreign key(deptno) references dept.deptno)

tablespace users;

关键字(primary key)必须是非空,表中记录的唯一性

not null 非空约束

default 缺省值约束

check 检查约束,使列的值符合一定的标准范围

unqiue 唯一性约束

foreign key 外部键约束

29、查看创建视图的select语句

SQL

SQL

SQL

30、查看同义词的名称

SQL

31、用Sql语句实现查找一列中第N大值

select * from

(select t.*,dense_rank() over (order by sal) rank from employee)

where rank = N;

32 虚拟自段

>1

为表创建序列

CREATE SEQUENCE EMPSEQ … ;

SELECT empseq.currval FROM DUAL ;

自动插入序列的数值

INSERT INTO emp

VALUES (empseq.nextval, ‘LEWIS’, ‘CLERK’,

7902, SYSDATE, 1200, NULL, 20) ;

>2

按设定排序的行的序号

SELECT * FROM emp WHERE ROWNUM > 10 ;

>3

返回行的物理地址

SELECT ROWID, ename FROM emp WHERE deptno = 20 ;

33、对CLOB字段进行全文检索

SELECT * FROM A WHERE dbms_lob.instr(a.a,’K',1,1)

34. 特殊字符的插入,比如”&”

insert into a values (translate (’at{&}t’,'at{}’,'at’));

35.表管理

>1

sql

sql

sql

sql

sql

>2

sql

>3

create table a

storage(

initial 1M /*第一次创建时分配空间*/

next 1M /*第一次分配的存储空间用完时在分配*/

)

as select * from b;

>4

sql

on commit preserve rows/on commit delete rows

在Oracle中,可以创建以下两种临时表:

a 会话特有的临时表:

create global temporary table () on commit preserve rows;

会话指定,当中断会话时ORACLE将截断表

b 事务特有的临时表:

create global temporary table () on commit delete rows;

事务指定,每次提交后ORACLE将截断表(删除全部行)

c 说明

临时表只在当前连接内有效

  临时表不建立索引,所以如果数据量比较大或进行多次查询时,不推荐使用

  数据处理比较复杂的时候时表快,反之视图快点

  在仅仅查询数据的时候建议用游标: open cursor for ’sql clause’;

>5

pctfree = (average row size – initial row size) *100 /average row size

pctused = 100-pctfree- (average row size*100/available data space)

>6

sql

sql

>7

sql

>8

sql

>9

sql

>10

sql

alter table table_name drop columns continue;

>11

sql

alter table table_name drop unused columns checkpoint 1000;

alter table orders drop columns continue checkpoint 1000

data_dictionary : dba_unused_col_tabs

37. 中文是如何排序的?

Oracle9i之前,中文是按照二进制编码进行排序的。

在oracle9i中新增了按照拼音、部首、笔画排序功能。设置NLS_SORT值

SCHINESE_RADICAL_M 按照部首(第一顺序)、笔划(第二顺序)排序

SCHINESE_STROKE_M 按照笔划(第一顺序)、部首(第二顺序)排序

SCHINESE_PINYIN_M 按照拼音排序

38. 数据表中的字段最大数:

表或视图中的最大列数为 1000

39. oracle中的裸设备:

裸设备就是绕过文件系统直接访问的储存空间

40. 在Oracle服务器上通过SQLPLUS查看本机IP地址 ?

select sys_context(’userenv’,'ip_address’) from dual;

如果是登陆本机数据库,只能返回127.0.0.1

41. 在ORACLE中取毫秒?

9i之前不支持,9i开始有timestamp.

9i可以用select systimestamp from dual;

42. 将N秒转换为时分秒格式?

set serverout on

declare

N number := 1000000;

ret varchar2(100);

begin

ret := trunc(n/3600) || ‘小时’ || to_char(to_date(mod(n,3600),’sssss’),’fmmi”分 “ss”秒”‘) ;

dbms_output.put_line(ret);

end;

Published in:Miscellaneous |on 03月 7th, 2008 |No Comments »

You can leave a response, or trackback from your own site.


Parse error: syntax error, unexpected '}' in /data/htdocs/blog/wp-content/themes/quentin/comments.php on line 1