Oracle ---- SQL与PL/SQL概述(1)

2011-06-17
第3章 SQL 与 PL/SQL概述(1)
SQL(Structured Query Language, 结构化查询语句)适用于绝大多数关系数据库。 PL/SQL(Procedural Language/SQL)为Oracle数据库所独有。
3.1 SQL 与 PL/SQL简介
SQL是关系数据库语言,用于增删改查和管理关系数据库中的数据。SQL是所有程序和用户用于存取关系数据库中数据的命令集。
PL/SQL是Oracle对于关系数据库语言SQL的扩充。PL/SQL集成了现代软件工程的特点,将SQL的数据操纵功能和过程化语言数据处理功能结合起来,允许使用循环、分支等过程化方法来处理数据。
3.1.1 SQL 简介
1. SQL的产生与发展
一般情况下,实际系统中实现的SQL均对标准SQL进行了许多扩充,在对关系模型的符合程度上比标准SQL要更好。
2. SQL语言的特点
(1) 非过程化程度高 过程化语言编写程序时要在程序中把用户要做什么、如何做表达的很清楚;非过程化语言的特点就是用户只需在程序中指出要做什么,而如何做则交由系统决定并完成。
(2) 用户性能好 SQL语言非常便于学习与掌握。
(3) 语言功能强 SQL语言是一种关系数据语言。它兼容有关系代数语言和关系演算语言的特点。
(4) 提供有‘视图’数据结构 SQL语言可以对‘表(table)’和‘视图(view)’两种基本数据结构进行操作。 视图是由数据库中满足一定约束条件的数据所组成,他可以是由某个表中满足一定条件的行组成,也可以是由某个表的某些列组成,还可以是若干个表经过一定的运算的结果。通常将表定义为基本关系,视图定义为虚关系。虚关系在数据库中不是及存放。视图可以作为某个用户的专用数据部分,这样便于用户使用,提高了数据的独立性,有利于数据的安全和保密。
(5) 两种使用方式 一种是命令方式,另一种是程序方式。 采用命令方式使用SQL语言时,用户通过交互式的方式,每输入一条命令,系统就执行该命令,并且显示执行的结果;SQL还可以嵌入到像BASIC、C++、Java等高级语言中,组成一个完整的程序。
(6) 提供数据控制功能 SQL语言提供了事务控制,它能保证数据的共享以及并发使用而不产生干扰,也便于对数据库的回复。SQL语言另外提供了授权控制,也成为存取控制,他是为保证数据的安全与保密,防止非法用户对数据库的使用与破坏而采用的一种保护性措施。
3. SQL语言的组成与功能
SQL语言由5个子语言组成。
(1) 数据定义语言 (DDL - Data Definition Language) 数据定义语言用于定义和修改数据模式(如表)、定义外模式(如视图)、定义内模式(如索引)。
CREATE TABLE 创建数据库表。 DROP TABLE 删除数据库表,同时删除建立在该表上的索引和视图。 ALERT TABLE 修改数据库表。 CREATE VIEW 创建数据库视图。 DROP VIEW 删除数据库视图。 CREATE INDEX 创建数据库表的索引。 DROP INDEX 删除数据库表的索引。 (2) 数据查询语言(SELECT - Query Statements) 数据查询语句用于按指定的条件从表或视图中检索数据行,它包含着丰富的内容与用法。
SELECT 查询语句。 (3) 数据操纵语言(DML - Data Manipulation Language) 数据操纵语言用于对数据库中内容进行更新,在表中完成增、删、改数据行的数据操作功能。
INSERT 将新数据行追加到表或视图的基表中。 UPDATE 修改表或视图的基表中的值。 DELETE 从表或视图的基表中删除数据行。 (4) 事务控制语言(TC - Transaction Control Statements) Oracle处理DML语句的结果时,以事物(transaction)为单位进行。一个事物为一个工作的逻辑单位,是一组SQL语句序列。在执行每一条DML语句时,所有的操作都在内存中完成,所以在执行完DML语句后都应该执行事务控制语句,以决定是否将内存中的数据永久的表六道外存数据库中。
(5) 数据控制语言(DCL - Data Control Language) 数据控制欲言用于规定数据库用户的各种权限。 是指控制用户对数据库中数据的存取权利,而用户对某类数据具有的操作权利是由数据库管理员(DBA)来决定的。数据库系统的DBA一般通过数据控制语句的GRANT来授予权限,用REVOKE来收回权限。 基本过程为:首先将授权的决定告诉数据库管理系统,并将授权结果加以登记,而当用户提出请求时,要根据授权记录进行检查,以决定是执行用户的操作请求还是拒绝请求。
GRANT 将权限或较色授予用户或其他角色,用于指定操作权限。 REVOKE 从用户或数据库角色收回权限。 3.1.2 PL/SQL 简介
PL/SQL是Oracle对关系数据库SQL的过程化补充。PL/SQL集成了现代软件工程特色,将数据库技术和过程化程序设计语言连接起来,是一种应用开发工具。它增加的过程化语言成分包括变量和类型、控制结构、过程和函数、对象类型和方法等。将SQL语句嵌入到这些过程化的语言成分中,使PL/SQL把SQL语言的特点和第三代语言的强大功能结合在一起,并能以单记录方式处理对数据库的访问结果。
1. PL/SQL的产生与发展
标准SQL语言对于数据库进行各种操作,每次只能执行一条语句,语句以英文“;”为结束表示。这样极不方便且效率低下。标准SQL语言侧重于后台数据库的管理,因此提供的编程能力较弱,而结构化编程语言对数据库的支持能力又较弱。正是基于这一需求,Oracle公司发展了自己的过程化SQL----PL/SQL。
2. PL/SQL语言的特点
PL/SQL是一种完全可移植的、高性能的事物处理语言。它具有以下特点:
(1) 支持SQL语言。 SQL由于它的灵活、功能强和容易掌握等特点,成为关系数据库标准语言。SQL是非过程化语言,PL/SQL允许使用全部DML语句、游标控制语句、事务控制语句,以及全部SQL函数、运算符等。
(2) 更高的开发效率。 Oracle提供的开发环境更高效。
(3) 更高的性能。 PL/SQL产生后,一个完整的PL/SQL程序块一次发送到Oracle,减少了对Oracle的调用及与Oracle的通信次数,降低了成本提高了性能。
(4) 可移植性。 使用PL/SQL所编制的程序,可移植到Oracle与性的任何操作系统的平台上,无需修改。
(5) 与Oracle相集成。 PL/SQL和Oracle都是基于SQL的,而且PL/SQL支持SQL全部数据类型。
3. PL/SQL程序语言的组成与功能
PL/SQL程序由块结构构成,在PL/SQL程序中含有变量、各种不同的程序控制结构、异常处理模块、子程序(过程、函数、包)、触发器等。
(1) 块结构。 PL/SQL程序中的基本单位是‘块’(block),所有的PL/SQL程序都由块构成。这些块可以相互嵌套。通常每个块为程序的一个单元工作,每个块分担不同的任务。 每个块分为3部分:说明部分(declarative section)、执行部分(executable section)、可选的异常处理部分(exception section)。其中执行部分至少包括一条可执行语句。由错误处理代码构成的异常处理部分与程序主体分离,使得程序本身结构更假清晰。在程序JPL/SQL中,块分为无名块和命名块。 无名块(anonymous)是动态生成的,且只能被执行一次。命名块(named)是一种带标签的块,此标签为块指定了一个名字,命名块包括函数、过程、触发器、包等。
(2) 变量。 在块的说明部分可以定义变量,用来在程序和数据库之间进行信息交换。对每个变量都要定义一个类型,此类型定义了变量中存储的数据结构。
(3) PL/SQL程序控制结构。 有分支结构(IF-THEN-ELSE型的条件语句、CASE语句);循环结构(简单循环、数字式FOR循环、WHERE循环、游标式FOR循环);GOTO语句。
(4) 异常处理 PL/SQL用‘异常’(exception)来实现错误处理,可以用来处理运行时刻出现的错误,每当程序出现一个错误,就会出发一个异常,将控制转给异常处理器。
(5) 子程序(subprogram)。 子程序是存储在数据库内部的过程、包、函数,这些块通常在生成后不再修改,且能执行多次。
(6) 触发器。 触发器是存储在数据库内部的带名的块,这些块通常在生成后不再修改,且能执行多次。
3.2 SQL Plus简介
SQL Plus是Oracle的开发工具。可以使用它来定义和操作Oracle关系数据库中的数据。
SQL Plus对英文字母大小写是不敏感的,即在SQL Plus环境中,PL/SQL代码可以随意使用英文大小写格式。输入的SQL语句末尾要加上分号“;”。执行PL/SQL程序,输入的 PL/SQL程序的最后一条语句的下一行,需要输入斜杠“/”。
Tags: 

延伸阅读

最新评论

发表评论