- 浏览: 540113 次
- 性别:
- 来自: 南京
-
文章分类
- 全部博客 (168)
- java基础 (22)
- 面向对象编程 (2)
- 集合 (4)
- I/O操作 (5)
- 多线程 (9)
- java高级特性 (8)
- 网络编程 (0)
- sql基础 (23)
- JDBC (1)
- 数据结构与算法 (20)
- 软件测试 (1)
- 程序员小知识 (2)
- WEB开发 (15)
- 其他 (11)
- Struts (3)
- Hibernate (8)
- Spring (4)
- 设计模式 (5)
- java基础快速总结 (1)
- 正则表达式 (3)
- UML (3)
- XML操作 (0)
- 编译原理 (1)
- tomcat (2)
- EJB (0)
- javascript (4)
- 个人系统设计 (1)
- Extjs (3)
- 面试题总结 (4)
- 技术大综合 (2)
- 最经需要搞好多的开源软件,集中下 (0)
- java重写hashcode的分析(转) (1)
最新评论
-
jerry.zhao:
ybzshizds 写道这种用工厂模式解决的办法其实还是有一个 ...
InitialContext和lookup -
小土豆内特:
static class Queue
java实现队列 -
leizisdu:
感谢楼主讲解、分享!
工厂模式 -
kchiu:
写了没什么用
EXT组件xtype简介 -
u010271301:
大哥 能描述的跟详细点么?
浅谈write(byte[] b)和write(byte[] b,int off,int len)的区别
视图的优点
视点集中、简化操作、定制数据、合并分割数据、逻辑数据独立性、安全性
创建视图
create [or replace] [force/noforce] view view_name
as 查询语句
[with check option[约束]]
[with read only[约束]]
注意对视图的插入、删除、修改最后的结果数据还是要符合视图的约束
触发器
作用:安全性、审计、实现复杂的数据完整性规则、实现复杂的非标准的数据库相关的完整性规则、自动计算数据值
oracle触发器种类:DML触发器、替代触发器(只能用于视图上)、事件触发器(DBA使用的对于数据库上的)
建立触发器
create [or replace] trigger 触发器名
触发时间{before|after|instead of} 触发事件1 {or 触发事件2...}
on表名
when 触发条件
[for each row]
触发级别
如果是for each row 则变成行级触发器、如果不加就是语句级触发器
注意:
触发器不能执行 commit、rollback、savepoint而且不能调用执行这些语句之一的函数或过程
触发器不可以声明long或long raw类型变量
触发器不可以在定义它的表上执行DML操作
DML中有谓词
inserting、deleteing、updating
:new代表新行
:old代表旧行
when 条件中new和old不需要带:
alter trigger dml_log disable
alter trigger dml_log enable
drop trigger dml_log
游标
分为显式游标(多条语句必须要声明称这样)和隐式游标(所有语句都声明了一个隐式游标)
首先open语句初始化一个游标,然后重复执行fetch语句取出已检索到的数据,或是使用bulk collect批量选取数据。当处理完结果集最后一行数据时就可以close语句关闭游标。此外还可以同时打开多个游标并发处理多个查询操作。
oracle游标有4个属性
%ISOPEN 判断游标是否被打开
%FOUND %NOTFOUND 判断游标所在行是否有效
%ROWCOUNT 返回当前位置为止游标读取的记录行数
声明
CURSOR cursor_name [(parameter...)][RETURN return_type] IS select_statement;
注意:游标是可以接受参数的,且游标的形式参数必须都是IN模式。即参数只能由于传进值,不能对其进行赋值。此外不能给游标参数加NOT NULL约束
有时候希望能够对满足特定条件的记录逐一进行更新处理,这时可以使用带FOR UPDATE子句的游标。
如
Cursor c is
select username,job from users where sal<3000 for update of sal;
begin
open c;
while c%FOUND loop
update users set sal=sal+3000 where CURRENT OF c;
end loop;
close c;
commit;
end;
可以使用子查询代替显式游标
游标变量
TYPE ref_type_name IS REF CURSOR [return_type]
强类型需要指定返回类型,弱类型不需要
BULK COLLECT子句批量地从游标变量中取得数据放到一个或多个集合中
数据库事务
原子性、一致性、独立性、持久性
设置事务:SET_TRANSACTION
开始事务:START_TRANSACTION
COMMIT、ROLLBACK、SAVEPOINT
SAVEPOINT 事物保存点名称
ROLLBACK是返回所有的事物
ROLLBACK to 事物保存点
oracle指定2种事务:访问级别(READ ONLY,READ WRITE)、隔离级别
标准的隔离级别,按限制程度从少到多为
未提交读(READ UNCOMMITTED)
提交读(READ COMMITTED)
重复读(REPEATABLE READ)
序列化(SERIALIZABLE)串行
ORACLE中只支持2种:未提交读(READ UNCOMMITTED)和序列化(SERIALIZABLE)
事物遇到的异常主要有:错读、非重复读、假读。
事物级别越高,对性能影响越大
如设置:SET TRANSACTION ISOLATION LEVEL READ COMMITTED
锁:LOCK TABLE 锁住整张表或SELECT FOR UPDATE [NOWAIT] [OF]锁住特殊行
CURRENT OF 子句引用从游标中取出最新的行数据
如UPDATE employees set sal=newsal where CURRENT OF cl;
LOCK TABLE Employees IN ROW SHARE MODE NOWAIT
事物日志也叫重做日志
oracle可以在2中模式下运行
ARCHIVELOG保存所有日志
NOARCHIVELOG不保存所有日志
oracle数据库由2种类型的文件组成
结合在一起构成表空间的数据文件
结合在一起构成重做日志的系列的数据文件
集合
联合数组、嵌套表、变长数组
联合数组
TYPE table_type_name IS TABLE OF
scalar_type [NOT NULL] INDEX BY index_datatypes;
其中index_datatypes既可以是数字也可以是字符
调用联合数组前要先给联合数组元素赋值。
嵌套表
TYPE table_name IS TABLE OF table_type [NOT NULL];
嵌套表的下标是从1开始的
嵌套表变量在定义时,必须对其进行初始化。
变长数组
TYPE type_name IS [VARRAY | VARYING ARRAY](max_size) OF element_type [NOT NULL]
自定义数据类型
CREATE OR REPLACE TYPE item_type as OBJECT(id varchar2(20),name varchar2(40));
集合类型转换用CAST(itemlist AS itemArray)
变长数组可以转换成嵌套表,反之亦可
集合的属性
COUNT、EXISTS FIRST LAST LIMIT NEXT PRIOR
集合的方法
DELETE() 、EXTEND()、TRIM()
其中
DELETE全部
DELETE(x)第几
DELETE(x,y)之间
EXTEND加一null
EXTEND(x)加x个null
EXTEND(x,y)加x个y
TRIM
TRIM(2)
集合操作符
SET 消除重复内容
MINUS UNION [DISTINCT] 获得并集[不包括重复]
MULTISET INTERSECT交集
MULTISET EXCEPT差集
多级集合(嵌套表和变长数组相互包含或包含自身)
过程、函数、包
函数:返回单个值,可以作为表达式的一部分
存储过程:不返回值,不能作为表达式的一部分
CREATE [OR REPLACE] PROCEDURE PROC_NAME
(
[IN|OUT|IN OUT|NOCOPY] DATATYE
)
IS|AS
数据定义
BEGIN
执行语句
EXCEPTION
异常处理
END PROC_NAME;
存储过程有3种参数形式:IN 、OUT、IN OUT、NOCOPY(引用传递而不是值传递)
sqlplus中调用存储过程:
EXECUTE dispaly_systimes();
或
SET SERVEROUTPUT ON;
CALL dispaly_systimes();
传递参数方式:位置传递、名称传递、组合传递
函数
CREATE OR REPLACE FUNCTION f_name(参数)
return datatype
as
定义数据类型
BEGIN
语句执行
EXCEPTION
异常执行
END f_name;
包:创建包分2个步骤:包说明和包体
create [or replace] package package_name IS
定义类型或函数或存储过程
END package_name
create [or replace] package body package_name IS
实现
END package_name
pl/sql优化
1.使用case替代多个查询
2.避免使用"*"
3.查询表顺序:没有索引及oracle没有对表进行统计分析的情况下,oracle会按表出现的顺序进行连接,因此因为表的顺序不对会产生十分耗服务器的数据交叉。 如果对表进行了统计分析,oracle会自动先小表后大表。
4.使用表的别名
5.用where子句替换having子句
6.减少对表的查询
7.where后面的条件顺序影响
8.不推荐使用not in(不能应用表的索引)和in
9.<>和!=永远不会使用到索引 可以使用a>0 or a<0
10.is null和 is not null 也不会使用索引
11.like操作符,如果%或_作为查询的第一字符,也不会使用索引
12.union没有union all效率高
13.用表连接替换exists
14.使用decode函数
15.尽量多使用commit (可以释放资源)
16.truncate可以替换delete
17.利用索引
索引使用资本原则
查询用不到,就不要建立索引
查用的查询表需要建立索引
包含的列数相对较少的表
表中的大多数查询都包含相对简单的where子句
选择where子句频繁使用关键字作为索引列
选择sql语句频繁用于表连接的关键字作为索引列
不要用那些频繁修改的列作为索引列
有函数的最好建立函数索引
对于低基数的列,并包含or等逻辑运算,考虑使用位图索引,对于大量行的表中返回大量的行时也可以考虑位图索引。
有时候复合索引比单索引更好的性能
发表评论
-
mysql基础知识
2015-06-27 11:47 4241.BIT[M] 位字段类型,M表示每个值的位数,范围从1 ... -
decode及nvl等函数的区别
2010-10-26 21:31 1995NULL指的是空值,或者非法值。NVL (expr1, exp ... -
三种ORACLE锁机制细化解析
2010-09-19 08:21 1884ORACLE锁机制主要是为了 ... -
常用的学生、课程、成绩、教师表的查询
2010-09-10 08:42 3586Student(S#,Sname,Sage,Ssex) 学 ... -
oracle日期操作方法
2010-09-01 07:54 1112在oracle中有很多关于日期的函数,如: 1、add_ ... -
IO的几个概念
2010-08-24 13:00 2472在数据库优化和存储规划过程中,总会提到IO的一些重要概念,在这 ... -
Oracle基础二
2010-08-22 17:22 1680数据表基本操作 数据库的数据逻辑上是存储在表空间中,物 ... -
oracle基础一
2010-08-20 17:38 1346主码、外码 关系型数 ... -
数据库的查询优化方法分析
2010-08-18 17:26 36971. 尽量不要使用 or,使 ... -
sql经典语句
2010-08-18 10:31 21611.按姓氏笔画排序:Select * From TableNa ... -
sql中的注意点
2010-06-07 14:00 9921.注意not and or 优先级,先not ,再 and ... -
左连接查询的思考
2010-06-07 13:58 1183左连接查询 select u.Group_Id,u. ... -
oracle总结
2010-05-28 13:40 1514一.Oracle数据库中常用的数据类型 varchar2(长 ... -
ORACLE和SQL语法区别归纳
2010-05-28 13:36 1604SQL, ORACLE, 语法, 归纳, S ... -
isnull函数和 字段名 is null的区别
2010-05-27 16:21 2018select case when sc_amount is n ... -
sql语句常见总结
2010-05-11 11:33 1037主要是一些常用的,但是容易出错的 1.数据表别名的嵌套查询 ... -
union和unionall的区别
2010-05-07 10:11 1669sql union用法和sql union all用法,sql ... -
测试子查询
2010-04-21 16:42 13create table test( id varchar(1 ... -
呵呵,建标语句老是记不住,记下啊
2010-04-21 16:29 1000好记性不如烂键盘 建表 create table test ... -
项目实战之sql的order by用法
2010-04-21 15:02 2114表名:projectinfo 字段名 project_id ...
相关推荐
oracle基础教程 课程说明 1 课程介绍 1 课程目标 1 相关资料 1 第1章 ORACLE数据库概述 2 1.1 产品概述 2 1.1.1 产品简介 2 1.1.2 基本概念 3 1.2 ORACLE系统结构 4 1.2.2 ORACLE物理结构 4 1.2.3 系统全局区 6 ...
以下将基于这些信息,详细阐述Oracle数据库的基础知识。 ### Oracle Database 11g 概述 #### 一、Oracle Database 简介 Oracle Database 是一款由美国Oracle公司开发的关系型数据库管理系统(RDBMS)。它提供了...
3. 配置 Oracle 网络监听器和数据库实例。 4. 创建数据库和 sys、system 用户。 5. 配置数据库参数和安全设置。 Oracle 数据库概念 Oracle 数据库是一种关系型数据库管理系统,使用 Structured Query Language...
对于初学者来说,掌握Oracle基础知识是进入数据库领域的第一步。本文将深入浅出地介绍Oracle数据库的一些核心概念和基本操作,帮助你快速入门。 一、Oracle数据库系统概述 Oracle数据库是由美国Oracle公司开发的,...
一、Oracle基础SQL语句 SQL(Structured Query Language)是用于管理和操作数据库的语言。在Oracle中,主要的SQL语句包括: 1. SELECT语句:用于从数据库中检索数据,是最常用的SQL命令。你可以通过指定列名、表名...
以下是对Oracle基础知识的详细解析: **1. Oracle数据库概述** Oracle数据库是一个关系型数据库管理系统(RDBMS),它以数据表的形式存储和管理数据,每个表由列定义,数据以行的形式存储。Oracle 8i及以上版本还...
通过本Oracle基础教程PPT,你将逐步了解并掌握这些概念,为你的Oracle学习之路打下坚实基础。随着对Oracle的理解加深,你还可以进一步探索高级主题,如数据仓库、分布式数据库、RAC集群等。学习Oracle不仅是技术的...
《Oracle基础第三版 Oracle Essentials》是一本专门为Oracle数据库初学者和爱好者编写的指南,它深入浅出地介绍了Oracle的核心概念和技术。Oracle,作为全球广泛使用的数据库管理系统,是企业级数据存储和管理的重要...
课程 java语言 java基本编程 -> j2EE编程 数据库的能力 sqlserver -> ORACLE 数据结构 训练编程思维方式 实际问题到计算机问题的转化 linux 熟悉一种新的操作系统 软件工厂 学到的知识 去... EJB 3天 struts 4天
本资料“oracle基础知识回顾与练习.zip”是针对Oracle数据库的基础知识进行整理,采用纯SQL语句的形式,适合初学者及需要巩固基础的用户进行学习和实践。 1. SQL基础 SQL(Structured Query Language)是用于管理...
这篇“Oracle基础培训文档”旨在为初学者提供一个全面了解Oracle数据库的平台,帮助大家掌握其基本概念、操作和管理技巧。 首先,我们从基础开始,Oracle数据库的核心是SQL(结构化查询语言),它是用于管理和处理...
"Oracle基础教程.pdf" 提供了丰富的学习资源,共分为21章,涵盖了Oracle数据库的核心概念和技术。 第1章:Oracle简介 本章将介绍Oracle数据库的历史、特点和应用领域,以及它在现代企业级数据管理中的重要地位。你...
本文将深入探讨Oracle基础知识,包括其架构、安装、数据类型、SQL语句、表空间管理以及备份与恢复策略。 一、Oracle数据库架构 Oracle数据库采用客户/服务器(Client/Server)模式,由多个组件构成。主要包括数据库...
以下将详细讲解Oracle基础知识,包括数据库管理、表的创建与维护、SQL查询技巧、权限管理以及PL/SQL编程等方面。 1. **Oracle数据库优势** Oracle数据库因其高性能、高可用性和安全性而受到青睐。它支持大规模并发...
### Oracle基础 必须掌握 #### 一、Oracle数据库基础 **重要知识点解析:** - **Oracle数据库简介:** - Oracle数据库是一款由美国Oracle公司研发的关系型数据库管理系统,广泛应用于企业级应用环境中。 - **...
三、Oracle数据库特性 Oracle的特性众多,以下是一些重要的特性: 1. RAC:Oracle Real Application Clusters允许多个实例共享同一数据库,提供高可用性和负载均衡。 2. ASM(Automatic Storage Management):自动...
本教程《Oracle数据库基础教程》由孙风栋等编著,旨在帮助初学者系统地理解和掌握Oracle数据库的基本概念、操作以及应用。 教程中的习题解答部分是学习过程中的重要辅助资料,它可以帮助读者检验自己的理解程度,...
"oracle基础练习题及答案" Oracle 是一种关系数据库管理系统,它提供了强大的数据存储和管理功能。在实际应用中,Oracle 数据库管理员需要具备一定的 SQL 语句编写能力和数据库管理知识。下面是 Oracle 基础练习题...