精通 oracle 10g plsql 编程-学习笔记

合集下载

plsql学习笔记

plsql学习笔记
when v_sal<1000 then update emp set comm=100 where ename=v_ename;
when v_sal<2000 then update emp set comm=80 where ename=v_ename;
when v_sal<6000 tehn update emp set comm=50 where ename=v_ename;
insert into dept (deptno,dname) values(v_deptno,v_dname);
2.2使用子查询插入数据
v_deptno emp.deptno%type:=&no;
insert into employee select * from emp where deptno=v_deptno;
使用的变量名不能与列名相同,否则触发TOO_MANY_ROWS例外.
2.操纵数据
2.1使用VALUES子句插入数据
v_deptno dept.deptno%type;
v_dname dept.dname%type;
v_deptno:=no;
v_dname:='&name';
begin
for i in reverse 1..10 loop
insert into temp values(i);
end loop;
end;
5.10嵌套循环和标号:通过在嵌套循环中使用标号,可以区分内层循环和外层循环,并且可以在内层循环中直接退出外层循环
dbms_output.put_line('修改了'||sql%rowcount||'行');

Oracle数据库学习笔记(含PLSQL)

Oracle数据库学习笔记(含PLSQL)

建议在PLSql Develeper 工具中查看,阅读/*Oracle学习笔记*/SQLPlus:所谓的SQLPlus,就是oracle数据库的一个客户端。

登录sqlplus的几种方式:1 命令行版的sqlplus:在dos窗口中直接输入sqlplus,则需要你输入用户名和密码,进入oracle的命令行了,即进入了oracle的客户端。

2 图形版的sqlplus:开始程序处执行。

3 浏览器模式isqlplus:http://127.0.0.1:5560/isqlplus/ --5560是oracle的端口号,通过这个方式可以访问其他ip主机的oracle4 oracle常用的客户端软件:Toad(英文意思蛤蟆)/*数据库管理的时候常用*/,PL/SQL Developer(常用)/*需要在本地的oracle客户端也装上oracle*/,相比之下,isqlplus较为好用,在客户端不需要装任何东西,只需要一个浏览器就可访问----------------------------------------dos命令:1 sqlplus sys/bjsxt AS SYSDBA; --as sysdba代表以数据库管理员的身份登录2 ALTER USER scott ACCOUNT UNLOCK; --将用户scott解锁------------------------------------------------------------------------------------------------------------------------------------------SQL语言SQL(Structured Query Language)SQL是关系数据库的标准语言,到现在为止,有两个标准:1992年定义的SQL/92和1999年定义的SQL99,SQL在大多数的数据库上通用,只是不同的数据库对于SQL语言都有那么一点小的改变。

Oracle 10G 数据库学习笔记

Oracle 10G 数据库学习笔记

Oracle 10G 数据库学习笔记备份exp运行-CMD EXP超级管理员:sys change_on_install普通管理员:system manager普通用户:scott tiger --------默认是锁定大数据用户:sh sh恢复IMP 运行--CMD--IMP导入文件:输入绝对物理路径如d:\.DMPOracle 10G 不同启动:服务之中,有以下两个服务是最为重要的:1、监听服务(远程的客户端要连接数据库则必须启动)Oracle ORADB10g_home1TNSListener2、数据库的实例服务:Oracle service ORACL保存数据库的具体信息的服务,每一个数据库有一个数据实例命名规则:oracle service XXX 其XXX是数据库名的(SID名称)监听问题:错误一:注册表出错:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OracleOraDb10g_home1TN SListener 里面有一个ImagePath 数据不见错误二:网络环境出错(计算机名称变动)修改配置文件:D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN文件1:tnsnames.ora HOST=PC计算机名NTDP =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = NTDP)(PORT = 1521))(CONNECT_DA TA =(SERVER = DEDICATED)(SERVICE_NAME = NTDP)))文件2:listener.ora HOST=PC计算机名LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))(ADDRESS = (PROTOCOL = TCP)(HOST = NTDP)(PORT = 1521))))打开ORARCLE 配置移植工具下-----NET MANAGER添加数据库:全局数据库名:NTDPORACLE主目录:SID:NTDP 监听状态检查命令:lsnrctl.exeEm启动问题:OracleDBCcnsolenNTDP 服务没有启动先删除:EM服务删除:emca -repos dropC:\Documents and Settings\Administrator>emca -repos dropEMCA 开始于2012-8-2 21:17:29EM Configuration Assistant 10.2.0.1.0 正式版版权所有(c) 2003, 2005, Oracle。

PLSQL学习笔记

PLSQL学习笔记

(五)权限控制语句(DCL):GRANT 授予权限 /REVOKE 移除权限
SELECT:
SELECT 查询列表 FROM 数据源;
*&* SQL命令必须加分号。
ALTER USER HR IDENTIFIED BY HR ACCOUNT UNLOCK;
修改用户 解锁
给HR解锁
主要用于通配固定位数的字符。例如查询月收入五位数以上的员工。五位ห้องสมุดไป่ตู้可以用'_'来查询。
逻辑操作符(用在WHERE子句中)
AND
OR
NOT
先执行 NOT ,再执行 AND 最后执行 OR。
ORDER BY
ORDER BY子句在 SELECT 语句的最后。
ASC:升序
(三)事务控制语句:COMMIT 提交、ROLLBACK 回滚、
SAVEPOINT 存储点(与 ROLLBACK 搭配使用)在回滚的时候可以回滚到某个存储点上。否则回滚到最初起点上。
(四)数据定义语句:对对象操作。TRUNCATE 清除表中所有数据 /CREATE 创建 /DROP 删除 /ALTER 修改
定义空(NULL)值
空值出现在表达式中会导致整个表达式的值为空。
NVL(字段名,将要赋予的值)函数
作用:将空值转换成其他有ASCLL码的值。
annual_salary年薪
别名
可以加中文的字段别名。
如果想强制地改变列名的大小写,可以在别名的定义时加上双引号,列名有空格时也要在列名上加双引号。
以上函数都是返回string的一部分,从字符位置A开始,长为B个字符。如果A是0,那它就被认为是1(字符串的开始位置)。如果A是正数,那么字符从左边开始数。如果是负数,则从STRING的末尾开始,从右边数。如果B不存在,那么缺省是整个字符串。如果B小于1,将返回NULL。如果A或B使用了浮点数,那么该数值首先被节取成一个整数,返回类型与STRING相同。

ORACLE PL SQL学习笔记

ORACLE PL SQL学习笔记

Oracle学习笔记1第一章PL/SQL简介1.1块结构(Block)DECLARE--declarative section/*声明部分,声明变量(variables)、类型(types)、游标(cursors)和局部子程序*/BEGIN--executable section/*执行部分,放置过程性语句(procedural statement)*或SQL语句(SQL statemnet)。

*这是主体,是必须的。

*/EXCTPTION--exception section/*错误处理部分*/END;//“;”很关键,不要忘记1.2变量和类型(variables and types)支持各种常用的数据库类型,还支持用户自定义类型,如表(table)、记录(record)。

还支持对象类型。

1.3注释(comment)Oracle的PL/SQL支持"--"和“/**/”的注释风格。

2第二章PL/SQL基础2.1PL/SQL块匿名块(anonymous)动态生成,只执行一次。

带名块(named)是带有标签的匿名块,动态生成,只执行一次。

子程序(subprogram)是存储在数据库内部的过程、函数和包。

可多次执行。

触发器(trigger)是存储在数据库内部的带名块,可多次执行。

由触发事件(triggering event)来触发。

2.2词法单位(lexical unit)包括标识符(identifier)、分界符(delimiter)、文字(literal)和注释(comment)2.2.1标识符(identifier)PL/SQL对大小写不敏感。

最长30位。

a)保留字(reserved word)或关键字(keyword),保留字单独使用时是保留的,但可以出现在其他标识符的内部。

如:下面的用法是合法的,尽管“Date”是保留字。

DECLAREv_BeginDate Date;b)引号标识符(quoted identifier)如果想要标识符大小写敏感,如在标识符中出现空格这样的字符或使用一个保留字,那么必须使用引号标识符。

Oracle 10g 学习记录

Oracle 10g 学习记录

目录目录 (1)1.Oracle安装及体系结构 (2)1.1 Oracle 安装 (2)1.2 内存结构(Oracle Memory Structures) (2)1.3 进程结构(Process Structures) (3)1.4 实例管理(Oracle Instance Management) (3)1.5 物理结构(Physical Database Structure) (4)1.6 逻辑结构 (4)2. SQL*PLUS基础 (5)2.1 数据库的启动(startup) (5)2.2 数据库的关闭(SHUTDOWN) (6)2.3 SQLPlus 常用命令 (7)3.SQL语言基础 (8)3.1语言分类 (8)3.2常用SQL命令 (8)3.3常用函数 (9)4.视图、同义词、序列 (10)4.1视图 (10)4.2同义词 (11)4.3序列 (11)5.安全管理 (12)1.Oracle安装及体系结构1.1 Oracle 安装Oracle10g 安装1.2 内存结构(Oracle Memory Structures)内存可以分为SGA(系统全局区)和PGA(程序全局区)组成系统全局区(SGA System Global Area)每个例程都只有一个SGA区,当多个用户同时链接到一个例程时,所有的用户进程、服务器进程都可以共同使用SGA区,数据库的各种操作主要都是在SGA区中进行,创建例程时ORACLE 为SGA区分配内存;终止例程时释放SGA区内存。

SGA区可以分为如下几个部分:1.数据高速缓存池(Database buffer cache):保存的是最近从数据文件中读取的数据块;或存储最近经常使用的数据,其中的数据可以被所有用户共享,其中包括3个缓存池,a)保持缓存池其中数据将长期保存在内存中直到关闭数据库为止;b)再生缓存池其中的数据一旦使用完毕就会被从内存中换出;c)默认缓存池如果没有为对象指定所使用的缓存池,就将其数据放在默认缓存池中。

[VIP专享]Oracle_10g_plsql实战笔记

[VIP专享]Oracle_10g_plsql实战笔记

1) B2Ak+22+1=2+15+c51mc+=m5=21c11+m++12+2+1++=212=2+1+2+1+2+2+22+32k+1+2
}
--打开输出选项 set serveroutput on; --关闭输出选项 set serveroutput off;
exec sp_pro3(‘SCOTT’,4890); //娱乐测试
1) B2Ak+22+1=2+15+c51mc+=m5=21c11+m++12+2+1++=212=2+1+2+1+2+2+22+32k+1+2

I mplicit / explicit Collections (集合)
Varray - 数组 Nested table – 集合 Associative Arrays – (hash table) Records DECLARE TYPE timerec IS RECORD (hours SMALLINT, minutes SMALLINT); 对象类型 CREATE TYPE employee_typ AS OBJECT CREATE TYPE BODY employee_typ AS
1 编写一个存储过程,该过程可以向某表中添加记录 1) 创建一个简单的表 create table mytest(name varchar2(30),passwd varchar2(30)); 2)创建过程: create or replace procedure sp_pro1 is bgin 3)执行部分 insert into mytest values('zhangsan','zhangsan'); 4) 结束 end; 5) /

《Oracle 10g入门与提高》第6章:PL、SQL程序设计

《Oracle 10g入门与提高》第6章:PL、SQL程序设计

数据类型
NULL]{DEFAULT|:=}];
[[NOT
PL/SQL的数据类型与相关的子类型
数据类型
子类
描述
BINARY_INTEG ER
NATURAL、 NATURALN、 POSITIVE、 POSITIVEN、
SIGNTYPE
存储范围在-2 147 483 647到2 147 483 647之间的有符号整数。使用数学库, NATURAL与NATURALN只存储非负 整数,后者不允许存储0;POSITIVE 和POSITIVEN只存储正数,后者不允 许存储0。SIGNTYPE只存储-1、0和
SQL代 码
-6511
说明 试图打开一个已经打开了的游标
DUP_VAL_ON_INDEX INVALID_CURSOR INVALID_NUMBER LOGIN_DENIED NO_DATA_FOUND NOT_LOGGED_ON
子程序的依赖性 子程序的执行权限
6.6 触 发 器
触发器(trigger)是一些过程,当发生一个特定 的数据库事件时就执行这些过程
触发器的适用情况
• 维护在表创建阶段通过声明限制无法实现的复杂完 整性限制
• 通过记录修改内容和修改者来审计表中的信息 • 在表内容发生变更时,自动通知其他程序采取相应
PL/SQL的数据类型与相关的子类型
数据类型 ROWID
子类
描述 存储数据库表每一行的物理地址
ROWID
存储数据库表每一行的物理地址
UROWID
CLOB BLOB BFILE BOOLEAN
存储数据库表中每一行的物理的、逻辑的或外部的 (非Oracle的)地址
存储巨型、单字节字符对象
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.PL/SQL综述本章学习目标,了解如下内容:PL/SQL的功能和作用PL/SQL 的优点和特征;Oracle 10g、Oracle9i 的PL/SQL新特征1.1.SQL简介1.1.1.SQL语言特点SQL语言采用集合操作方式1.1.2.SQL语言分类●数据查询语言(SELECT语句):检索数据库数据。

●数据操纵语言(DML):用于改变数据库数据。

包括insert,update和delete三条语句。

●事务控制语言(TCL):用于维护数据库的一致性,包括commit,rollback和savepoint 三条语句●数据定义语言(DDL):用户建立、修改和删除数据库对象。

●数据控制语言(DDL):用于执行权限授予和收回操作。

包括grant 和revoke两条命令。

1.1.3.SQL 语句编写规则●SQL关键字不区分大小写●对象名和列名不区分大小写●字符值和日期值区分大小写●书写格式随意1.2.PL/SQL简介1.3.Oracle 10G PL/SQL 新特征2.PL/SQL开发工具本章学习目标:学会使用SQL*PLUS学会使用PL/SQL developer;学会使用Procedure Builder。

2.1.SQL*PLUS在命令行运行SQL*PlusSqlplus [username]/[password] [@server]3.PL/SQL 基础学习目标:●了解PL/SQL块的基本结构以及PL/SQL块的分类;●学会在PL/SQL块中定义和使用变量●学会在PL/SQL块中编写可执行语句;●了解编写PL/SQL代码的指导方针;●了解Oracle 10g的新特征——新数据类型BINARY_FLOAT 和BINARY_DOUBLE,以及指定字符串文本的新方法。

3.1.PL/SQL 块简介3.1.1.PL/SQL块结构3.1.2.PL/SQL 块分类匿名块命名块子程序触发器3.2. 定义并使用变量3.2.1.标量变量3.2.2.复合变量3.2.3.参照变量3.2.4.LOB 变量3.2.5.非PL/SQL 变量3.3.编写 PL/SQL 代码3.3.1.PL/SQL 词汇单元分隔符标识符文本(数字文本,字符文本,字符串文本,布尔文本,日期时间文本)注释3.3.2.PL/SQL 代码编码规则标识符命名规则大小写规则代码缩进嵌套块和变量范围PL/SQL中可以使用的SQL函数4.使用SQL语句学习目标:学会使用SELECT语句去完成基本查询功能学会使用INSERT,UPDA TE和DELETE语句去操作数据库数据学会使用COMMIT,ROLLBACK和SA VEPOINT语句去控制事务学会使用SELECT语句去实现各种复杂查询功能(数据分组、连接查询、子查询、层次查询、合并查询等)4.1.使用基本查询处理NULL:函数nvl(expr1,expr2),nvl2(expr1,expr2,expr3)4.2.使用DML语句使用多表插入数据语法:INSERT ALL insert_into_clause [value_clause] subquery;INSERT conditional_insert_clause subquery;示例1:使用ALL 操作符执行多表插入INSERT ALLWHEN deptno=10 THEN INTO dept10WHEN deptno=20 THEN INTO dept20WHEN deptno=30 THEN INTO dept30WHEN job=’CLERK’ THEN INTO clerkELSE INTO otherSelect * from emp;示例2:使用FIRST 操作符执行多表插入INSERT FIRSTWHEN deptno=10 THEN INTO dept10WHEN deptno=20 THEN INTO dept20WHEN deptno=30 THEN INTO dept30WHEN job=’CLERK’ THEN INTO clerkELSE INTO otherSELECT * FROM emp;4.3.使用事务控制语句4.3.1.事务和锁4.3.2.提交事务4.3.3.回退事务设置保存点:savepoint a;或者exec dbms_transaction.savepoint(‘a’)取消部分事务Rollback to a;或者Exec dbms_transaction.rollback_savepoint(‘a’)取消全部事务:Rollback; 或者exec dbms_transaction.rollback() 4.3.4.只读事务4.3.5.顺序事务4.4.数据分组4.4.1.分组函数MaxMinAvgSumCountVarianceStddev使用分组函数注意事项:●当使用分组函数时,除了函数Count(*) 之外,其他分组函数都会忽略NULL行。

●当执行select 语句时,如果选择列表同时包含列、表达式和分组函数,那么这些列和表达式必须出现在group by 子句中。

●当使用分组函数时,在分组函数中可以指定all 和distinct 选项。

其中all默认选项,该选项表示统计所有行数据(包括重复行);如果指定distinct,则只会统计不同行值。

4.4.2.GROUP BY 和HA VING4.4.3.ROLLUP 和CUBEROLLUP和CUBE用来产出横向、纵向的统计结果。

示例一:使用ROLLUP操作符:生成横向小计SELECT deptno,job,avg(sal) FROM emp GROUP BY ROLLUP(deptno,job);示例二:使用CUBE操作符:生成数据统计、横向小计、纵向小计结果。

SELECT deptno,job,avg(sal) FROM emp GROUP BY CUBE(deptno,job);示例三:使用GROUPING函数GROUPING函数用于统计结果是否用到了特定列。

Select deptno,job,avg(sal),grouping(deptno),grouping(job)FROM emp GROUP BY cube(detpno,job);4.4.4.GROUPING SETS示例一:显示部门平均工资:SELECT deptno,avg(sal) FROM emp GROUP BY deptno;示例二:显示岗位平均工资SELECT job,avg(sal) FROM emp GROUP BY job;示例三:同时显示部门平均工资和岗位平均工资:SELECT deptno,job,avg(sal) FROM emp GROUP BY GROUPING SETS(deptno,job);4.5.连接查询4.6.子查询4.6.1.单行子查询4.6.2.多行子查询4.6.3.多列子查询SELECT ename,job,sal,deptno FROM emp WHERE (deptno,job)=SELECT deptno,job FROM emp WHERE ename=’SMITH’);4.7.合并查询操作符包括:union,union all,intersect 和minusINTERSECT 操作符用于获取两个结果集的交集。

MINUS操作符用于获取两个结果集的差集。

4.8.其他复杂查询4.8.1.层次查询4.8.2.使用CASE 表达式4.8.3.倒叙查询查看当前数据:SELECT ename,sal FROM emp WHERE ename=’CLARK’;查看历史数据:SELECT ename,sal FROM emp AS OF TIMESTAMP ot_timestamp( ‘2003-05-18 19:59:00’,’YYYY-MM-DD HH24:MI:SS’)WHERE ename=’CLARK’;使用DBMS_FLASHBACK 包获取特定SCN的数据Exec dbms_flashback.enable_at_system_change_num(717402);Select sal from emp where ename=’SCOTT’;Exec dbms_flashback..distableSelect sal from emp where ename=’SCOTT’;4.8.4.使用WITH子句重用子查询通过with 子句可以给子查询指定一个名称,并且使得在一条语句中可以完成所有任务,从而避免了使用临时表。

示例一:显示部门工资总和高于雇员工资总和三分之一的部门名及工资总和(两次使用相同子查询)SELECT dname,sum(sal) as dept_total FROM scott.emp emp,scott.dept dept WHERE emp.deptno=dept.deptno GROUP BY dnameHAVING sum(sal)>(SELECT sum(sal)*1/3FROM scott.emp emp,scott.dept dept WHERE emp.deptno=dept.deptno);示例一:显示部门工资总和高于雇员工资总和三分之一的部门名及工资总和(使用with子句重用子查询)WITH summary AS (SELECT dname,sum(sal) as dept_total FROM scott.emp emp,scott.dept dept WHERE emp.deptno=dept.deptno GROUP BY dname)SELECT dname,dept_total FROM summary WHERE dept_total>(SELECT sum(dept_total)*1/3FROM summary )5.SQL函数学习目标:●在SQL语句和PL/SQL 块中使用数字函数;●在SQL语句和PL/SQL 语句中使用字符函数;●在SQL语句和PL/SQL 语句中使用日期函数;●在SQL语句和PL/SQL 语句中使用转换函数;●在SQL语句和PL/SQL 语句中使用Oracle 10g 新增加的集合函数;●在SQL语句中使用分组函数;●了解并掌握Oracle 10g、Oracle 9i 新增加的SQL函数。

5.1.数字函数5.2.字符函数5.3.日期时间函数5.4.转换函数5.5.集合函数5.6.其他单行函数5.7.分组函数5.8.对象函数6.访问Oracle学习目标:●在PL/SQL块中检索单行数据;●在PL/SQL 块中嵌入DML语句;●使用SQL游标属性;●在PL/SQL块中嵌入事务控制语句。

相关文档
最新文档