oracle 总结


1.数据库的三范式?
    一范式: 每个列都是不可分割的原子单元;无重复的列

    二范式: 必须满足第一范式; 每个列都依赖于主键。

    三范式:属性不依赖于其它非主属性 [ 消除传递依赖 ]

 

2.主键的设计原则有哪些?

   a.主键应当是对用户没有意义的。

   b.主键应该是单列的,以便提高连接和筛选操作的效率。

   c.永远也不要更新主键。

   d.主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。

   e.主键应当有计算机自动生成。

 

 

3.数据的约束有哪些特点(主键约束,唯一约束, 非空约束, null约束, 默认值约束, check[枚举]约束, 外键约束, 长度约束)

 

4.主键约束和唯一约束有哪些区别?

1.主键约束(PRIMARY KEY)

1) 主键用于唯一地标识表中的每一条记录,可以定义一列或多列为主键。 
2) 是不可能(或很难)更新. 
3) 主键列上没有任何两行具有相同值(即重复值),不允许空(NULL).
4) 主健可作外健,唯一索引不可;

2.唯一性约束(UNIQUE)
1) 唯一性约束用来限制不受主键约束的列上的数据的唯一性,用于作为访问某行的可选手段,一个表上可以放置多个唯一性约束.
2) 只要唯一就可以更新. 
3) 即表中任意两行在  指定列上都不允许有相同的值,允许空(NULL).
4) 一个表上可以放置多个唯一性约束

 

 

 

 

5.内连接和外连接的区别

1、内连接(自然连接): 只有两个表相匹配的行才能在结果集中出现 

2、外连接: 包括

(1)左外连接(左边的表不加限制)

(2)右外连接(右边的表不加限制)

(3)全外连接(左右两表都不加限制)

 

 

6.左外连接,右外连接和全外连接的区别

左外连接就是以左表为准,去匹配右表,左表有多少条数据,结果就是多少条数据
右外连接就是与左外连接反之,以右表为准,去匹配左表,右表有多少条数据,结果就是多少条数据
全外连接数据条数不一定,相当与是左外连接 和右外连接 的综合

 

7.你使用过哪些mysql函数.

字符串函数:cancat 连接字符串、lower将字符变成小写、upper转大写
聚合函数:count、avg、max、min、sun
数值函数:abs绝对值、cell向上取整、floor向下取整、mod(x,y)返回x/y的模
rand返回0~1内的随机值、 round 四舍五入
日期和时间函数:curdate返回当前日期,now返回当前日期和时间、
date_format(date fmt)返回按字符串fmt格式化日期date的值
datediff(expr,expr2)expr和expr2之间的天数
流程函数:if(value,t,f)如果value为真返回t,否则返回f
ifnull(t,f)如果t不为空,则返回t,否则返回f
datebase() 返回当前数据库名称

常用的函数有:

1. 字符串函数;主要用于处理字符串。

2. 数值函数;主要用于处理数字。

3. 日期和时间函数;主要用于处理日期和事件。

4. 系统信息函数;获取系统信息。

 

 

8.视图是什么? 视图的优点有哪些?

视图是存储在数据库中的查询的SQL 语句,它主要出于两种原因:安全原因, 视图可以隐藏一些数据,如:社会保险基金表,可以用视图只显示姓名,地址,而不显示社会保险号和工资数等,另一原因是可使复杂的查询易于理解和使用。
视图:查看图形或文档的方式。
视图是从一个或多个表或视图中导出的表,其结构和数据是建立在对表的查询基础上的。
和表一样,视图也是包括几个被定义的数据列和多个数据行,但就本质而言这些数据列和数据行来源于其所引用的表。
所以视图不是真实存在的基础表而是一张虚表,视图所对应的数据并不实际地以视图结构存储在数据库中,而是存储在视图所引用的表中。
视图一经定义便存储在数据库中,与其相对应的数据并没有像表那样又在数据库中再存储一份,通过视图看到的数据只是存放在基本表中的数据。
对视图的操作与对表的操作一样,可以对其进行查询、修改(有一定的限制)、删除。
当对通过视图看到的数据进行修改时,相应的基本表的数据也要发生变化,同时,若基本表的数据发生变化,则这种变化也可以自动地反映到视图中。

 

 

9.常用的oracle的函数有哪些?

字符函数:concat、instr、length、lower、upper、replace
数字函数:abs绝对值、cell向上取整、floor向下取整、round四舍五入
日期函数:add_months(d,n)在日期d的基础上加上n个月,返回新的date、
last_day(d):返回指定日期d当月的最后一天
round(d[,fmt]):返回fmt字符串格式的四舍五入日期值
extract(fmt from d):提取日期中特定部分
转换函数:to_char 将日期格式转换成字符串,
to_date 将字符串转换成日期类型
to_number 将字符串转成数字
聚合函数:avg、sum、min、max、count

1、Substr  截取函数  
Select productid 产品编号,substr(productid,1,6) as 截取后的编号 from 表名 //查询产品编号从第一位开始的后6位
2、Distinct 去除重复函数
Select distinct(productid) 产品编号 from 表名 //查询产品编号去除重复的编号
3、Order By 排序函数 asc(默认) desc 默认null 最大 。。。。。。order by 列名 asc (desc) nulls first 可以将null 放在首位
4、Null 查询时 不能使用”=” 而用 is null 或 is not null 。。。。。。where price is null (is not null)
5、Group by 他不属于where 语句 故位置不固定 他不能用在where函数中 Select avg(price) from 表名 group by 类型,厂家
6、Having 一般与group by 公用的限制语句 他不与单个值有关而是与组有关
Select category, avg(productprice) 产品价格 from product group by category having avg(productprice)>2000
7、Inner join……on 内连接语句
Select p.productname, p.productprice, c.categoryid from productinfo p , cageoryinfo c where p.category = c.categoryid 等价于
Select p.productname, p.productprice, c.categoryid from productinfo p inner join cageoryinfo c on p.category = c.categoryid
8、Abs 取绝对值的函数 Select Asb(-100) from dual
9、mod 取余函数
Select mod(10,6) from dual 值为4 若b为0 返回A A b
10 、sign 返回数的符号 正为1 0为0 负为-1
Select sign(‘9’),sign(-9),sign(10),sign(0.00) from dual 返回为1,-1,1,0
11、cell(n) 返回>=n的最小整数 要求n必须是十进制的数
Floor(n) 返回<=n的最大整数 要求n 必须是十进制的数
12、sort(n) 返回n的平方根 当n小于0是返回nan Power(n1,n2) 返回 n1的n2次幂 Exp(n) 返回e的n次幂
Log(n1,n2) 返回以n1为底n2的对数 n1不为0,1 Ln(n) 返回n的自然对数 n不为 0,1
13、round(n,interger) 四舍五入n的interger位 若interger为正保留小数点后interger位四舍五入,若interger为负向小数点前数interger位四舍五入 如round(155,-2) 结果为200 。
Trunc(n,interger) 截取n的interger位 若interger为正向小数点后截取interger位,若interger为负向小数点前截取interger为 如 trunk(155,-2) 结果为100
14、ASCII(char)返回参数首字母的ASCII码值
15、lengtch(char) 返回字符串char 的长度
16、 substr(‘给定的字符串’,A,B) A表示从第几位开始截 B表示截几位,如果A为负值 从右边数到A位开始向后截B位
17、connect(char1,char2)连接字符串 把char1和char2连接起来 connect(‘我的’,‘测试’)等价于‘我的’||‘测试’
18、cast 数据类型转换函数
Select cast(’123’ as interger),cast(123 as varchar2(8)) from dual 结果为123 123
19、chartorowid 函数 将 char类型转换为ROWID 类型 但是最后长度必须满足rowid的标准18位
Rowidtochar 函数 将rowid 类型转换为char 因为rowid长度为18,故转换成的字符串也是18位。
20、to_char(number) 将数字类型转换成字符类型 To_char(data) 将日期转换成字符型
21、lnnvl (条件) 排除条件得到指定条件之外的函数
Select *from productinfo where lnnvl(quantity>=70) 获得quantity小于70的数据
22、nvl(expr1,expr2) 如果expr1为null 则返回expr2 否则返回expr1 替换时常用 Select productname,nvl(quantity,0) from productinfo 表示若quantity为NULL返回0否则返回quantity的值
Nvl2(expr1,expr2,expr3) 意思一样当expr1为空返回expr3,不为空返回expr2

 

10.存储函数和存储过程的区别?

本质上没区别。只是函数有如:只能返回一个变量的限制。而存储过程可以返回多个。而函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。执行的本质都一样。 
     函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少 
      1.    一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。 
      2.    对于存储过程来说可以返回参数,而函数只能返回值或者表对象。 
      3.    存储过程一般是作为一个独立的部分来执行(EXEC执行),而函数可以作为查询语句的一个部分来调用(SELECT调用),由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。 
      4.    当存储过程和函数被执行的时候,SQL Manager会到procedure cache中去取相应的查询语句,如果在procedure cache里没有相应的查询语句,SQL Manager就会对存储过程和函数进行编译。

可以出于任何使用SQL 语句的目的来使用存储过程,它具有以下优点:

        (1)功能强大,限制少。

        (2)可以在单个存储过程中执行一系列SQL 语句。

        (3)可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。

        (4)存储过程在创建时即在上进行编译,所以执行起来比单个SQL 语句快。

        (5)可以有多个返回值,即多个输出参数,并且可以使用SELECT返回结果集。

 


11.存储过程的缺点 和 优点?

 优点

  1. 运行速度:对于很简单的sql,存储过程没有什么优势。对于复杂的业务逻辑,因为在存储过程创建的时候,数据库已经对其进行了一次解析和优化。存储过程一旦执行,在内存中就会保留一份这个存储过程,这样下次再执行同样的存储过程时,可以从内存中直接调用,所以执行速度会比普通sql快。    

  2.  减少网络传输:存储过程直接就在数据库服务器上跑,所有的数据访问都在数据库服务器内部进行,不需要传输数据到其它服务器,所以会减少一定的网络传输。但是在存储过程中没有多次数据交互,那么实际上网络传输量和直接sql是一样的。而且我们的应用服务器通常与数据库是在同一内网,大数据的访问的瓶颈会是硬盘的速度,而不是网速。

  3. 可维护性:的存储过程有些时候比程序更容易维护,这是因为可以实时更新DB端的存储过程。  有些bug,直接改存储过程里的业务逻辑,就搞定了。 

  4. 增强安全性:提高代码安全,防止 SQL注入。这一点sql语句也可以做到。

  5. 可扩展性:应用程序和数据库操作分开,独立进行,而不是相互在一起。方便以后的扩展和DBA维护优化。

  缺点  

   1. SQL本身是一种结构化查询语言,但不是面向对象的的,本质上还是过程化的语言,面对复杂的业务逻辑,过程化的处理会很吃力。同时SQL擅长的是数据查询而非业务逻辑的处理,如果如果把业务逻辑全放在存储过程里面,违背了这一原则。

   2. 如果需要对输入存储过程的参数进行更改,或者要更改由其返回的数据,则您仍需要更新程序集中的代码以添加参数、更新调用,等等,这时候估计会比较繁琐了。

   3. 开发调试复杂,由于IDE的问题,存储过程的开发调试要比一般程序困难。     

   4. 没办法应用缓存。虽然有全局临时表之类的方法可以做缓存,但同样加重了数据库的负担。如果缓存并发严重,经常要加锁,那效率实在堪忧。

   5. 不支持群集,数据库服务器无法水平扩展,或者数据库的切割(水平或垂直切割)。数据库切割之后,存储过程并不清楚数据存储在哪个数据库中。

 

 


12.jdbc中如何调用存储过程?

在 JDBC 中调用存储过程的语法为:{call procedure_name[(?, ?, ...)]};返回结果参数的存储过程的语法为:{? = call procedure_name[(?, ?, ...)]};不带参数的存储过程的语法为:{call procedure_name}。


13.jdbc的执行步骤

1、加载JDBC驱动程序: 
 2、提供JDBC连接的URL
 3、创建数据库的连接 
 4、创建一个Statement 
5、执行SQL语句 
6、处理结果      
两种情况:
1、执行更新返回的是本次操作影响到的记录数。
2、执行查询返回的结果是一个ResultSet对象。
7、关闭JDBC对象    


14.触发器是什么? 触发器的类型有哪些?

触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。
触发器有如下作用:  可在写入数据表前,强制检验或转换数据。
SQL Server 包括三种常规类型的触发器:DML 触发器、DDL 触发器和登录触发器。
1、DML触发器
当数据库中表中的数据发生变化时,包括insert,update,delete任意操作,如果我们对该表写了对应的DML触发器,那么该触发器自动执行。DML触发器的主要作用在于强制执行业 务规则,以及扩展Sql Server约束,默认值等。因为我们知道约束只能约束同一个表中的数据,而触发器中则可以执行任意Sql命令。
2、DDL触发器
它是Sql Server2005新增的触发器,主要用于审核与规范对数据库中表,触发器,视图等结构上的操作。比如在修改表,修改列,新增表,新增列等。它在数据库结构发生变化时执行,我们主要用它来记录数据库的修改过程,以及限制程序员对数据库的修改,比如不允许删除某些指定表等。
3、登录触发器
登录触发器将为响应 LOGIN 事件而激发存储过程。与 SQL Server 实例建立用户会话时将引发此事件。登录触发器将在登录的身份验证阶段完成之后且用户会话实际建立之前激发。因此,来自触发器内部且通常将到达用户的所有消息(例如错误消息和来自 PRINT 语句的消息)会传送到 SQL Server 错误日志。如果身份验证失败,将不激发登录触发器。


15.游标的作用?

游标是系统为用户开设的一个数据缓冲区,存放SQL语句的执行结果

每个游标区都有一个名字

用户可以用SQL语句逐一从游标中获取记录,并赋给主变量,交由主语言进一步处理

主语言是面向记录的,一组主变量一次只能存放一条记录

仅使用主变量并不能完全满足SQL语句向应用程序输出数据的要求

嵌入式SQL引入了游标的概念,用来协调这两种不同的处理方式


16.mysql的端口? oracle的端口?

MySQL 默认端口号为:3306

Oracle 默认端口号为:1521

 

 

17.mysql的分页? oracle的分页?
limit分页; rownum分页;

18.简单说下数据库的事务;

  原子性(Atomicity)

  一致性(Consistency)

  隔离性(Isolation)

  持久性(Durability)

⑴ 原子性(Atomicity)

  原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。

⑵ 一致性(Consistency)

  一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。

  拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性。

⑶ 隔离性(Isolation)

  隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。

  即要达到这么一种效果:对于任意两个并发的事务T1和T2,在事务T1看来,T2要么在T1开始之前就已经结束,要么在T1结束之后才开始,这样每个事务都感觉不到有其他事务在并发地执行。

  关于事务的隔离性数据库提供了多种隔离级别。

⑷ 持久性(Durability)

  持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作

19.oracle的索引.

Oracle中建立索引,会提高查询速度: create index 索引名 on 表名(列名); 

 

20.同义词是什么,同义词的好处?

数据库中的同义词,可以相当于文件系统的快捷方式理解,例如表和视图的同义词,完全可以直接当表和视图使用。
好处一:应用程序开发可以不管数据库的具体对象名。
好处二:避免应用程序直接访问数据库对象,提高数据库安全性。
好处三:简化数据库对象的访问。

21.简单说说oracle的包;

包也是模式对象,它是将相关元素集成在一起的PL/SQL结构。包由以下两部分组成:

  • 包头
  • 包体

包头和包体是单独存放在数据库的字典中。在包中,我们可以集成以下对象:

  • 存储过程
  • 函数
  • 游标
  • 变量
  • 常量
  • 异常
  • 记录类型

22.oracle的授权和收权;

1.GRANT 赋于权限
常用的系统权限集合有以下三个:
CONNECT(基本的连接), RESOURCE(程序开发), DBA(数据库管理)

GRANT CONNECT, RESOURCE TO 用户名;
GRANT SELECT ON 表名 TO 用户名;
GRANT SELECT, INSERT, DELETE ON表名 TO 用户名1, 用户名2;

2.REVOKE 回收权限
REVOKE CONNECT, RESOURCE FROM 用户名;
REVOKE SELECT ON 表名 FROM 用户名;
REVOKE SELECT, INSERT, DELETE ON 表名 FROM 用户名1, 用户名2;
 
 
 
 
 
 
 

1.数据库的三范式?
一范式: 每个列都是不可分割的原子单元;
二范式: 必须满足第一范式; 每个列都依赖于主键。
三范式:每一列都只有一个值,每一行都能区分,每一个表都不包含其他表已经包含的非主关键字信息。

2.主键的设计原则有哪些?
主键的作用是帮助数据库以最快的速度把一条特定的数据记录的位置确定
主键必须是唯一的,
主键应该是紧凑的,因此整数型比较合适,
尽量选择单个键作为主键
尽量选择数据更新少的列作为主键

3.数据的约束有哪些特点(主键约束,唯一约束, 非空约束, null约束, 默认值约束, check[枚举]约束, 外键约束, 长度约束)
主键约束:唯一且非空;
外键约束:内容必须是所关联主键的值其中的值,用来维护两个表之间数据的一致性;
非空约束:不能为空;
默认值约束:当插入时没有赋值,会使用默认值;
唯一约束:列的内容都是唯一的,不能重复;
check[枚举]约束:列的内容必须符合要求,为枚举对象;
null约束:值只能为null;
长度约束:限制输入数据的长度。

4.主键约束和唯一约束有哪些区别?
1、一个表中只能有一个主键约束,可以有多个唯一约束;
2、主键所在列不允许为空,唯一约束所在列允许为空
3、主键所在列一般很难更新

5.内连接和外连接的区别
内联接,一般根据表中共同的列来进行匹配,特别是两个表存在主外键关系时。
内联接操作只返回满足联接条件的元素,
外联接操作以指定表为联接主体,将主体表中不满足联接条件的元素一并返回:

6.左外连接,右外连接和全外连接的区别
左外连接:如果左表中的某一行在右表中没有匹配行,则右表选择列返回空(左边的表不加限制);
右外连接:如果右表中的某一行在左表中没有匹配行,则左表选择列返回空(右边的表不加限制);
全外连接:返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。(左右两表都不加限制)

7.你使用过哪些mysql函数.
字符串函数:cancat 连接字符串、lower将字符变成小写、upper转大写
聚合函数:count、avg、max、min、sun
数值函数:abs绝对值、cell向上取整、floor向下取整、mod(x,y)返回x/y的模
rand返回0~1内的随机值、 round 四舍五入
日期和时间函数:curdate返回当前日期,now返回当前日期和时间、
date_format(date fmt)返回按字符串fmt格式化日期date的值
datediff(expr,expr2)expr和expr2之间的天数
流程函数:if(value,t,f)如果value为真返回t,否则返回f
ifnull(t,f)如果t不为空,则返回t,否则返回f
datebase() 返回当前数据库名称

8.视图是什么? 视图的优点有哪些?
视图是一张或多张表的预定义查询。
优点:
1、限制用户只能通过视图查询数据,对用户屏蔽基表
2、将复杂的查询保存为视图,使用户查询数据更简便
3、从多张基表中按一定的业务逻辑抽出用户关心的部分,形成一张虚拟表

9.常用的oracle的函数有哪些?
字符函数:concat、instr、length、lower、upper、replace
数字函数:abs绝对值、cell向上取整、floor向下取整、round四舍五入
日期函数:add_months(d,n)在日期d的基础上加上n个月,返回新的date、
last_day(d):返回指定日期d当月的最后一天
round(d[,fmt]):返回fmt字符串格式的四舍五入日期值
extract(fmt from d):提取日期中特定部分
转换函数:to_char 将日期格式转换成字符串,
to_date 将字符串转换成日期类型
to_number 将字符串转成数字
聚合函数:avg、sum、min、max、count

10.存储函数和存储过程的区别?
1、存储函数只能传入参数,有且只有一个返回值;
2、存储函数不能写增删改sql语句,存储过程可以;
3、存储过程可以有多个传入参数,多个传出参数
4、存储过程可以使用游标、事务等,存储函数不能使用事务
5、存储过程中可以使用存储函数,存储函数中不能使用存储过程

11.存储过程的缺点 和 优点?
缺点:1、可移植性差,
2、当要大规模修改存储过程时比较麻烦
优点:1、存储过程可以重复使用,一个存储过程可以用于应用程序代码的不同位置
2、可维护性高
3、安全性好

12.jdbc中如何调用存储过程?
Jdbc中调用存储过程要使用 {call 所有者.存储过程名(?,?)} 问号表示参数(包括传入和传出的)
过程:sql={call 所有者.存储过程名(?,?)},使用statement类的子类CallableStatement创建调用存储过程的对象st,将sql保存到调用存储过程的对象st中,将需要传入传出的参数保存到对象st中,然后执行sql语句实现业务。

13.jdbc的执行步骤
1、导入数据库的jar包
2、加载驱动,不同数据库驱动不同 Class.forName()
3、建立与当前数据库的连接 DriverManager类
4、通过Connection创建statement(或其子类callablestatement)对象
5、通过statement对象执行数据库的增删查改操作
6、释放资源


14.触发器是什么? 触发器的类型有哪些?
触发器,是一种特殊类型的存储过程,不由用户直接调用,它在指定的表中的数据发生变化时自动生效,实现表间数据的一致性和完整性。
对于一张表来说,有三种类型的触发器:新增触发器、修改触发器、删除触发器。

15.游标的作用?
SQL的游标是一种临时的数据库对象,即可以用来存放在数据库表中的数据行副本,也可以指向存储在数据库中的数据行的指针。游标提供了在逐行的基础上操作表中数据的方法。游标的一个常见用途就是保存查询结果,以便以后使用。
原理:游标就是把数据按照指定要求提取出相应的数据集,然后逐条进行数据处理。


16.mysql的端口? oracle的端口?
mysql:3306 oracle :1521

17.mysql的分页? oracle的分页?
limit分页; rownum分页;

18.简单说下数据库的事务;
数据库事务(Database Transaction)是指作为单个逻辑工作单元执行的一系列操作,要么完整地执行,要么完全地不执行。 正常的情况下,这些操作将顺利进行,最终交易成功,与交易相关的所有数据库信息也成功地更新。但是,如果在这一系列过程中任何一个环节出了差错,数据库中所有信息都必须保持交易前的状态不变,比如最后一步更新用户信息时失败而导致交易失败,那么必须保证这笔失败的交易不影响数据库的状态--库存信息没有被更新、用户也没有付款,订单也没有生成。否则,数据库的信息将会一片混乱而不可预测。

19.oracle的索引.
索引的目的是提高查询的速度和效率;
原理: 对列建索引; 然后增删改数据的时候,会对索引列重构存储结构。每次查询的时候,快速定位当前索引对应的列结构,并返回;

20.同义词是什么,同义词的好处?
同义词: oracle独有,mysql中没有。给oracle中的对象(表名、存储过程、存储函数、触发器、游标、视图、索引等)起一个别名,保证数据库中数据的安全性,不被外部攻击。

21.简单说说oracle的包;
包是用来存储相关程序结构的对象,它存储于数据字典中。主要由两部门组成, 包头、包体。包头是对外的,定义当前包中包含的oracle对象的定义;包体是对内的,实现当前包中定义的oracle对象(把包头中定义的oracle对象实现);创建包时应该先创建包头部分,然后创建包体部分。

22.oracle的授权和收权;
授权:grant 权限名 from 用户
收权:revoke 权限名 from 用户

 
 
 
posted @ 2017-06-17 18:57  hdsfakjhf  阅读(369)  评论(1编辑  收藏  举报