分享
 
 
 

oracle学习笔记

王朝oracle·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

1、case表达式

select country_name,region_id, case region_id when 1 then 'europe' when 2 then 'america' when 3

then 'asia' else 'other' end continent from countries where country_name like 'I%';

在9i中提供的case表达式,可以在sql语句中达到if then else逻辑。

2、order by

order by子句中可以使用列名,列别名,或者列的位置。位置必须是select-list表达式的数目

select name,sex from v_table order by 2

3、oracle单行函数

通用函数

nvl(expr1,expr2) 判断第一个字符是否null,是显示expr2

nvl2(expr1,expr2,expr3) 判断第一字符是否null,是显示expr3,不是显示expr2

nullif(expr1,expr2)如果两个字符相等,则返回空,否则返回expr1

coalesce(expr1,expr2,...exprn)判断每个参数是否未空,直到不为空显示出来,如果都是空则报错

日期函数

to_number,to_date,

to_char(date,'format-model')

format-model:

{

yyyy full year in numbers

year year spelled out

mm two-digit value for month

month full name of the month

mon three-letter abbreviation of the month

dy three-letter abbreviation of the day of the week

day full name of the day of the week

dd numeric day of month

}

to_char(number,'format-model')

{

9 prepresents a number

0 forces a zero to be displayed

$ places a floating dollar sign

L 使用本地货币符号

. prints a decimal point

, prints a thousand indicator

}

months_between

add_months

next_day

last_day

round

trunc

字符函数

lower,upper,initcap(大小写转化函数)

initcap('SQL Cource') result is Sql Cource

concat,substr,length,instr,lpad|rpad,trim,replace

concat字符连接,等于||

substr截断字符串substr(column,1,5)

substr(column,-1,5)从右边开始取

length字符长度

instr字符所在的位置

trim压缩空格

lpad左填充

rpad右填充

数字函数

round四舍五入round(45.926,2)---45.93

trunc截取数字trunc(45.926,2)---45.92

mod求余数mod(1500,200)--100

转换函数

4、sql*plus

set wrap off

set linesize 1000

5、case when else end

6、decode简化的if then else

7、oracle中对层次结构数据的递归查询

create table Dept(

DepartNO varchar2(10),

DepartName varchar2(20),

TopNo varchar2(10));

insert into Dept values('001','董事会','0');

insert into Dept values('002','总裁办','001');

insert into Dept values('003','财务部','001');

insert into Dept values('004','市场部','002');

insert into Dept values('005','公关部','002');

insert into Dept values('006','销售部','002');

insert into Dept values('007','分销处','006');

insert into Dept values('008','业务拓展处','004');

insert into Dept values('009','销售科','007');

connect by prior start with

例子:

select departname,level,sys_connect_by_path(departname,'|') from dept

connect by prior departno = topno

start with departname='董事会'

departname level

市场部 2

公关部 2

销售部 2

select departname,level,sys_connect_by_path(departname,'|') from dept

where level=2

connect by departno =prior topno

start with departname='总裁办'

Sys_connect_by_path(x,c)x是列,从是单字符,适用层次化查询。

prior位置表示是往父亲节点搜索还是往子节点搜索

level表示搜索深度

8,insert with check option

9、插入的值显示的定义为default值

insert into departments(department_id,name)

values(300,default)

name值由表定义时的default值填充,强制用当前column定义的default值

10、merge语句,要不更新,要不插入

merge into table_name ....

merge into ttt ...

when metched then update set

...

when not matched then

insert values....

11、隐式事务

没有提交的数据,别人不能修改

通过回滚段实现读一致性

语句级

12、rollup、cube等分析函数

select decode(cust_gender,'F','男','M','女') cust_gender,count(cust_gender)

from sh.customers

group by cust_gender

union select '合计'cust_gender,count(cust_gender) from sh.customers

order by cust_gender desc

普通的写法

select cust_gender gender,nvl(cust_marital_status,'unknow') marital_status,count(*),grouping(cust_gender),grouping(nvl(cust_marital_status,'unknow'))

from sh.customers

group by rollup(cust_gender,nvl(cust_marital_status,'unknow'))

rullup写法

13、rank、dense_rank函数

select department_id,rank(10000) within group(order by salary desc nulls last) dense_rank_10k

from hr.employees

group by department_id

判断10000在salary中排在第几,按dept分组

select department_id,salary,rank() over(partition by department_id order by salary desc) dense_rank_10k

from hr.employess列出在部门排第几

dence_rank在并列关系是,相关等级不会跳过。rank则跳过。

14、select length('HELLO WORLD!')-length(replace(translate('HELLO WORLD!','L',chr(13)),chr(13),'')) from dual;

判断字符串中的某个字符的个数

select length('HELLO WORLD!')-length(replace('HELLO WORLD!','L')) from dual;

更简洁

select (length('你好你好LLO WOR你好LD!')-length(replace('你好你好LLO WOR你好LD!','你好')))/length('你好') from dual;

可以同时处理汉字和英文

15 alter table add / modify cName

drop column cName

涉及到数据删除时所需要的时间,可以使用set unused使column无用,在系统空闲的时候可以drop column

delete删除时做很多日志记录,效率低下

truncate是ddl,不能rollback!速度效率都高,同时也清空索引和存储空间还原

comment on table tName is 'comment content';给对象增加注释

查看注释信息:all_col_comments,user_col_comments,all_tab_comments,user_tab_comments

16、约束 including constraints 数据完整性 列完整性,实体完整性

约束类型:(列一级的 not null,check),unique,primary key,foreign key

create table test(

id int not null,

lname varchar(20),

rname varchar(20),

rid int not null,

constraint test_u_1 unique(lname,rname)

)

alter table test add constraint pk_test primary key(id);增加主键

alter table test add constraint fk_test foreign key(rid) references test1(id);

级联删除 on delete cascade,或者on delete set null

check 不能用系统函数、sequence、查询

alter table drop constraint c_name

alter table disable/enable constraint c_name

alter table drop column col_name cascade constraint删除列的时候连constraint一块删除

查看constaint select * from user_constraints/user_cons_columns

17、视图view

view是一个逻辑结构,不含有数据

create force view viewname as ...

force 强制视图编译通过,不管后面的select语句是否成功

with check option constraint ...

with read only constraint ...

透过视图可以发生数据改变,改变基表!带有group by,函数,rownum,distinct等不可改变

18、greatest、least

greatest(p1,p2,p3...)找出其中最大的

least(p1,p2,p3...)找出最小的

coalesce计算多个值的非空值

coalesce(null,null,'a')返回a

coalesce(overtime,faultreorttime)如果同一行中overtime为null,faultreporttime不为null返回faultreporttime

greatest、least函数不将日期格式的直接量串作为日期处理,还是当作串处理

extract代替to_char来选择日期值的成分(如从一个日期中选择月份和天)

extract(Month from sysdate)

BUN_TO_NUM(1)二进制转换成十进制

translate(string,if,then)在一个字符串中进行逐字符的替换

translate(7671234,234567890,'BCDEFGHIJ') 结果 GFG1BCD

19、not in、not exists和外连接

一般情况下用外部连接代替not in,可以极大的提高性能。not exists也可以替代not in,只是性能提升不够。

select vipid,vipName from t_vip where vipid not in (select v.vipid from t_vip v,t_vip_detail d where v.vipid=d.vipid)

select v.vipid,v.vipName from t_vip v where not exists (select 'x' from t_vip_detail d where v.vipid=d.vipid)

select t_vip_detail.vipid,t_vip.vipName from t_vip left join t_vip_detail on t_vip.vipid=t_vip_detail.vipid where t_vip_detail.vipid is null

以上三个效果一样

20、union(并)、intersect(交)和minus(差)

union相同的只显示一次,对这中重复现象可以用union all

intersect包含在两个查询基表都出现的

in子句的优选级比union高

21、建立临时表

create global temporary table tableName()

on commit preserve rows子句指定是否在整个会话期间都存在

on commit delete rows子句指定是否在事务处理完成时删除它的行

22、索引编排表(Index-Organized Table)

根据表的主键列对数据进行排序,索引编排表存储数据时就像把整个表存储在一个索引中那样。

create table命令的organization index子句来建立一个索引编排表

23、分区表

a、改善表的查询性能

b、使表更容易管理

c、备份和恢复操作会执行得更好

对表分区可以使用create table子句的partition by range

eg:partition by range(CategoryName)(

partition part1 values less than ('B')

tablespace part1_ts,

partition part2 values less than (MAXVALUE)

tablespace part2_ts

);

by range 是范围分区

by hash 是散列分区

by list 是列表分区

24、索引

构造较少的索引但每个索引中列数较多比构造较多索引但每个所以列数较少更好。

索引类型:一般索引(Not Sorted 传统索引(B树索引)对于包含有大量编号数据的列是非常有用的)、

位图索引(bitmap)、唯一索引(unique)、函数索引(function)

表空间:增加表空间的空间,可以扩展相应的数据文件或者增加新

[1] [2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有