PL/SQL --復習和總結PL/SQL想關知識點

年後回來,小敗一直在忙著修改簡歷和面試數據庫方面的知識,現在總結下ORCALE 11g 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所示



























operatoroperation
+
-
/
*
**乘方

关系操作符主要用于条件判断语句或用于where子串中,关系操作符检查条件和结果是否为true或false,表5是PL/SQL中的关系操作符







































operatoroperation
<小于操作符
<=小于或等于操作符
>大于操作符
>=大于或等于操作符
=等于操作符
!=不等于操作符
<>不等于操作符
:=赋值操作符

表6 显示的是比较操作符























operatoroperation
IS NULL如果操作数为NULL返回TRUE
LIKE比较字符串值
BETWEEN验证值是否在范围之内
IN验证操作数在设定的一系列值中

表7.8显示的是逻辑操作符



















operatoroperation
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的基本数据类型,

评论

发表评论

此博客中的热门博文

于谦真是一个窝囊废吗?-PingWest 品玩

从WordPress导入文章到Blogger

So推荐,精美手机壁纸和两款美化APP