2010.08.09.韩顺平.玩转oralce.plsql
- 格式:doc
- 大小:2.15 MB
- 文档页数:25
顺平j2ee系列教程--玩转oracle10g学习笔记引言:数据保存问题?可使用文件保存和数据库保存。
使用文件保存数据存在几个缺点:1、文本的安全性问题;2、文件不利于查询和对数据的管理;3、文件不利于存放海量数据;4、文件在程序中控制不方便。
为解决数据保存问题,专家们设计出更加利于管理数据的东东--数据库(本质就是一个软件),它能更有效的管理数据。
数据库是衡量一个程序员水平的重要指标。
数据库1、数据库的本质就是一款软件,这个软件专门用于管理和维护数据;2、数据存放在数据库中。
数据库服务器、数据库和表的关系所谓安装数据库服务器,只是在机器上装了一个数据库管理程序,这个管理程序可以管理多个数据库,一般开发人员会针对每个应用创建一个数据库。
为了保存应用中实体的数据,一般会在数据库创建多个表,以保存程序中实体的数据。
数据库服务器、数据库和表的关系如图所示:为什么选择oracle--性能优越概述:目前主流数据库包括微软: sql server和access瑞典MySql: AB公司mysqlibm公司: db2(处理海量)美国Sybase公司: Sybaseibm公司: informix美国oracle公司: oracle做项目时应当如何选择数据库?1、标的(项目预算);2、功能的要求;3、并发数(多少人用);4、安全、稳定性。
5、操作系统(unix[solaris,freeBSD,aix,hp unix]/linux/window)oracle数据库的认证oca(oracle certified associate)初级认证ocp(oracle certified professional)中级认证ocm(oracle certified master)高级认证oracle10g安装步骤:1、安装文件2、把10201_database_win32.zip文件copy到没有中文的路径下3、检查服务选项,确定本机没有安装过oracle数据库,如果有则卸载4、将压缩包解压后,双击setup.exe文件进行安装。
韩顺平oracle学习笔记第0讲:如何学习oracle一、如何学习oracleOracle目前最流行的数据库之一,功能强大,性能卓越。
学习oracle需要具备一定基础:1.学习过一门编程语言(如:java ,c)2.最好学习过一门别的数据库(sql server,mysql , access)教程推荐:oracle使用教程,深入浅出oracle记住:欲速则不达,做任何事情要遵循他的规律,循序渐进,信心很重要成为一个oracle高手过程:理解小知识点->做小练习->把小的只是点连成线->做oracle项目->形成只是面->深刻理解Oracle基础部分:oracle基础使用; oracle用户管理; oracle表管理Oracle高级部分:oracle表的查询; oracle的函数; oracle数据库管理;oracle 的权角色; pl/sql 编程;索引,约束和事物。
期望目标:1 学会安装、启动、卸载oracle2 使用sql *plus工具3 掌握oracle用户管理4 学会在oracle中编写简单的select语句第1讲:基础语法内容介绍:1.为什么学习oracle2.介绍oracle及其公司的背景3.学会安装、启动、卸载oracle4.oracle开发工具5.Sql*plus的常用命令6.oracle用户管理一、主流数据库包括:●微软:sql server 和 access●瑞典:mysql AB公司●IBM公司:DB2●美国sybase公司:sybase●IBM公司:infromix●美国oracle公司:oracle(目前最流行的之一)二、oracle安装,启动及卸载1.系统要求:操作系统最好为windows2000内存最好在256M以上硬盘空间需要2G以上2.oracle安装会自动的生成sys和system两个用户说明:○1Sys用户是超级用户,具有最高权限,具有sysdba角色,create database 的权限,默认密码是manager○2System 用户是管理操作员,权限也很大,具有sysoper角色,没有create database权限,默认密码是 change_on_install○3一般讲,对数据库维护,使用system用户登录就可以了3.启动oracle右键单击我的电脑->服务和应用程序:服务->启动OracleServiceMYORA1(MYORA1是安装oracle时起的名字各有不同)和OracleOracleHome90TNSLlistener4.卸载oracle1、先关掉oralce,net stop OracleServiceORCL(ORCL是我的实例名字,换成你的),或者去我的电脑服务中关闭2、开始->程序->Oracle - oracle的版本号,我的是10ghome->Oracle Installation Products->Universal Installer 卸载oracle3、进注册表,regedit,删除选择HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE下所有的key。
Oracle PLSQL语言初级教程Oracle PL/SQL语言初级教程Oracle PL/SQL语言基础 ..................................................................... ...................................................... 3 PL/SQL的复合数据类型...................................................................... ..................................................... 16 使用集合 ..................................................................... ........................................................................ . (23)PL/SQL单行函数和组函数详解...................................................................... .......................................... 27 Oracle数据库数据对象分析 ..................................................................... .............................................. 41 Oracle完整性约束 ..................................................................... . (47)索引(INDEXES) .............................................................. ........................................................................ .. 53Oracle过程和函数 ..................................................................... . (54)触发器(Triggers) ............................................................. . (57)数据字典 ..................................................................... ........................................................................ . (58)Oracle操作和控制语言...................................................................... ..................................................... 61 建立和修改用户 ..................................................................... .. (67)ORACLE游标 ..................................................................... ........................................................................73ORACLE异常处理 ..................................................................... . (83)PL/SQL是Oracle对标准数据库语言的扩展,Oracle公司已经将PL/SQL整合到Oracle 服务器和其他工具中了,近几年中更多的开发人员和DBA开始使用PL/SQL,本教程将以循速渐进的方式讲述PL/SQL基础语法,结构和组件、以及如何设计并执行一个PL/SQL程序,通过本教程的学习,您将初步掌握PL/SQL语言,能够利用PL/SQL语言完成建表、查询、添加、删除数据以及事务处理语句的基本用法。
plsql使用教程PL/SQL是Oracle数据库的过程式编程语言,它结合了SQL的强大查询能力和程序设计语言的灵活性。
以下是一个简单的PL/SQL使用教程:1. 定义变量在PL/SQL中,可以使用DECLARE语句来定义变量。
例如:DECLAREnum INTEGER;name VARCHAR2(50);2. 使用SELECT查询数据可以使用SELECT语句从表中检索数据。
例如:SELECT * INTO num, name FROM employees WHERE employee_id = 100;3. 使用IF-THEN-ELSE进行条件判断PL/SQL提供了IF-THEN-ELSE语句来进行条件判断。
例如:IF num > 0 THENDBMS_OUTPUT.PUT_LINE('Number is positive');ELSEDBMS_OUTPUT.PUT_LINE('Number is negative');END IF;4. 使用FOR循环可以使用FOR循环来对一个集合进行迭代。
例如:FOR i IN 1..10 LOOPDBMS_OUTPUT.PUT_LINE('The value of i is: ' || i);END LOOP;5. 创建存储过程可以使用CREATE PROCEDURE语句来创建存储过程。
例如:CREATE PROCEDURE get_employee_details (p_employee_idIN NUMBER) ISv_employee_name VARCHAR2(50);BEGINSELECT employee_name INTO v_employee_name FROM employees WHERE employee_id = p_employee_id;DBMS_OUTPUT.PUT_LINE('Employee name is: ' ||v_employee_name);END;6. 调用存储过程可以使用EXECUTE语句来调用存储过程。
plsql 安装教程PL/SQL是Oracle数据库的编程语言,它基于SQL语言,用于开发和管理存储过程、触发器、函数等数据库对象。
下面是PL/SQL的安装教程:1. 首先,确保你已经安装了Oracle数据库。
PL/SQL是Oracle的一部分,所以你需要先安装Oracle数据库。
2. 下载Oracle SQL Developer。
Oracle SQL Developer是一个免费的集成开发环境,用于编写和调试PL/SQL代码。
你可以从Oracle官方网站下载最新版本的Oracle SQL Developer。
3. 打开Oracle SQL Developer,如果是第一次打开,会要求你设置JDK的路径。
选择你已经安装的JDK的路径,并点击确认。
4. 在Oracle SQL Developer的菜单中,选择“工具”>“首选项”>“数据库”>“PL/SQL编译器”。
5. 在“PL/SQL编译器”选项卡中,将“编译器类型”设置为“本地”。
6. 在同一个选项卡中,将“日志级别”设置为“带有错误”的选项。
7. 点击“应用”按钮,然后点击“确定”按钮。
8. 现在,你可以编写和执行PL/SQL代码了。
在SQLDeveloper的编辑器中,输入你的PL/SQL代码,然后点击绿色的运行按钮或按下Ctrl+Enter来执行代码。
注意:在执行PL/SQL代码之前,你需要连接到一个Oracle数据库实例。
在SQL Developer的连接向导中,输入你要连接的数据库实例的详细信息,然后点击测试连接按钮来测试连接是否成功。
这就是PL/SQL的安装教程。
安装完成后,你就可以开始使用PL/SQL开发和管理Oracle数据库对象了。
目录1.Oracle 认证,与其它数据库比较,安装 (4)2.Oracle 的基本使用--基本命令 (7)2.1 连接命令 (7)2.1.1 conn[ect] (7)2.1.2 disc[onnect] (7)2.1.3 psssw[ord] (7)2.1.4 show user (7)2.1.5 exit (7)2.2文件操作命令 (7)2.2.1 start 和@ (7)2.2.2 edit (7)2.2.3 spool (8)2.3交互式命令 (8)2.3.1 & (8)2.3.2 edit (8)2.3.3 spool (8)2.4显示和设置环境变量 (9)2.4.1 linesize (9)2.4.2 pagesize (9)3.oracle 用户管理 (10)3.1 oracle 用户的管理 (10)3.1.1创建用户 (10)3.1.2 给用户修改密码 (10)3.1.3 删除用户 (10)3.1.4用户管理的综合案例 (10)3.2 使用profile 管理用户口令 (12)3.2.1.账户锁定 (12)3.2.2.给账户(用户)解锁 (13)3.2.3.终止口令 (13)3.3口令历史 (13)3.4 删除profile (13)4.oracle 表的管理(数据类型,表创建删除,数据CRUD 操作) (14)4.1 oracle 的表的管理 (14)4.1.1表名和列的命名规则 (14)4.1.2 oracle 支持的数据类型 (14)4.2怎样创建表 (15)4.3添加数据 (15)4.4修改数据 (16)4.5删除数据 (16)5.oracle 表查询 (16)5.1 oracle 表基本查询 (16)5.2简单的查询语句 (17)5.3 oracle 表复杂查询 (18)5.3多表查询 (19)5.4子查询 (20)5.5 分页查询 (21)5.5.1.根据rowid 来分 (22)5.5.2.按分析函数来分 (22)5.5.3按rownum 来分 (22)5.6用查询结果创建新表 (23)5.7合并查询 (23)6 创建数据库 (23)7. java 操作oracle (24)7.1 java 连接oracle (24)7.2在oracle 中操作数据 (28)8.oracle 中事务处理 (29)8.1什么是事务 (29)8.2提交事务 (29)8.3回退事务 (29)8.4 java 程序中如何使用事务 (29)9.oracle 的函数 (32)9.1 sql 函数的使用 (32)9.1.1字符函数 (32)9.1.2数学函数 (33)9.1.3日期函数 (34)9.1.4转换函数 (35)9.1.5系统函数 (36)10.数据库管理,表的逻辑备份与恢复 (37)10.1数据库管理员 (37)10.2数据库(表)的逻辑备份与恢复 (39)10.3导出 (39)10.3.1导出表 (39)10.3.2导出方案 (39)10.3.3导出数据库 (40)10.4导入 (40)10.4.1导入表 (40)10.4.2导入方案 (40)10.4.3导入数据库 (41)11.数据字典和动态性能视图 (41)11.1数据字典 (41)11.2 用户名,权限,角色 (41)11.3动态性能视图 (44)12.数据库管理-- 管理表空间和数据文件 (45)12.1数据库的逻辑结构 (45)12.2表空间 (45)12.2.1建立表空间 (45)12.2.2 改变表空间的状态 (46)12.2.3删除表空间 (46)12.2.4扩展表空间 (46)12.2.5移动数据文件 (47)12.2.6 显示表空间信息 (47)12.2.7表空间小结 (47)12.2.8其它表空间 (48)13.约束 (48)13.1维护数据的完整性 (48)13.2约束 (48)13.2.1使用 (48)13.2.2维护 (49)13.2.3删除约束 (50)13.2.4显示约束信息 (50)14.Oracle 索引、权限 (51)14.1创建索引 (51)14.2 显示索引信息 (52)14.3 管理权限和角色 (52)14.3.1 系统权限 (52)14.3.2 对象权限 (53)15.角色 (55)15.1预定义角色 (56)15.2自定义角色 (56)15.3角色授权 (56)15.4删除角色 (57)15.5显示角色信息 (58)16.PL/SQL 块的结构和实例 (59)17.pl/sql 分类-- 过程,函数,包,触发器 (64)17.1 过程 (64)17.2 函数 (65)17.3包 (66)17.3触发器 (67)18.定义并使用变量,复合类型 (68)18.1定义并使用变量 (68)18.2复合变量(composite) (69)19.pl/sql 的进阶--控制结构(分支,循环,控制) (71)19.1 pl/sql 的进阶--控制结构 (72)19.1.1条件分支语句 (72)20.PL/SQL 分页 (75)21.例外处理 (85)21.1处理预定义例外 (86)21.2非预定义例外 (89)22.oracle 的视图 (92)1.Oracle 认证,与其它数据库比较,安装Oracle 安装会自动的生成sys 用户和system 用户:(1)sys 用户是超级用户,具有最高权限,具有sysdba 角色,有create database的权限,该用户默认的密码是change_on_install(2)system 用户是管理操作员,权限也很大。
韩顺平老师 oracle教程笔记1.Oracle认证,与其它数据库比较,安装Oracle安装会自动的生成sys用户和system用户:(1)sys用户是超级用户,具有最高权限,具有sysdba角色,有create database的权限,该用户默认的密码是change_on_install (2)system用户是管理操作员,权限也很大。
具有sysoper角色,没有create database的权限,默认的密码是manager (3)一般讲,对数据库维护,使用system用户登录就可以拉也就是说sys和system这两个用户最大的区别是在于有没有create database的权限。
2.Oracle的基本使用--基本命令sql*plus的常用命令连接命令1.conn[ect]用法:conn 用户名/密码@网络服务名[as sysdba/sysoper]当用特权用户身份连接时,必须带上as sysdba或是as sysoper 2.disc[onnect]说明: 该命令用来断开与当前数据库的连接3.psssw[ord]说明: 该命令用于修改用户的密码,如果要想修改其它用户的密码,需要用sys/system登录。
4.show user说明: 显示当前用户名5.exit说明: 该命令会断开与数据库的连接,同时会退出sql*plus文件操作命令1.start和@说明: 运行sql脚本案例: sql>@ d:\a.sql或是sql>start d:\a.sql2.edit说明: 该命令可以编辑指定的sql脚本案例: sql>edit d:\a.sql,这样会把d:\a.sql这个文件打开3.spool说明: 该命令可以将sql*plus屏幕上的内容输出到指定文件中去。
案例: sql>spool d:\b.sql 并输入 sql>spool off交互式命令1.&说明:可以替代变量,而该变量在执行时,需要用户输入。
第一部分pl/sql初步介绍1、期望目标1)掌握oracle的pl/sql概念2)掌握pl/sql编程技术(包括编写过程、函数、触发器…)2、pl/sql的介绍-pl/sql是什么?1)pl/sql(procedural language/sql)是oracle在标准的sql语言上的扩展。
pl/sql不仅允许嵌入sql语言,还可以定义变量和常量,允许使用条件语句和循环语句,允许使用例外处理各种错误,这样使得它的功能变得更加强大。
2)了解过程,函数,触发器-过程、函数、触发器是pl/sql编写,相当于存储在oracle数据库中的对象-过程、函数、触发器是在oracle中-pl/sql是非常强大的数据库过程语言,使用pl/sql能够写变量,做判断;可以简化复杂度;减少网络的传销,增加程序的模块化编程,提高运行性能,使速度更加的快捷-过程、函数可以在Java程序中调用3、pl/sql的介绍-为什么学?1)学习必要性-提高应用程序的运行性能-模块化的设计思想【分页的过程、订单的过程、转账的过程】-减少网络传输量-提高安全性2)弊端-移植性不好,例如从oracle数据库移植到DB2,则全部要重写3)pl/sql的介绍-用什么编写pl/sql-sqlplus开发工具-pl/sql developer开发工具4)案例-编写一个存储过程,该过程可以向某表中添加记录-- 1.创建一个简单的表create table gdsc (id int,name varchar2(20),passwd varchar(20));-- 2.创建过程create or replace procedure sp_gdsc_01 isbegin--执行部分insert into gdsc values(1,'陈学敏','mendychen');end;-- replace:表示如果有sp_gdsc_01,就替换-- 3.如何查看错误信息show error;-- 如何调用该过程-- 1.exec 过程名(参数值1,参数值2...);-- 2.call 过程名(参数值1,参数值2...);第二部分基础1、介绍开发人员使用pl/sql编写应用模块时,不仅需要掌握sql语句的编写方法,还要掌握pl/sql 语句及语法规则。
pl/sql编程可以使用变量和逻辑控制语句,从而可以编写非常有用的功能模块。
比如:分页存储过程模块、订单处理存储过程模块、转账存储过程模块等。
而且如果使用pl/sql编程,我们可以轻松的完成非常复杂的查询要求。
2、简单分类|----------过程(存储过程)||----------函数块(编程)--------- ||----------触发器||----------包3、编写规范1)注释-单行注释:---多行注释:/* ……*/2)标识符号的命名规范-当定义变量时,建议用v_作为前缀,如v_sal-当定义常量时,将以用c_作为前缀,如c_rate-当定义游标时,建议用_cursor作为后缀,如emp_cursor-当定义例外时,建议用e_作为前缀,如e_error4、pl/sql块介绍1)介绍块(block)是pl/sql的基本程序单元,编写pl/sql程序实际上就是编写pl/sql块。
要完成相对简单的应用功能,可能只需要编写一个pl/sql块;但是,如果要想实现复杂的功能,可能需要在一个pl/sql块中嵌套其他的pl/sql块。
2)块结构示意图-pl/sql块由三个部分构成:定义部分、执行部分、例外处理部分。
如下所示:declare/* 定义部分:定义常量、变量、游标、例外、复杂数据类型,该部分是可选的*/begin/* 执行部分:要执行的pl/sql语句和sql语句,该部分是必须的*/exception/* 例外处理部分:处理运行的各种错误,该部分是可选的*/end/* 和java程序进行比较*/3)pl/sql块的实例:实例1 - 只包含执行部分的pl/sql块set serveroutput on--打开输出选项begindbms_output.put_line('hello,world');end;相关说明:dbms_output是oracle所提供(类似java的开发包),该包包含一些过程,put_line就是dbms_output包的一个过程。
运行结果:4)pl/sql块的实例:实例2 –包含定义部分和执行部分的pl/sql块declarev_ename varchar2(5); --定义字符串变量beginselect ename into v_ename from emp where empno=&no;dbms_output.put_line('雇员名:'||v_ename);end;相关说明:&,取地址符表示要接收从控制台输入的变量5)pl/sql块的实例:实例3 –包含定义部分、执行部分和例外处理部分的pl/sql块为了避免pl/sql程序的运行错误,提高pl/sql的健壮性,应该对可能的错误进行处理,这个很有必要:-比如在实例2中,如果输入了不存在的雇员号,应当做例外处理-有时出现异常,希望用另外的逻辑处理declare--定义字符串变量v_ename varchar2(5);v_sal number(7,2);begin--执行部分select ename,sal into v_ename,v_sal from emp where empno=&no;dbms_output.put_line('雇员名:'||v_ename||' 工资:'||v_sal);--异常处理exceptionwhen no_data_found thendbms_output.put_line('You enter the error employee number!');end;相关说明:Oracle事先预定了一些例外,no_data_found就是找不到数据的例外5、过程过程用于执行特定的操作。
当建立过程时,既可以指定输入参数(in),也可以指定输出参数(out)。
通过在过程中使用输入参数,可以将数据传递到执行部分;通过使用输出参数,可以将执行部分的数据传递到应用环境。
在sqlplus中可以使用create procedure命令来建立过程。
实例如下:1)请考虑编写一个过程,可以输入雇员名,新工资,然后可以根据修改雇员的工资create procedure sp_pro3(spName varchar2,newSal number) isbegin--执行部分,根据用户名去修改工资update emp set sal=newSal where ename=spName;end;2)如何调用过程有两种方法:exec…call…exec sp_pro3('SCOTT',4678);3)如何在java程序中调用一个存储过程import java.sql.*;public class TestOraclePro {public static void main(String[] args) {try {// 1.加载驱动Class.forName("oracle.jdbc.driver.OracleDriver");// 2.得到连接Connection ct = DriverManager.getConnection( "jdbc:oracle:thin:@192.168.68.130:1521:orcl", "scott","tiger");// 3.创建CallableStatementCallableStatement cs = ct.prepareCall("{call sp_pro3(?,?)}");// 4.给?赋值cs.setString(1, "SMITH");cs.setInt(2, 10);// 5.执行cs.execute();// 6.关闭资源cs.close();ct.close();} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}}}5、函数1)函数用于返回特定的数据,当建立函数时,在函数头部必须包含return字句,而在函数体内必须包含return语句返回的数据。
我们可以使用create function来建立函数,实际案例:--函数案例--输入雇员的姓名,返回该雇员的年薪create function sp_fun2(spName varchar2) return number is yearSalnumber(7,2);begin--执行部分select sal*12+nvl(comm,0)*12into yearSal from emp where ename=spName;return yearSal;end;2)在sqlplus中调用该函数3)同样我们可以在java程序中调用该函数select sp_fun2(‘SCOTT’) from emp;6、包包用于在逻辑上组合过程和函数,它由包规范和包体两部分组成。
1)我们可以使用create package命令来创建包,实例如下:--创建包--创建一个包sp_package--声明该包有一个过程update_sal--声明该包有一个函数annual_incomecreate package sp_package isprocedure update_sal(name varchar2,newSal number);function annual_income(name varchar2) return number;end;2)包的规范只包含了过程和函数的说明,但是没有过程和函数的实现代码。
包体用于实现包规范中的过程和函数。
建立包体可以使用create package body命令:--给包sp_package实现包体create package body sp_package isprocedure update_sal(name varchar2,newSal number)isbeginupdate emp set sal=newSal where ename=name;end;function annual_income(name varchar2) return number is annual_salary number;beginselect sal*12+nvl(comm,0) into annual_salary from empwhere ename=name;return annual_salary;end;end;3)如何调用包的过程或是函数?当调用包的过程或是函数时,在过程和函数前需要带有包名,如果要访问其它方案的包,还需要在包名前加方案名。