PL/SQL --復習和總結PL/SQL想關知識點
年後回來,小敗一直在忙著修改簡歷和面試數據庫方面的知識,現在總結下ORCALE 11g PL/SQL知識點,更新博文也是時有時無。現在想把PL/SQL復習的所有步驟和知識點寫進博客中,就從PL/SQL入門基本知識開始吧!會把所有復習的寫進博客中的。
参考文献:《Oracle完全学习手册》第11章,大部分只是来自互联网,前面学过的就只剩下PPT教学文案了。
PL/SQL(Procedure Language/Structuer Query Language)的缩写,是Oracle对标准SQL规范的扩展,全面支持SQL的数据操作、事务控制等。PL/SQL完全支持SQL数据类型,减少了在应用程序和数据库之间转换数据的操作。
SQL(Structured Query Language)的组成:
构成PL/SQL程序的基本单位是程序块。程序块由过程、函数和无名块3种形式组成,它们之间可以互相嵌套。
PL/SQL的运行工具有:SQL*Plus、PL/SQL developer
PL/SQL块由3个部分组成:定义部分、执行部分、异常处理部分。PL/SQL块的基本结构如下:
标量数据类型大致可以分为以下四类:
在PL/SQL中,除了能使用上面说到的数据类型来声明单行单列变量之外,还可以使用%TYPE变量来声明单行单列变量.
还有%ROWTYPE变量用来存储一行数据.如下面使用%ROWTYPE类型的变量存储DEPT表中的一行数据:
标识符定义与SQL 的标识符定义的要求相同。要求和限制有:
操作符
与其他程序设计语言相同,PL/SQL有一系列操作符。操作符分为下面几类:
. 算术操作符
. 关系操作符
. 比较操作符
. 逻辑操作符
算术操作符如表4所示
关系操作符主要用于条件判断语句或用于where子串中,关系操作符检查条件和结果是否为true或false,表5是PL/SQL中的关系操作符
表6 显示的是比较操作符
表7.8显示的是逻辑操作符
控制结构控制PL/SQL程序流程的代码行,PL/SQL支持条件控制和循环控制结构。
语法:
如果条件condition为TRUE,则执行THEN到ELSE之间的语句,否则执行ELSE到END IF之间的语句。
IF 可以嵌套,可以在IF 或IF ..ELSE语句中使用IF或IF..ELSE语句。
语法:
如果条件condition1为TRUE则执行statement1,然后执行statement5,否则判断condition2是否为TRUE,若为TRUE则执行statement2,然后执行statement5,对于condition3也是相同的,如果condition1,condition2,condition3都不成立,那么将执行statement4,然后执行statement5。
循环控制的基本形式是LOOP语句,LOOP和END LOOP之间的语句将无限次的执行。LOOP语句的语法如下:
LOOP和END LOOP之间的语句无限次的执行显然是不行的,那么在使用LOOP语句时必须使用EXIT语句,强制循环结束,例如:
此时Y的值是1010.
EXIT WHEN语句将结束循环,如果条件为TRUE,则结束循环。
WHILE..LOOP
WHILE..LOOP有一个条件与循环相联系,如果条件为TRUE,则执行循环体内的语句,如果结果为FALSE,则结束循环。
FOR...LOOP
语法:
LOOP和WHILE循环的循环次数都是不确定的,FOR循环的循环次数是固定的,counter是一个隐式声明的变量,他的初始值是start_range,第二个值是start_range+1,直到end_range,如果start_range等于end _range,那么循环将执行一次。如果使用了REVERSE关键字,那么范围将是一个降序。
小结
我们在这篇文章中介绍了PL/SQL的基础语法以及如何使用PL/SQL语言设计和运行PL/SQL程序块,PL/SQL的循环控制,结构控制和标识符、操作符,PL/SQL的基本数据类型,
参考文献:《Oracle完全学习手册》第11章,大部分只是来自互联网,前面学过的就只剩下PPT教学文案了。
1.PL/SQL简单介绍
PL/SQL(Procedure Language/Structuer Query Language)的缩写,是Oracle对标准SQL规范的扩展,全面支持SQL的数据操作、事务控制等。PL/SQL完全支持SQL数据类型,减少了在应用程序和数据库之间转换数据的操作。
SQL(Structured Query Language)的组成:
● 数据查询语言(DQL):select语句用于检索数据库数据。
● 数据操纵语言(DML):用于改变数据库数据,包括INSERT、UPDATE、DELETE三条语句。
● 数据定义语言(DDL):用于建立、修改和删除数据库对象。如CREATE TABLE等,DDL语句会自动提交事务。
● 数据控制语言(DCL):用于执行权限授予和收回操作,包括GRANT和REVOKE两条命令。DCL语句会自动提交事务。
● 事务控制语言(TCL):用于维护数据的一致性,包括COMMIT、ROLLBACK、SAVEPOINT三条语句。
构成PL/SQL程序的基本单位是程序块。程序块由过程、函数和无名块3种形式组成,它们之间可以互相嵌套。
PL/SQL的运行工具有:SQL*Plus、PL/SQL developer
PL/SQL块由3个部分组成:定义部分、执行部分、异常处理部分。PL/SQL块的基本结构如下:
--DECLARE与EXCEPTION是可选的
[DECLARE
--定义部分]
BEGIN
--执行部分
[EXCEPTION
--异常处理部分]
END;
2.PL/SQL的常用数据类型
标量数据类型大致可以分为以下四类:
- Number
- Charater
- Data/Time
- Boolean
在PL/SQL中,除了能使用上面说到的数据类型来声明单行单列变量之外,还可以使用%TYPE变量来声明单行单列变量.
v_name emp.ename%TYPE;
还有%ROWTYPE变量用来存储一行数据.如下面使用%ROWTYPE类型的变量存储DEPT表中的一行数据:
set serveroutput on
DECLARE
v_dept dept%ROWTYPE;
BEGIN
SELECT * into v_dept FROM dept WHERE deptno=30;
DBMS_OUTPUT.PUT_LINE(v_dept.deptno);
DBMS_OUTPUT.PUT_LINE(v_dept.dname);
DBMS_OUTPUT.PUT_LINE(v_dept.loc);
END;
/
3.PL/SQL的标识符(命名规范)
标识符定义与SQL 的标识符定义的要求相同。要求和限制有:
- 标识符名不能超过30字符;
- 第一个字符必须为字母;
- 不分大小写;
- 不能用’-‘(减号);
- 不能是SQL保留字。
4.PL/SQL的操作符
操作符
与其他程序设计语言相同,PL/SQL有一系列操作符。操作符分为下面几类:
. 算术操作符
. 关系操作符
. 比较操作符
. 逻辑操作符
算术操作符如表4所示
| operator | operation |
| + | 加 |
| - | 减 |
| / | 除 |
| * | 乘 |
| ** | 乘方 |
关系操作符主要用于条件判断语句或用于where子串中,关系操作符检查条件和结果是否为true或false,表5是PL/SQL中的关系操作符
| operator | operation |
| < | 小于操作符 |
| <= | 小于或等于操作符 |
| > | 大于操作符 |
| >= | 大于或等于操作符 |
| = | 等于操作符 |
| != | 不等于操作符 |
| <> | 不等于操作符 |
| := | 赋值操作符 |
表6 显示的是比较操作符
| operator | operation |
| IS NULL | 如果操作数为NULL返回TRUE |
| LIKE | 比较字符串值 |
| BETWEEN | 验证值是否在范围之内 |
| IN | 验证操作数在设定的一系列值中 |
表7.8显示的是逻辑操作符
| operator | operation |
| AND | 两个条件都必须满足 |
| OR | 只要满足两个条件中的一个 |
| NOT | 取反 |
5.控制结构
控制结构控制PL/SQL程序流程的代码行,PL/SQL支持条件控制和循环控制结构。
IF..THEN...ELSE
语法:
IF condition THEN
Statements 1;
Statements 2;
....
ELSE
Statements 1;
Statements 2;
....
END IF
如果条件condition为TRUE,则执行THEN到ELSE之间的语句,否则执行ELSE到END IF之间的语句。
IF 可以嵌套,可以在IF 或IF ..ELSE语句中使用IF或IF..ELSE语句。
if (a>b) and (a>c) then
g:=a;
else
g:=b;
if c>g then
g:=c;
end if
end if
IF..THEN..ELSIF
语法:
IF condition1 THEN
statement1;
ELSIF condition2 THEN
statement2;
ELSIF condition3 THEN
statement3;
ELSE
statement4;
END IF;
statement5;
如果条件condition1为TRUE则执行statement1,然后执行statement5,否则判断condition2是否为TRUE,若为TRUE则执行statement2,然后执行statement5,对于condition3也是相同的,如果condition1,condition2,condition3都不成立,那么将执行statement4,然后执行statement5。
6.循环控制
循环控制的基本形式是LOOP语句,LOOP和END LOOP之间的语句将无限次的执行。LOOP语句的语法如下:
LOOP
statements;
END LOOP
LOOP和END LOOP之间的语句无限次的执行显然是不行的,那么在使用LOOP语句时必须使用EXIT语句,强制循环结束,例如:
X:=100;
LOOP
X:=X+10;
IF X>1000 THEN
EXIT;
END IF
END LOOP;
Y:=X;
此时Y的值是1010.
EXIT WHEN语句将结束循环,如果条件为TRUE,则结束循环。
X:=100;
LOOP
X:=X+10;
EXIT WHEN X>1000;
X:=X+10;
END LOOP;
Y:=X;
WHILE..LOOP
WHILE..LOOP有一个条件与循环相联系,如果条件为TRUE,则执行循环体内的语句,如果结果为FALSE,则结束循环。
X:=100;
WHILE X<=1000 LOOP
X:=X+10;
END LOOP;
Y=X;
FOR...LOOP
语法:
FOR counter IN [REVERSE] start_range....end_range LOOP
statements;
END LOOP;
LOOP和WHILE循环的循环次数都是不确定的,FOR循环的循环次数是固定的,counter是一个隐式声明的变量,他的初始值是start_range,第二个值是start_range+1,直到end_range,如果start_range等于end _range,那么循环将执行一次。如果使用了REVERSE关键字,那么范围将是一个降序。
X:=100;
FOR v_counter in 1..10 loop
x:=x+10;end loop
y:=x;
如果要退出for循环可以使用EXIT语句。
小结
我们在这篇文章中介绍了PL/SQL的基础语法以及如何使用PL/SQL语言设计和运行PL/SQL程序块,PL/SQL的循环控制,结构控制和标识符、操作符,PL/SQL的基本数据类型,
[…] PL/SQL-->基础知识篇 […]
回复删除[…] PL/SQL-->基础知识篇 […]
回复删除[…] PL/SQL –> PL/SQL基本知识 […]
回复删除