索引
目地:更快地检索数据。
特点:读取数据速度快,但添加数据速度慢.。
语法:
create index idx_stu_email on stu (email) ;
drop index idx_stu_email ;
select index_name from user_indexs ;
========================================================
视图
特点:视图相当于子查询。
语法:
create view v$;
select view_name from user_views ;
desc v$_dept_avg_sal_info ;
create view v$_stu as select id,name from stu ;
=========================================================
存储过程
语法:
1.创建不带参数的存储过程
create or replace procedure p
as
cursor c is
select * from emp for update;
begin
for v_emp in c loop
if(v_emp.deptno = 10) then
update emp set sal = sal +10 where current of c;
elsif (v_emp.deptno = 20) then
update emp set sal = sal + 20 where current of c;
else
update emp set sal = sal + 50 where current of c;
end if ;
end loop ;
commit ;
end ;
// 执行存储过程(两种方式)
· exec p;
· begin
p;
end;
2.创建带参数的存储过程
create or replace procedure p
(v_a in number,v_b number,v_ret out number)
is
begin
if(v_a > v_b) then
v_ret:=v_a ;
else
v_ret :=v_b ;
end if ;
end ;
// 执行带参数的存储过程
declare
v_a number:=3 ;
v_b number:=4 ;
v_ret number ;
begin
p(v_a,v_b,v_ret) ;
dbms_output.put_line(v_ret) ;
end ;
===============================================================
触发器
利用触发器实现的业务如下:
现有两个表:emp和operate_info表,当用户对emp表进行增删改操作时,触发你所创建的触发器,该触发器执行向operate_info表中插入一条信息,记录用户对emp表的操作。
语法:
创建emp表:
create table emp
(
uname varchar2(20),
action varchar2(10),
atime date
)
// 创建触发器
create or replace trigger trig
after insert or delete or update on emp for each row
begin
if inserting then
insert into emp_log values (USER,'insert',sysdate) ;
elsif updating then
insert into emp_log values (USER,'upate',sysdate) ;
elsif deleting then
insert into emp_log values (USER,'dalete',sysdate) ;
end if;
end ;
// 删除触发器
drop trigger trig ;
===========================================================
序列(Sequence):
Sequence 语法:
=====================================================================create sequence seq_testminvalue 10000maxvalue 99999999999999999start with 20000increment by 1cache 20cycleorder;
函数
函数用于返回特定的数据,当建立函数时,在函数头部必须包含 return 子句。
而在函数体内必须包含 return 语句返回的数据。我们可以使用 create function
来建立函数,实际案例:
Sql 代码
1. --输入雇员的姓名,返回该雇员的年薪
2. create function annual_incomec(name varchar2)
3. return number is
4. annual_salazy number(7,2);
5. begin
6. --执行部分
7. select sal*12+nvl(comm, 0) into annual_salazy from emp where ename=name;
8. return annual_salazy;
9. end;
10. /
如果函数创建过程有编译错误,可以使用show error;命令显示错误
在 sqlplus 中调用函数
Sql 代码
1. SQL> var income number
2. SQL> call annual_incomec('scott') into: income;
3. SQL> print income
======================================================================
包
包用于在逻辑上组合过程和函数,它由包规范和包体两部分组成。
1、我们可以使用 create package 命令来创建包。
实例:
--创建一个包 sp_package
--声明该包有一个过程 update_sal
--声明该包有一个函数annual_income
Sql 代码
1. create package sp_package is
2. procedure update_sal(name varchar2, newsal number);
3. function annual_income(name varchar2) return number;
4. end;
包的规范只包含了过程和函数的说明,但是没 过程和函数的实现代码。包体用于实现包规范中的过程和函数。
2、建立包体可以使用 create package body 命令
--给包 sp_package 实现包体
Sql 代码
1. create or replace package body sp_package is
2. procedure update_sal(name varchar2, newsal number)
3. is
4. begin
5. update emp set sal = newsal where ename = name;
6. end;
7. function annual_income(name varchar2) return number is
8. annual_salary number;
9. begin
10. select sal * 12 + nvl(comm, 0) into annual_salary from emp where ename = name;
11. return annual_salary;
12. end;
13. end;
14. /
3、如何调用包的过程或是函数
----------------------- Page 73-----------------------
当调用包的过程或是函数时,在过程和函数前需要带 包名,如果要访问其它方案的包,还需要在包名前加方案名。
如:
SQL> call sp_package.update_sal('SCOTT', 1500);
特别说明:
包是pl/sql 中非常重要的部分,我们在使用过程分页时,将会再次体验它的威力
相关推荐
包括11张表,4个视图,15个DML触发器,1个替代触发器,若干个序列和存储过程,只要运行一个SQL文件就可以了。
Oracle笔记 五、创建表、约束、视图、索引、序列、同义词、表空间 Oracle笔记 六、PL/SQL简单语句块、变量定义 Oracle笔记 七、PL/SQL 异常处理 Oracle笔记 八、PL/SQL跳转/判断/循环语句块 Oracle笔记 九、PL/...
Oracle笔记 五、创建表、约束、视图、索引、序列、同义词、表空间 Oracle笔记 六、PL/SQL简单语句块、变量定义 Oracle笔记 七、PL/SQL 异常处理 Oracle笔记 八、PL/SQL跳转/判断/循环语句块 Oracle笔记 九、PL/...
数据库基础,Oracle入门,查询基础,单行函数,分组函数,多表查询,子查询,高级查询,数据字典,Oracle数据类型,Oracle体系结构(DBA),DDL(改变表结构),DML(改变数据结构),约束,视图,索引,序列、同义...
基本的sql语法,触发器,存储过程,存储函数, 流程控制,游标,异常处理,记录类型,视图, 控制用户权限,高级子查询,set运算符, 基本的sql_Select语句 运算符,多表联查,排序,组函数,序列,索引,同义词, ...
Oracle常用命令5(同义词、视图、索引) Oracle常用命令6(PL/SQL) Oracle常用命令7(游标) Oracle常用命令8(过程) Oracle常用命令9(函数) Oracle常用命令10(程序包) Oracle常用命令11(触发器) ...
第八章:管理索引、视图与序列使用约束 索引概述 B树索引(默认) 位图索引 函数索引 视图 序列 利用OEM操作 第九章:备份与恢复 脱机备份与恢复 联机备份与恢复 逻辑备份与恢复 第十章:sqlplus基础 ...
这是我学习Oracle时,老师给的讲义,包含了Oracle从入门到高级应用的全部资料。 ...Day09-存储过程.pdf Day10-变量定义和循环控制.pdf Day11-plsql游标和函数.pdf Day12-触发器.pdf Day13-索引.pdf
创建数据库表、序列、索引、视图和用户账户 构造SQL语句、过程、查询和子查询 使用虚拟专用数据库和透明数据加密优化安全性 使用SQL*oader乘10racle Data Pump导入和导出数据 使用SQL重放、变更管理和缓存结果 使用...
Oracle数据库体系结构,SQL基本查询,修改SQL数据与SQL*Plus命令,PL/SQL编程基础,用户、模式和表,高级查询,过程、函数和程序包,表类型,索引,视图、序列和同义词,触发器,事务与并发控制,安全,管理存储结构...
18.oracle 序列(sequence) 39 19.oracle 索引 40 20.oracle管理权限和角色 42 21.PL/SQL 47 (1)存储过程简单版本 47 (2)存储过程升级版本 49 (3)函数 50 (4)包 50 (5)触发器 51 PL/SQL语法数据类型 57 (6)PL/SQL进阶...
第二十章 存储过程 第二十一章 触发器 第二十二章 事务(数据库系统概论) 第二十三章 用户管理 第二十四章 备份 恢复 SQLLoader 第二十五章 数据库设计范式 第二十六章 数据库设计工具 第二十七章 对象关系...
3Oracle 外部表访问参数59Oracle 索引组织表59Oracle 索引组织表选项59Oracle 视图60Oracle 函数或过程61Oracle 数据库链接62Oracle 索引63Oracle Java65Oracle 实体化视图66Oracle 实体化视图日志68Oracle 包69...
第17章 创建和管理表、视图、索引、群集和序列 第18章 Oracle基本安全 第Ⅲ部分 高级内容 第19章 高级安全性—— 虚拟专用数据库 第20章 使用表空间 第21章 用SQL*Loader加载数据 第22章 使用Data Pump导入和导出 第...
创建数据库表、序列、索引、视图和用户账户 构造SQL语句、过程、查询和子查询 使用虚拟专用数据库和透明数据加密优化安全性 使用SQL*oader乘10racle Data Pump导入和导出数据 使用SQL重放、变更管理和缓存结果 ...
①:存储过程 ②:函数 ③:自主事务处理 ④:包规范|包主体 十一.触发器|内置包 ①:触发器类型 ②:触发器原理 ③:new和old 两个行类型变量 ④:递归 ⑤:内置包 十二.导入导出 ①:导入导出/整个DB/表空间/表/...
orcale 11g的学习ppt,内容涵盖orcale的各个方面,对于初学者很有帮助,易懂易入门,章节如下 第1章 Oracle 11g数据库简介.ppt ...第11章 存储过程与触发器.ppt 第12章 用户与权限.ppt 第13章 备份与恢复.ppt
oracle基础教案包括:数据库基本知识、数据库安装与配置、数据查询语言、多表查询、数据库函数、数据库操纵语言、数据库控制语言、数据库定义语言、数据库事务、视图、序列、索引、触发器、游标、函数、存储过程、...