oracle视图、索引等

来源:互联网 发布:淘宝上whoo后小样真假 编辑:程序博客网 时间:2024/05/18 18:20
视图:
1、是一个数据库中的虚拟表
2、经过查询操作形成的结果
3、具有普通表的结构
4、不能实现数据的存储
5、对视图的修改将会影响实际的数据表
-- 视图创建create or replace view v_emp_1 as select empno,ename,sal from emp ;--查询视图select * from v_emp_1--删除视图drop view v_emp_1
create table product(  pro_no number(5,0),  pro_name VARCHAR2(40),  pro_place VARCHAR2(40),  pro_price NUMBER(8,2),  sup_no NUMBER)create table supplier(  sup_no number,  sup_info VARCHAR2(40))create or replace view v_emp_2 as select p.*,s.sup_info from product p, supplier s where p.sup_no(+)= s.sup_no;select * from v_emp_2
Oracle中的包:
什么是包:
包是有存储在一起的相关对象组成的pl/sql结构
用于逻辑组合相关的自定义类型、变量、游标、过程和函数
包的组成:
包的规范(又称包头)
用于定义常量、变量、游标、过程和函数等用户与程序的接口
可以在包内引用、也可以被外部程序调用
包的主体:
是包规范的实现,包括变量、游标、过程和函数等
包体内的内容不能被外部的应用程序调用
--创建包的规范 定义包头create or replace package pac_empas--声明存储过程 procedure pro_emp(empno_ NUMBER,emp_ OUT emp%rowtype);--声明一个函数function fun_emp(empno_ NUMBER)return emp%rowtype;--结束语句end;
数据库链:
是一个建立在本地的路径
用于方便地实现不同数据库之间的通信
--数据库链创建方式1create database link link_test connect to scott identified by tigerusing '(DESCRIPTION =    (ADDRESS_LIST =         (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)))         (CONNECT_DATA =(SERVICE_NAME = orcl))    )';    --数据库链创建方式1create database link link_test2 connect to scott identified by tigerusing 'TEST2';--在 数据库\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN下的tnsnames.ora文件中添加新的链接实例,格式同上。--例:TEST2 =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)))
索引:
可以建立类似目录的数据库对象,实现数据快速查询
按照索引的存储结构分类:
1、B树索引
2、位图索引
3、反向键索引
按照索引值是否唯一分类:
1、唯一索引
2、非唯一索引
按索引列分类:
1、单列索引
2、组合索引
3、基于函数的索引
建立索引的列的特点:
1、经常需要搜索的列
2、主键列
3、经常用在链接的列
4、经常需要排序的列
5、经常出现在where子句的列
触发器:
什么是触发器:
触发器是一种过程,与表关系密切,用于保护表中的数据,当一个基表被修改时,触发器自动执行
触发器可实现多表之间数据的一致性和完整性
触发器的类型:
1、DML触发器:
oracle可以在DML语句进行触发,可以在DML操作前或操作后进行触发,并且可以对每个行或语句操作上进行触发
2、替代触发器:
由于在Oracle里,不能直接对由两个以上的表建立的视图进行操作。所以给出了替代触发器。它就是oracle 8i专门为进行视图操作的一种处理方法
3、系统触发器:
oracle从8i开始,提供了第三种类型的触发器叫系统触发器。它可以在oracle数据库系统的事件中进行触发,如oracle系统的启动与关闭等
--创建一个触发器create or replace trigger tri_statistics_2--在增删改操作emp1表后触发after insert or update or delete on emp1FOR EACH ROW--增加FOR EACH ROW,说明创建的是行级触发器 begin  dbms_output.put_line('发生改变');end;set serveroutput on;--修改一条emp1表数据UPDATE emp1 set sal=2500 ;
原创粉丝点击