oracle索引、视图、存储过程、触发器、oracle数据类型

1、索引:索引是帮助用户在表中快速地找到记录的数据库结构。

a) 自动创建索引:当你为一张表定义主关键或唯一性约束条件时一个惟一的索引就已经被创建了。

b) 手动创建索引: 用户可以自己创建索引。

创建索引:create  index  索引名 on 表名 (列名1,列名2);

例如:

何时用到索引:表很大,并且在where中经常用到,该列的值取值范围很大时;

不需要索引:表很小时 用不到索引,并且经常更新时;

单一索引与复合索引:

------------单一索引:create index 索引名 on 表名 (列名);

------------复合索引:creat index 索引名 on   表名(列名1,列名2);例如:Create Index i_deptno_job on emp(deptno,job); ------------在emp表的deptno、job列建立索引。

 select * from emp where deptno=66 and job=‘sals‘ ->走索引。

select * from emp where deptno=66 -------------走索引。

select * from emp where job=‘sals‘ ---------------进行全表扫描、不走索引。

如果在where 子句中有OR 操作符或单独引用Job 列(索引列的后面  列) 则将不会走索引,将会进行全表扫描。

2、视图:视图是由一个或若干个基表产生的数据的集合,它不占用存储空间。

----------------------视图中并没有存放数据,而仅仅是一条SELECT语句。

创建视图:create or replace view 视图名 as select * from 表名 where  条件;

例如:

查看视图:select* from 视图名;

例如:

--------------------删除视图: Drop view abc;

3、存储过程:

过程procedure 也叫存储过程,是由SQL语句和PL/SQL语句组合在一起为执行某一个任务的一个可执行单位。我们在使用时可以调用,过程没有返回值。

(1)无参:

create or replace procedure  过程名 as

声明语段;

begin

执行语句段;

exception

异常处理语句段;

end;

(2)带参数过程的创建

①参数类型

在PL/SQL过程中,可以有3中类型的参数。

in 参数:读入参数,主程序向过程传递参数值。

Out 参数:读出参数,过程向主程序传递参数值。

in out参数:双向参数,过程与主程序双向交流数

带参创建:

create or replace procedure  过程名(

参数1[in|out|in out]数据类型

[,参数2[in|out|in out] 数据类型]

……

[,参数n[in|out|in out] 数据类型]

)

(is|as)

声明语句段;

Begin

执行语句段;

Exception

异常处理语句段;

End;

举例:

create or replace procedure runbyparmeters_1 (
isal in emp.sal%type,sjob in varchar)
as icount number;
begin
select count(*) into icount from emp where sal>isal and job=sjob;
DBMS_OUTPUT.PUT_LINE(‘符合条件的记录有 ‘|| icount || ‘条‘);
exception
when too_many_rows then
DBMS_OUTPUT.PUT_LINE(‘返回值多于1行‘);
when others then
DBMS_OUTPUT.PUT_LINE(‘在RUNBYPARMETERS过程中出错!‘);
end;

在可视化工具里面的 procedure文件夹可以查看过程有没有建立成功;没成功会有一个差号

然后在plsql中传参:

PLSQL中执行

declare

realsal emp.sal%type;

realjob varchar(40);

begin

realsal:=1100;

realjob:=‘CLERK‘;

runbyparmeters_1(realsal,realjob);

-- runbyparmeters_1(sjob=>realjob,isal=>realsal);   

END;

4、触发器:

触发器是一种特殊类型的存储过程,由一些SQL语句组成,主要用于执行强制性的业务规则或要求,但不返回结果。

触发事件或语句:引起触发器被激发的SQL语句,是对指定表执行的INSERT、UPDATE或DELETE语句。

触发器限制:一个布尔表达式,当触发器激发时该条件必须为TRUE。触发器的限制是用WHEN子句来指定。

--创建触发器

create or replace trigger tri_test

before--触发之前

update or delete--更新或删除

on emp

for each row--对行进行操作

begin

dbms_output.put_line(:old.sal);--old表示数据库旧值

insert into demo(id) values (:new.sal);--new新值

end;

update emp set sal=888 where empno=7788;

commit;

先执行创建触发器代码后,再执行最后的更新语句。当更新emp表后将会输出数据库中本来存放的值,并且触发添加语句在demo表中插入一条语句。

例如:

create or replace trigger tri_test

before

update or delete or insert

on emp

for each row

begin

case

when updating then

raise_application_error(-20000,‘今天不能修改‘);

when inserting then

raise_application_error(-20001,‘今天不能插入‘);

when deleting then

raise_application_error(-20000,‘今天不能删除‘);

end case;

end;

修改时触发触发器

update emp set sal=777 where empno=7788;

insert into emp (empno) values (123);

commit;

如图:

5、数据类型

--创建表

create table userinfo

(

id number(6,0),

usernam varchar2(20),

userpwd varchar2(20),

email varchar2(30),

regdate date

);

删除表

--删除表的结构

drop table table_name;

 

添加字段

alter table table_name add column_name datatype;

table_name是表名称,  column_name是列名称,  datatype是数据类型

4.修改表字段名称和表名

--给字段改名

alter table table_name rename column column_name To new_column_name;

--修改表的名字

rename table_name to new_table_name;

5.删除字段

alter table table_name drop column column_name;

6.更改字段长度,类型

eg:修改remarks字段修改字段的长度

alter table userinfo modify remarks varchar2(150);

eg:修改字段类型

a.如果表中没有数据

alter table 表名 modify(字段名1 类型,字段名2 类型,字段名3 类型.....)

b.如果表中有数据(分为四步)

--修改原字段名

ALTER TABLE 表名 RENAME COLUMN 字段名A TO 字段名B;

--添加一个和原字段同名的字段"字段名A",添加的字段

ALTER TABLE 表名 ADD 字段名 目标类型;

--将"字段名B"的数据更新到新建字段"字段名A"中

UPDATE 表名 SET 字段名A = TIRM(字段名B);

--更新完成后,删除原备份字段"字段名B"

ALTER TABLE 表名 DROP COLUMN 字段名B

原文地址:https://www.cnblogs.com/yang1182/p/9584437.html

时间: 2024-08-29 21:02:11

oracle索引、视图、存储过程、触发器、oracle数据类型的相关文章

事务视图存储过程触发器数据备份

目录 事务 事务的特性 原子性(Atomicity): 一致性(Consistency): 隔离性(Isolation): 持久性(Durability): 存储引擎 InnoDB :保时捷引擎 MyIsam:奔奔引擎 视图 使用 增加视图 删除视图 触发器 存储过程 创建 函数 数据库的备份 语法 示列 事务 通俗的说,事物指一组操作,要么都执行成功,要么都执行失败 使用事务: start transactino sql语句 commit/rowllback # 演示: mysql> sele

关于oracle的函数,存储过程,触发器,序列,视图,左右连接一些的应用 带案例

CREATE TABLE STUDENT( --创建学生表  ID NUMBER(10) PRIMARY KEY,   --主键ID  NAME VARCHAR2(20),  CLASSNAME VARCHAR2(20) --班级ID);CREATE SYNONYM STU FOR STUDENT; --给学生表STUDENT创建别名(同义词)INSERT INTO STUDENT VALUES(1,'Tom',1);INSERT INTO STUDENT VALUES(2,'Jack',1);

MySQL笔记---视图,存储过程, 触发器的使用入门

大二学数据库的时候,只是隐约听到老师提起过视图啊,存储过程啊,触发器啊什么的,但只是淡淡的记住了名字,后来自己做些小项目,小程序,也没有用上过,都只是简单的建表,关联表之类的,导致我对这些东西的理解只能停留在名称的阶段.最近看完了一本薄薄的小书叫<MySQL必知必会>,记了不少笔记,也自己上手实践了一番,总算是了解了些皮毛. 下面通过实例来具体了解这几个东西,首先我的样例表是这样的. 视图: 什么是视图? 视图是虚拟的表,本身并不包含数据,通过一个例子,来更好地理解视图: 假设上述表中,我需要

Oracle job procedure 存储过程定时任务(转自hoojo)

Oracle job procedure 存储过程定时任务 oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. 一.查询系统中的job,可以查询视图 --相关视图 select * from dba_jobs; select * from all_jobs; select * from user_jobs; -- 查询字段描述 /* 字段(列) 类型 描述 JOB NUMBER 任务的唯一标示号 LOG_USER VARCHAR2(30) 提交任务的用户 P

【转】Oracle job procedure 存储过程定时任务

原文:Oracle job procedure 存储过程定时任务 oracle job有定时执行的功能,可以在指定的时间点或每天的某个时间点自行执行任务. 一.查询系统中的job,可以查询视图 --相关视图 select * from dba_jobs; select * from all_jobs; select * from user_jobs; -- 查询字段描述 /* 字段(列) 类型 描述 JOB NUMBER 任务的唯一标示号 LOG_USER VARCHAR2(30) 提交任务的用

[转]Oracle 索引质量分析

http://blog.csdn.net/leshami/article/details/23687137 索引质量的高低对数据库整体性能有着直接的影响.良好高质量的索引使得数据库性能得以数量级别的提升,而低效冗余的索引则使得数据库性能缓慢如牛,即便是使用高档的硬件配置.因此对于索引在设计之初需要经过反复的测试与考量.那对于已经置于生产环境中的数据库,我们也可以通过查询相关数据字典得到索引的质量的高低,通过这个分析来指导如何改善索引的性能.下面给出了演示以及索引创建的基本指导原则,最后给出了索引

【Oracle】第三章索引视图序列

第三章索引视图序列 序列是用来生成唯一,连续的整数的数据库对象.序列是用来自动生成主键或唯一键的值. CREATE SEQUENCE  sequence_name START WITH  integer INCREMENT BY  integer MAXVALUE   integer|nomaxvalue MINVALUE    integer|nominvalue CYCLE|NOCYCLE CACHE  integer|nocache; START WITH     指要生成的第一个序列号,

oracle查询优化,存储过程select表循环插入另一个表,以及索引重建

查询语句pl/sql中用F5优化语句 ORACLE的explain plan工具的作用只有一个,获取语句的执行计划1.语句本身并不执行,ORACLE根据优化器产生理论上的执行计划2.语句的分析结果存放在表PLAN TABLE中 select * from TABLE where NOWTIME >=to_date('20160101','yyyy-mm-dd') and NOWTIME < to_date('20160102','yyyy-mm-dd') 通过截图显示select语句是走索引的

视图,触发器,事务,存储过程,函数与流程控制,索引

一.视图 1.什么是视图 虚拟表:在硬盘中没有的,通过查询在内存中拼接的表 视图:通过查询得到一张虚拟表,保存下来,下次可直接使用 2.为什么要用视图 如果要频繁使用一张虚拟表,可以不用重复查询 3.如何用视图 create view teacher2course as select * from teacher inner join course on teacher.tid = course.teacher_id; 4.删除视图 drop view teacher2course; 5.强调

MySQL 之 视图、触发器、存储过程、函数、事物与数据库锁

浏览目录: 1.视图 2.触发器 3.存储过程 4.函数 5.事物 6.数据库锁 7.数据库备份 1.视图 视图:是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据 视图有如下特点; 1. 视图的列可以来自不同的表,是表的抽象和逻辑意义上建立的新关系. 2. 视图是由基本表(实表)产生的表(虚表). 3. 视图的建立和删除不影响基本表. 4. 对视图内容的更新(添加.删除和修改)直接影响基本表. 5. 当视图来自多个基本表时,不允许添加,修改和删除数据. 1.创建