PL╱SQL培训教程.doc_第1页
PL╱SQL培训教程.doc_第2页
PL╱SQL培训教程.doc_第3页
PL╱SQL培训教程.doc_第4页
PL╱SQL培训教程.doc_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PL/SQL培训教程文档作者:创建日期:确认日期:控制编码:当前版本:1.0目录目录2UNIT1 SQL、PL/SQL概要1单元培训目标1LESSON 1 SQL、SQL*Plus和PL/SQL基本概念1UNIT2 数据查询3单元培训目标3LESSON 1简单的数据查询3基本结构:3算术表达式:3字符串处理4空处理4消除重复行:4显示表结构:4LESSON 2 SQL*Plus的使用5SQL*Plus的使用:5数据控制输出7逻辑比较7LESSON 3 单行函数的使用8字符函数8数值函数8日期函数9转换函数9单行函数使用的例子:10LESSON 4多表数据查询11连接11表别名11非等号连接11外连接11自连接11LESSON 5组函数12基本格式12常用组函数12LESSON 6 子查询13格式14UNIT3数据库16单元培训目标16LESSON 1系统开发周期和数据关联16系统开发周期16数据关联17约束17LESSON 创建表、序列、视图和索引17创建表格式18创建序列格式19创建视图20创建索引20LESSON 3Oracle数据字典21Oracle数据字典的四大类视图:21其他视图:21常用视图21LESSON 4用户访问控制:22系统权限:22对象权限:23权限的回收:24创建同义词:24远程数据库的访问:24UNIT4 PL/SQL26单元培训目标26LESSON 1简单PL/SQL26PL/SQL结构26匿名块,过程和函数27包27触发器28PL/SQL环境30Oracle Procedure Builder的使用30程序中的参数和变量类型32LESSON 数据获取和游标35数据获取35游标36LESSON PL/SQL控制流37IF 语句37LOOP 语句37LESSON 出错处理38Exception 类型38Exception 处理39非预定义的Oracle 数据库例外40用户自定义的例外:41附录A:42数据结构:42描述:423Company Confidential - For internal use onlyUNIT1 SQL、PL/SQL概要单元培训目标u 了解SQL、PL/SQL的基本概念、功能u 了解Oracle 产品集和关联u 了解SQL、PL/SQL的基本命令LESSON 1 SQL、SQL*Plus和PL/SQL基本概念本节主要讲述SQL、PL/SQL和SQL*Plus的基本概念,以及Oracle产品集之间的关联。SQL、SQL*Plus和PL/SQL是用来检索和维护存储在Oracle数据库上数据的工具或语言。u Oracle是一个对象 关系型数据库管理系统(ORDBMS),它扩展了普通关系型数据库管理方式,支持面向对象的概念,以表的形式存储信息,维护数据的输入、数据的存储和数据查询并处理及对数据的三种基本操作:采集、存储、检索。u SQL: 结构化查询语言(Structured Query Language),用来与Oracle数据库服务器进行交互。 例:select name, salary from t_emp select sysdate from dualu PL/SQL: Oracle扩展的SQL语言,具有完整的流程控制定义。u SQL*Plus: Oracle常用的工具,用来识别SQL语言和编写、执行PL/SQL代码,它与Oracle数据库管理系统紧密结合。u SQL*Plus环境登录:(1) windows环境(2) 命令行环境如下格式:Sqlplus username/passworddatabaseusername数据库用户名password数据库的密码,此时是可见的database要登录的数据库名一旦成功登录,系统提示如下:SQLu SQL常用命令:分类命令数据检索Select数据维护(DML)insert、update、delete数据定义(DDL)create、drop、alter、rename、truncate事务处理控制commit、rollback、savepoint数据控制(DCL)Grant、revokeu 数据、操作系统、Oracle数据库管理器、SQL和PL/SQL及工具之间的关系u 在Oracle的产品中有如下的关系:以数据为核心,Oracle Server 结合操作系统进行数据传递和通信,外围有SQL*Plus等工具提供给用户,通过SQL、PL/SQL与Oracle Server交互。 (如下图:)u 代码、缩写和命名标准:由于SQL与自然语的相似性,同时为提高代码的可读性,对于检索语句、表列命名和程序代码应采用标准规则,表名和列名既要反映数据的实际意义,又要考虑简洁性、完整性。Oracle允许使用最多30个字符命名表和列,为建立完整的、含义明确的、描述性的名称提供了足够的空间。对于程序代码,更要讲究规范性,如变量、函数名等等,要含义明确,提高程序的可读性。UNIT2 数据查询单元培训目标u 理解Oracle数据查询的概念和作用;u 掌握数据查询的基本方法;u 通过函数、子查询的学习,能写一些较复杂的数据查询。LESSON 1简单的数据查询为了检索数据库中的数据,必须使用SQL建立相应的查询语句。本节从最基本的SELECT语句结构出发,讲述如何建立简单的数据查询。SELECT distinct *, column alias, FROM TABLE基本结构:SELECT:选择要查询的数据列FROM:数据列所在的表*:选择所有的列COLUMN:选择的列名ALIAS:给选定的列一个别名例:SELECT * FROM s_dept SELECT last_name, first_name, address FROM s_emp算术表达式:除了单一的获取数据库数据,也可以在检索的数据列中,可以做各种的算术表达式,以获取所需数据,常用算术运算符有:加:+减:-乘:*除:/例:SELECT last_name, salary * 12, base_salary + salaryFROM tablename字符串处理字符串可以做最简单的“加”法,即合并运算:|例:SELECT column1|.|column2 |$FROM tablename注:column1、column2必须位字符型数据列SELECT first_name | | last_name|,| title “Employees” FROM s_emp空处理在Oracle数据库中,常会用到一种空处理,对于数据列中的空值,要做特定处理,就会用到下面空处理函数:NVL:在数据列的值为空时(并非为零),以真实的值进行替代处理例:NVL (start_date, sysdate)NVL (name, no name)NVL (base_salary, 2000)注:任何未被声明为NOT NULL或PRIMARY KEY的列都可包含空值,注意,空值就是空值,并不是值为零或空格,零是一个数值,空格是一个字符,而空值就是不具有任何类型的值。例:select first_name, nvl(base_salary, 2000) from s_emp;消除重复行:对于数据检索中的重复行,可用如下方法去掉:SELECT DISTINCT column1, column2 FROM TABLE例:SELECT item_id from t_onhand SELECT DISTINCT item_id FROM t_onhand选择多列非重复:例:SELECT DISTINCT warehoused_id, item_id FROM t_onhand显示表结构:对于一个并不熟悉的数据表,要检索其数据,必须知道它的结构和例的数据类型,否则,就无法在SELECT语句中,写出其数据列表达式,通过如下方法,可以显示该数据表的结构:DESCRIBE tablename格式:Oracle常用数据类型:number(p, s):浮点类型,最大精度p,小数位s位varchar2(s):可变长字符类型,最大长度s位date:日期型char(s):定长字符类型,长度为s例:NameNullType-item_idNOT NULLnumberitem_nameNOT NULLvarchar2(20)base_pricenumber,descriptionvarchar2(100)class_idnumberSQLdesc t_itemLESSON 2 SQL*Plus的使用本节介绍Oracle最常用的一个工具SQL*Plus,在它的环境中,可以通过命令方式执行数据检索、PL/SQL块编辑和编译等等。SQL*Plus的使用:I. 文件命令a) SAVE filename 把当前SQL缓冲区的内容存储在文件filename中b) GET filename 把文件filename中的内容写入当前SQL缓冲区c) START filename 执行存储在filename中的内容d) filename 执行存储在filename中的内容e) EDIT filename 打开文本编辑器,把当前SQL缓冲区的内容写入文件afiedt.buff) SPOOL filename 把查询的数据结果存储在filename中g) EXIT 退出SQL*Plus例:在SQL*Plus中敲入如下命令:SQLe:testdemo.sqlSQL*Plus则自动运行存储在e:testdemo.sql中的PL/SQL代码。II. 文本编辑命令a) APPEND text在当前行末尾添加文本textb) CHANGE/old/new在当前行中以new替代old文本c) CLEARbuffER清空缓冲区的所有文本d) DEL删除当前行e) INPUT text插入行f) LIST n显示第n行g) N text以文本text代替第n行III. 在SQL*Plus中,可以预定一些列的输出格式,这样,有利于数据的整齐性,同时,也可通过这些格式的制定,做一些简单的SQL*Plus报表,其格式输出如下: a)格式:COLUMN column|aliasoption b)参数选项:CLEAR、FORMATformat、HEADINGtext、JUSTTIFYalign、NOPRINT、NULLtext、PRINT、TRUNCATED、WEAPPEND、WORD_WRAPPED例:COLUMN last_name HEADING employee|name FORMAT A15COLUMN salary JUSTIFY LEFT FORMAT $99,999.00COLUMN start_date FORMAT A9 NULL Not hiredc)字符和数值格式:格式描述举例输出结果An设置字符串或数据类型的显示长度N/AN/A9代表非零数值位99999912340限定以零带头09999901234$代表美元符号$9999$1234L代表本地货币符号L9999L1234.代表小数点位置9999.991234.00,代表千位分割符9,9991,234数据控制输出对于检索的数据集,可以使用ORDER BY语句指定其排序方式,即输出方式:SELECTexprFROMtableWHEREcondition(s)ORDER BY expr ;在expr后可指定其排序方式,缺省为升序排列输出,添加参数desc则为降序排列输出。例:SELECT employee_id, first_name, last_name, salaryFROM t_empORDER BY first_name, salary逻辑比较Oracle常用的逻辑比较操作如下:=、=、to_date(2001-01-01,yyyy-mm-dd)And last_name like %H%注意:在逻辑比较中,NOT的级别最高,其次是AND,最后是OR负操作:(通过与not组合,产生非值)NOT BEWTEEN ANDNOT IN (list)NOT LIKEIS NOT NULLLESSON 3 单行函数的使用Function_name(column|expression, arg1, arg2, )在Oracle的数据检索中,当简单的运算,例如加、减等不能满足对数据列的处理时,可以通过使用功能更强大的单行函数来达到目标,基本格式如下:SQL中共有两种列函数,一是单行函数,另一是多行函数,单行函数主要有四种类型:字符函数、数字函数、日期函数和转换函数。单行函数对数据检索中的每一行作用,每一行返回一个结果。如下一一介绍各类型函数的使用:字符函数如下是用来处理类型为字符类型的数据或数据列:LOWER(col|expr)、UPPER(col|expr)、INITCAP(col|expr)CONCAT(col|expr1, col|expr2)、SUBSTR(col|expr, m, n)LENGTH(col|expr)NVL(col|expr1, col|expr2)其中,LOWER函数是把字符串全部转换为小写;UPPER函数功能与LOWER刚好相反,它是把全部字符串转换为大写;CONCAT是用来连接两个字符串,类似于运算符|;SUBSTR是用来截取母字符串中的一个子串,在SQL中较常用到;LENGTH是来册字符串的长度;而NVL具有所有NVL的通用性,即是在列值为空时,用后者取而代之。例:SQLSELECT substr(STRING, 2,3) from dualSQLTRI数值函数如下是用来处理类型为数值类型的数据或数据列:ROUNDTRUNCMOD注意:round和trunc函数具有不同之处,截取的方法不同,如下有一些示例,说明这两则的不同用法,如下:例:round(23535.7476, 2) = 23535.75 round(23535.7476, 0) = 23536 round(23535.7476, -1) = 23530 trunc(23535.7476, 2) =23535.74 trunc(23535.7476) =23535trunc(23535, -1) = 23530日期函数如下是用来处理类型为日期类型的数据或数据列的函数:MONTHS_BETWEEN(date1,date2)ADD_MONTHS(date,n)NEXT_DAY(date,char)LAST_DAY(date)ROUND(date,fmt)TRUNC(date,fmt)日期函数有其特性:例:add_months(to_date(2001-05-01,yyyy-mm-dd), 2) =2001-07-01add_months(to_date(2001-05-01,yyyy-mm-dd), -2) =2001-03-01注意:两个日期不可相加,但可做减法,结果为number型,日期型数据加/减数值型数据结果为日期型,日期型数据间不可做乘除法,其他运算借助于日期函数。SYSDATE:SYSDATE是一个返回系统日期和时间的函数,可以把SYSDATE作为任何表中都具有的普通列。DUAL:DUAL是用户SYS的一个表,可以被任何用户使用,它只包含一个列DUMMY,且只具有一行值“x”,这是一个非常有用的表,常用来返回一些常量、单值等等。例如:SQLSELECT SYSDATE FROM DUAL转换函数很多时候,不仅要在同一类型中进行运算,还要把某一类型数据转换为其他类型,以例运算或显示,如下是用来进行处理数据或数据列的类型的类型转换函数:TO_CHAR(number/date, fmt)TO_NUMBER(char)TO_DATE(char, fmt)转换函数即用来变换数据的类型,如把字符串按格式转换成日期型、数值型,八数值型、日期型转换成字符串等等。在to_date的函数中,注意fmt的使用,区别yyyy 和RRRR,RR,yy等,如下是to_date格式的详细情况:格式描述SCC or CC世纪,S则在BC日期前加-YYYY or SYYYY年,S则在BC日期前加-YYY or YY or Y年份的后3或2或1位数字Y,YYY年份,中间以“,”号隔开IYYY, IYY, IY, IISO标准的年份,分别为四位,三位,两位和一位SYEAR or YEAR年的拼写,S则在BC日期前加-BC or AD年份的BC或AD的标示Q季度MM月份,数值MONTH月份的全拼写MON月份的拼写,前三位RM罗马数字月份WW or W一年中的星期或月中的星期DDD or DD or D年或月或星期中的天DAY天的星期,全拼写DY天的星期,前三位拼写JJulia天,从4713BC开始例:SELECT TO_CHAR(sysdate,DAY) FROM DUAL;SELECT TO_DATE(2001-07-14,YYYY-MM-DD) FROM DUAL单行函数使用的例子:例:例1:SELECT last_name|.|first_name, employee_id, manager_id FROM s_empWHERE trunc(start_date) = to_date(2001-05-12,yyyy-mm-dd)And length(last_name)=、100所有的组值函数都有一个distinct或all选项,缺省的选项为all,count函数就是一个说明起作用的例子:注意如下查询的结果:SELECT count(distinct item_id), count(item_id), count(*) FROM t_onhandHAVIGN与WHERE:WHERE语句作用在数据检索的每一列上,对每一列进行判定,HAVING语句则是作用在每一组上,对每一组进行判定,WHERE语句在HAVING起作用前作用。考虑以下SQL语句的查询: SELECT t1.last_name, sum(t2.quantity*t2.price)FROM s_emp t1, S_sales t2 WHERE t1.emp_id=t2.emp_id And nvl(t2.cancel_flag,N)Y And nvl(t2.approval_flag,N)=Y Having sum(t2.quantity*t2.price)10000;LESSON 6 子查询子查询是一段嵌入在另一段SQL语句中SELECT语句,通过子查询,可以建立功能强大的查询语句,尤其在检索某以数据表时,又依奈这张表本身的一些情况。格式SELECT select_listFROM tableWHERE expr operator (SELECT select_list FROM table)注:I. Expr 与子查询的select_list有相应的结构和数据类型II. 子查询无order by 语句III. 子查询必须在operator的右面下名通过一些例子来说明子查询的应用。例:SELECT t1.item_id, t1.quantity, t1.rec_dateFROM t_onhand t1WHERE rec_date = ( SELECT min(x.rec_date) FROM t_onhand xWHERE x.item_id = t1.item_id)当然,很多时候子查询也可由组函数实现,比较一下下面查询的结果与前者的情况:SELECT T1.item_id, T1.quantity, T1.rec_dateFROM t_onhand T1,(SELECT item_id, min(rec_date) rec_date FROM t_onhand) T2WHERE T1.item_id = T2.item_id And T1.rec_date = T2.rec_date可用于operator的运算符很多,分为单行子查询和多行子查询,单行子查询即是在自查询的结果中,至多返回一行值,可用于单行子查询的逻辑运算符有:=、= 或者= 多行子查询相对于单行子查询,即在子查询中可返回多行数据结果,可用于多行子查询的逻辑运算有:in、not in还有一种存在性相关子查询,即exists语句,它与in子查询相似,但有两点不同:i. 不能匹排一列或多列ii. 只能用于相关子查询例:SELECT T1.item_name, T1.descriptionFROM t_item T1Where exists ( SELECT * from t_sales WHERE item_id = T1.item_id)UNIT3数据库单元培训目标u 理解Oracle数据库的概念和作用;u 能创建常用的数据库对象(如表、索引、视图和序列);u 学会使用数据库字典,记住一些常用视图LESSON 1系统开发周期和数据关联大型数据库应用系统的开发都是以一定的标准流程开发的,而重要的一条就以系统开发周期为参照,定制开发流程和开发计划,逐步实施。深刻理解数据关联的概念时非常重要的,这对数据库应用系统的设计,具体到数据库对象的设计都是深刻影响的,一个性能优越的数据库应用系统很大程度上依耐于数据库结构的设计,而理解数据关联的实质有利于数据库的设计。系统开发周期通过使用系统开发周期策略,实现数据库从概念到产品的转变,系统开发周期包含多个开发过程和步骤。这种由上到下、系统的方法可把实际的业务需求变成可操作的数据库概念。有如下步骤(流程):I. 分析,策略: 根据企业的实际业务和将要扩展的业务需求,分析所要提供的信息和企业及系统特性,建立相应系统模型;II. 设计:数据库设计,把实体模型映射成数据库表之间的关联,外键关联和约束;III. 开发和创建文档:开发业务流程,建立用户界面,操作流程,并创建相应文档(如帮助文档、操作手册等)IV. 产品化:集成各模块功能,统一成一个完整产品,并做好各项测试准备;V. 测试:功能测试、业务流程测试、出错流程测试最后的安装测试等。在这几步步骤中,第二步尤为重要,直接影响开发的成败和效率,在第二步中,应用开发者重点要要考虑以下一些因数:效率:最初的设计是最终设计的一个雏形,要充分考虑业务的效率;系统集成:系统的多个模块间不是孤立的,应有紧密的结合,这种结合并非看起来或感觉上的,是从逻辑上和业务流程上的角度来分析的;与其他系统的集成:企业与运作时,往往有多个系统的存在,但同时各个系统间是有结合的、联系的,如数据上、业务上的,同时还要考虑未来业务需求的标准接口等等;数据关联系统开发周期第二步的重点工作就是建立逻辑模型,逻辑模型是业务数据的非常规范化的流程图。懂得数据分解的原因和方法是理解模型的基础,而模型又是建立长期支持业务应用程序的基础。规范化的过程通常用“范式“一词来讨论,最常见就是第一、二、三范式,其中第三范式是最高的规范化层次。I. 第一范式(1NF):具体做法就是将每一个表中具有相似类型的数据存入不同的表中,并给每个表确定一个主关键字(即是:Primary Key)- 唯一的标号或标示符,消除重复数据;II. 第二范式(2NF):即是表中数据列只依赖主关键字;III. 第三范式(3NF):即是找出不只是依赖于主关键字的说有数据列。约束为实现数据结构的规范化标准,即是各级范式,可以在定义表结构时,定一各个列和表的约束,从而严格表中的数据,格式如下:Column CONSTRAINT constraint_name constraint_type数据列级约束:Column CONSTRAINT constraint_name constraint_type数据表级约束:约束主要要以下几种:I. Primary Key(PK):由一列或多列构成的唯一标示各行的列;II. Foreign Key(FK):即由表中一列或列组合来映射同一表或别的表的PK或UK(unique key);III. NOT NULLIV. UNIQUEV. CHECK对于建立约束的例子,可在建立数据表中参考。LESSON 创建表、序列、视图和索引下面从最基本的数据库对象建立讲起,逐步理解系统开发周期的意义,以及数据关联的意义。CREATE TABLE schema.table(column datatype DEFAULT expr column_constraint , table_constraint);创建表格式Schema所有者标识Table列表名Column列名Datatype列的数据类型Column_constraint列约束CREATE TABLE s_dept(idNUMBER(7)CONSTRAINT s_dept_id_pk PRIMARY KEY,NameVARCHAR2(25)CONSTRAINT s_dept_name_nn NOT NULL,Region_idNUMBER(7)CONSTRAINT s_dept_region_id_fk REFERENCESS_region (id),CONSTRAINT s_dept_name_region_id_uk UNIQUE(name, region_id);Table_constraint表约束例:很多时候,数据库表的设计都可以通过表的示例图来设计,通过先创建数据表的示例图,再来创写数据表的角本,这是一种非常有效的方式,如下:例:通过如下数据表的示例图,创建数据表t_emp:Column NameIDLast_NameUseridStart_dateCommission_pctDept_IDKey TypePKFKNulls/UniqueNN,UNNNN,UFK TableFK ColumnIDDatetypeNumCharCharDateNumNumLength725867创建序列格式CREATE SEQUENCE sequenceINCREMENT BY nSTART WITH nMAXVALUEn|NOMAXVALUEMINVALUEn|NOMINVALUECYCLE | NOCYCLECACHE n | NOCACHE说明:标示说明Sequence建立的序列名INCREMENT BY序列数字间的间隔,缺省为1START WITH n第一个序列值,缺生为1MAXVALUE n序列的最大值NOMAXVALUE确定序列的最大值,为10的27次方MINVALUE n序列的最小值NOMINVALUE确定序列的最小值,为1CYCLE|NOCYCLE确定序列值达到最大值时,是否重复开始,缺省为NOCYCELCACHE n|NO CACHE确定数据库管理器于值和存储的值的个数,缺省为NOCACHE序列常用来给一个表的列赋值序列有NEXTVAL和CURRVAL方法。例:CREATE SEQUENCE t_item_s Increment by 1Start wih1Maxvalue 999999NocacheNocycle;是运行如下命令,看看结果:select t_item_s.nextval from dual;select t_item_s.currval from dual;CREATE OR REPLACE FORCE|NOFORCE VIEW view(alias,alias)ASsubsequeryWITH CHECK OPTION constraintWITH READ ONLY创建视图注:I. Subquery可以是非常复杂的select语句II. Subquery不能包含ORDER BY语句实际上,视图是一个基于数据表或其他视图的逻辑数据表,一个视图本身并不包含数据,仅仅是一个可以用来查看数据或更新的窗口,一个视图在数据字典中是以一个select语句存储的。使用视图有着许多优点:i. 限制数据表的访问:由于它是一条select语句,通过选择的取舍,使用户只能看到或只需看到所要检索的数据列;ii. 允许用户通过一个视图检索多个表的信息,而不要去写复杂的SQL语句;创建索引I. 自动创建在创建表时,若包含Primary Key或者其他唯一约束时,一个唯一索引就自动创建立了。II. 手动创建CREATE INDEX indexON table (column, column);用户可以创建非唯一的索引来提高检索速度。III. 何时建立索引:列经常在where或连接中使用;列包含了一个大范围的值;列包含了大量的空值;两个或多个列常常在where或连接中一起被使用;表的数据量大,而常常检索其中的2-4%;太多的索引并不总是能提高检索速度。表空间的概念:Oralce把文件作为其组织系统的一部分,但是它的逻辑结构已超出文件的概念。一个表空间就是一片磁盘区域,它有一个或多个磁盘文件组成。一个表空间可以容纳许多表、索引或是试图等等。由于表空间的大小是固定的,所以在向表中间增加行时,可能装满整个表空间。可以由拥有DBA权限的用户或是自动扩展这个表空间,其过程是先创建一个磁盘文件,然后将此文件增加到表空间中,或是直接扩大已存在的数据文件,因此,这些表中的行就会分布于两个文件中。一个或多个表空间一起就构成了数据库。每一个数据库均包含一个系统表空间,这里保存业者的记录和地址,它包含数据字典、数据库的表空间、表、索引的名称和地址。下面是一个创建表空间的示例:create table space usertemp datafile HOME.ONE size 1000kdefault storage (initial 25k next 10k) minextents 1 maxextent 100 pctincrease 0)permanent;LESSON 3Oracle数据字典Oracle数据字典是Oracle数据库管理系统的重要组件之一,它包含一系列数据表和数据视图,提供只读属性的数据库信息。Oracle数据字典实在数据库建立的时候建立的,又Oracle数据库管理器进行更新和维护,提供Oracle数据库用户、各个用户的权限、数据库对象、数据表约束等等信息。Oracle数据字典的四大类视图:- user用户拥有的对象- all用户可访问对象- DBA所有数据对象- v$服务器性能对象其他视图:- DICTIONARY显示所有数据字典的数据表、视图和同义词- TABLE_PRIVILEGES显示数据对象的所有者、授权者和权限- INDUser_indexes的同义词常用视图DICTIONARY、TABLE_PRIVILEGES、INDALL_TABLES、USER_OBJECTS数据字典使用示例:例一:SELECT distinct object_name, object_typeFROM usr_objects 例二:SELECT * FROM user_constraintsWHERE table_name =T_ITEMLESSON 4用户访问控制:在一个多用户数据库环境,必须维护数据访问和使用的权限,Oracle数据库管理器提供以下安全机制控制:I. 控制数据库的访问;II. 提供数据库对象的局部访问;III. 通过数据字典验证赋予和接收特权;IV. 为数据库对象创建同义词。数据库安全分为两类,一是系统安全,二是数据安全。系统安全控制数据库的访问和使用这一层次,例如用户和密码,用户能使用的数据空间,用户允许使用的操作系统等等;数据库安全控制数据库对象的访问和使用,以及能在这些数据库对象上能进行的操作。权限的概念即是执行特定SQL语句的权利。数据库的系统管理员具有最高的权限,普通用户必须有系统管理员赋予权限来访问数据库和数据库对象,当然,用户也可具有赋予其他用户或角色的权利。系统权限:DBA具有最高级系统权限,典型的系统权限有:系统权限操作授权CREATE USER赋予创建其他Oracle用户权限DROP USER删除任何用户DROP ANY TABLE删除任何束中的表BACKUP ANY TABLE备份任何束中的表CREATE USER user IDENTIFIEDBY password创建用户格式:GRANT privilege , privilege TO user , user 系统权限授权格式:角色:即是一组相似的权限,可以用来同一授权给一些用户。这样把相似的权限统一起来,易于给用户授权和维护系统权限,同时,一个用户也可以被授予多个角色权限。CREATE ROLE role;GRANT create table, create view TO manager;GRANT manager TO userA, userB;用例如下:对象权限:GRANT object_priv (, object_priv ) | ALL ( columns ) ON objectTO user , user | role PUBLICWITH GRANT OPTION注意以下几点:1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论