Oracle 常用plsql总结ITeye - 凯发娱乐

Oracle 常用plsql总结ITeye

2019-01-11 14:38:01 | 作者: 俊晖 | 标签: 索引,视图,序列 | 浏览: 192

删去表: 

drop table 表名; 

drop table 表名 cascade constraints; 级联删去 

trucate table 表名; 
(表结构还在,数据悉数删去,开释表所占的空间,不支撑回退,常用删去大表) 

更改表名 
rename 旧表名 to 新表名; 


索引(index) 

创立索引:Creating indexes(概念很重要对体系的功用影响非常大) 

建索引的意图便是为了加速查询速度。 

索引就相于一本的书的目录。索引点体系空间,归于表的附属物。删去一个表时,相对应的索引也会删去。索引是会进行排序。 

truncate 表时索引结构在,可是数据不存在。 

FTS  --- full table scan 全表扫描 
用索引便是为了快速定位数据:(了解时就以字典的目录为例) 
创立索引便是创立key和记载的物理方位(rowid)组成的键值对。索引是有独立的存储空间,可是和表是逻辑相关的,索引和表的联系是依靠联系,表被删去了,索引也没有存在的含义也就被删去了 

在建表时会依据表中的PK或UK主动的树立仅有性索引。 

检查表的rowid: 
select rowid,first_name from s_emp; 
rowid 界说的信息有:object block table 

每条记载都有自己的rowid 

索引由谁创立:用户,建索引后会使DML操作功率慢,可是对用户查询会进步功率,这便是咱们建索引的终究意图。 

创立一个索引: 
create index 索引名 on 表名 (字段名); 
create index testindex on test(c1, c2); 

索引分为仅有性索引,联合索引。索引中是不会保护空值的。 

哪些字段应该建索引:创立索引便是为了削减物理读,索引会削减扫描的时刻。 
常常要用where的子句的当地,所以要用索引.用不用索引,要害要看所查询的数据与一切数据的百分比,表越大,查询的记载越少,索引的功率就越高. 

替换变量:用 符号来界说替换变量支撑交互性提示,关于字符性的数字,一定要写在单引号之间 
set    verify on 
set    verify off; 
相当于开关变量,用于操控是否显现新旧的sql句子 
select id,last_name,salary from s_emp where title= job_title; 
更改交互的提示信息: 
accept  p_dname prompt 提示信息; 
界说变量: 
define p_dname=abc; 


关于oralce中发作序列(sequence) 能够主动发作仅有值 
create sequence  序列名; 

(不带参数时默以为从1 开端每次递加 1,oracle中为了进步发作序列的功率一般一次性发作20个序列放入当时会话的序列池中备用以加速功率,序列会呈现不接连的动作回退操作不会影响序列取值) 

sequence 的参数: 

increment by n   递加量 
start with n     起始值 
maxvalue n       最大值  nomaxvalue  界说的最大值 
minvalue n       最小值 
cycle|no cycle   轮回  
cache n          缓存(第一次取时会一次取多少个id存起来) 

检查sequence 示图: 
desc    user_sequences ; 
select   sequence_name , cache_size , last_number  from  user_sequences   where   sequence_name  like s_; 
select  序列名.currval  from   dual    检查当时的序列数 
select  序列名.nextval  from   dual    检查下一个序列数,它会主动给当时的序列加1 
为列:nextval          currval 
(开另一个session时取当时值不成功时,应该先取下一个值,再取当时值) 

清空当时会话的内存: 
alter system  flush   shared_pool;(履行此指令要有DBA权限,一般用户履行犯错) 

修正序列:(此指令不常用,只需了解就行不用深究) 
alter  sequence  序列名  修正项; 
删去序列sequence 
drop sequence 序列名; 


视图 

创立视图: 
creating  views 视图名; 

视图就相当于一条select 句子,界说了一个视图便是界说了一个sql句子,视图不占空间,运用view 不会进步功用,可是能简略化sql句子 
(扩展常识: oracle  8i 今后的新示图) 
MV  物化视图(占存储空间,把select 成果存在一个空间,会进步查询视图,增强实时性,可是存在改写问题,物化示图中的数据存在推迟问题,首要应用在数据仓库顶用要用于聚合表) 

运用视图的优点:操控数据拜访权限。 

怎么创立一个视图的比如: 
create or replace view test_vi as select * from test1 where c1=1; 

or replace的含义,假如view存在就掩盖,不存在才创立。 
force|no force ,基表存在是运用,不存在是则创立该表。 

此刻往表test1(base table 基表)中刺进数据时:表中没能改动,视图中的数据发作改动 
从示图中插数据时相对应的表会发作改动: 
往示图中插数据时,会直接插进基表中,检查视图中的数据时,相当于便是履行创立时的select句子。 

束缚对数据库的拜访,简化查询。 
简略视图:来自于单表,且select句子中不能包含函数,能进行DML操作。 
杂乱视图:来源于多张表,不能履行DML操作。 

视图的束缚 
with read only 视图只读束缚(O) 
with check option 不允许刺进与where条件不符的记载,类似于check束缚的功用(V) 

在select from 后也能够运用子查寻,这个写法也叫做内嵌视图 
例: 
select first_name,salary,avgsal from s_emp e,(select dept_id,avg(salary) avgsal from s_emp group by dept_id) s where e.dept_id=s.dept_id and e.salary s.avgsal; 

删去视图 drop views 示图名; 

行号(rownum) 
关于rownum: 
rownum  有个特色要么等于1 要么小于某个值, 不能直接等于某个值, 不能大于某个值。 
rownum常用于分页显现。 
rownum只用于读入内存的数据。 


找出薪酬前三名的职工 
select first_name,salary 
from (select first_name,salary from s_emp order by salary desc) 
where rownum  

列出每一个表的外键的界说,主表表名,主表字段名,子表表名,子表字段名 (画出E-R图) 
   
select c.table_name,cc.column_name, 
       p.table_name,pc.column_name, 
       p.constraint_type 
from user_constraints c,user_cons_columns cc,user_constraints p,user_cons_columns pc 
where c.constraint_name=cc.constraint_name 
and p.constraint_name=pc.constraint_name 
and c.r_constraint_name=p.constraint_name 
and c.table_name=S_EMP 
and c.constraint_type=R; 

动态生成脚本 

set head off 
set feed off 
set echo off 
spool seletab.sql 
select select * from ||table_name||; 
from user_tables; 
spool off
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表凯发娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章