Oracle的高级功能-视图+索引+pl/sql+游标+存储过程+存储函数+触发器+jdbc连接orcl

本文详细介绍了Oracle的高级功能,包括视图的创建和应用,索引的类型与使用原则,PL/SQL的基础语法如IF判断和LOOP循环,游标的使用,存储过程和存储函数的区别,以及触发器的类型。最后讲解了如何通过Java API使用JDBC连接Oracle数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Oracle的高级功能

1.视图

视图就是封装了一条复杂查询的语句,提供一个查询的窗口,所有数据来自于原表

视图可以屏蔽掉一些敏感字段,保证总部和分部数据及时统一

  • 创建视图+查询视图
---创建视图【必须有dba权限】
alter session set current_schema = SYS;
grant create  view to SCOTT;
alter session set current_schema = SCOTT;
create view v_emp as select ename, job from emp;
---查询视图
select * from v_emp;
---修改视图[不推荐]
update v_emp set job='CLERK' where ename='ALLEN';
commit;
  • 创建只读视图
---创建只读视图
create view v_emp1 as select ename, job from emp with read only;
select * from v_emp1;
-- update v_emp1 set job='CLERK' where ename='ALLEN';

2.索引

索引是帮助数据库高效获取数据的数据对象。合理的使用索引可以大大降低 i/o 次数,从而提高数据访问性能。

提高查询效率的目的,但是会影响增删改的效率。索引B-和B+树原理请看索引篇

  • 查询索引
-- 查询出用户所有表的索引
select * from user_indexes;
-- 查询用户表的索引(非聚集索引)
select * from user_indexes where uniqueness='NONUNIQUE';
-- 查询用户表的主键(聚集索引)
select * from user_indexes where uniqueness='UNIQUE';
-- 查询表的索引
select t.*,i.index_type from user_ind_columns t,user_indexes i where t.index_name = i.index_name and t.table_name='NODE';
-- 查询表的主键
select cu.* from user_cons_columns cu, user_constraints au where cu.constraint_name = au.constraint_name and au.constraint_type = 'P' AND cu.table_name = 'NODE';
-- 查找表的唯一性约束(包括名称,构成列)
select column_name from user_cons_columns cu, user_constraints au where cu.constraint_name=au.constraint_name and cu.table_name='NODE';
2.1单列索引
---创建单列索引
create index idx_ename on emp(ename);
---单列索引触发规则,条件必须是索引列中的原始值。
---单行函数,模糊查询,都会影响索引的触发。
select * from emp where ename='SCOTT';
2.2复合索引
---创建复合索引
create index idx_enamejob on emp(ename, job);
---复合索引中第一列为优先检索列
---如果要触发复合索引,必须包含有优先检索列中的原始值。
select * from emp where ename='SCOTT' and job='xx';---触发复合索引
select * from emp where ename='SCOTT' or job='xx';---不触发索引
select * from emp where ename='SCOTT';---触发单列索引。

索引的使用原则

  • 在大表上建立索引才有意义
  • 在 where子句后面或者是连接条件上的字段建立索引
  • 表中数据修改频率高时不建议建立索引

3.pl/sql

Procedure Language/SQL,Oracle对sql的过程化扩展,高级语法,其他sql不具备的。

增加了过程处理语句(如分支、循 环),使 SQL 语言具有过程处理能力。

使得PLSQL 面向过程但比过程语言简单、高效、灵活和实用。本质上是面对过程

declare
 说明部分 (变量说明,游标申明,例外说明 〕
begin
 语句序列 (DML 语句〕…
exception
 例外处理语句
End;
---声明方法
---赋值操作可以使用:=也可以使用into查询语句赋值
declare
    i number(2) := 10;
    s varchar2(10) := '小明';
    ena emp.ename%type;---引用型变量
    emprow emp%rowtype;---记录型变量
begin
    dbms_output.put_line(i);
    dbms_output.put_line(s);
    select ename into ena from emp where empno = 7788;
    dbms_output.put_line(ena);
    select * into emprow from emp where empno = 7788;
    dbms_output.put_line(emprow.ename || '的工作为:' ||</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木子津

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值