oracle进阶使用

用户系统权限

create session(创建会话)    //用户登录系统至少所需要的权限

create table(创建表)

create sequence(创建序列)

create view(创建视图)

create procedure(创建过程)

oracle进阶使用_第1张图片

创建用户:create user 用户名 identified by 密码

修改表空间大小:alter user 用户名 quota 大小(5M) on users

创建角色:create role 角色名

给予权限:grant create session to 角色名

将角色赋予用户:grant 角色名 to 用户名

分配对象权限(查询):grant select on 需要查询的表名 to 需要权限的表名 with grant option  //使其同样具有分配权限的权利

分配表中列的权限(更新):grant update on 需要查询的表名.列 to 需要权限的表名    //to public 为数据库中所有用户分配权限

收回权限:revoke select on departments from system

总结:

oracle进阶使用_第2张图片

set操作符:

union/union all:oracle进阶使用_第3张图片中间的数据取两次

oracle进阶使用_第4张图片oracle进阶使用_第5张图片colnum 列名 noprint//不显示列

oracle进阶使用_第6张图片字段应一一对应。

intersectoracle进阶使用_第7张图片交集

minus

exists:

oracle进阶使用_第8张图片

变量记录类型等的声明:

注意:变量赋值用:=

声明一个记录类型

declare

type 记录类型名 is record(

变量名  类型(employee.salary&type),

.............................

)

声明一个记录类型的变量:

变量名 记录类型名

begin

select salary,employee_id,email into  记录类型变量

from employee

dbms_output.put_line(变量.字段);

end

定义一个变量,其数据类型与已经定义的某个数据变量的类型相同,或者与数据库表的某个列的数据类型相同,这时可以使用%TYPE
使用%TYPE特性的优点在于: 
●所引 用的数据库列的数据类型啊以不必知道:
●所引 用的数据库列的数据类型可以实时改变。

if语句:

oracle进阶使用_第9张图片注意:elsif不要写成elseif

case语句:

oracle进阶使用_第10张图片

循环语句:

oracle进阶使用_第11张图片

goto语句:需要自定义一个标签

oracle进阶使用_第12张图片

游标:

定义游标:cursor 游标名 is select salary from employee where department_id=80

begin

打开游标:open 游标名

提取游标:fetch 游标名 into 变量;

while 游标名%found loop

dbms.output.put_line('salart:'||变量)

end loop

关闭游标:close 游标名

end

oracle进阶使用_第13张图片

游标属性:
%found
布尔型属性,当最近一次读记录时成功返回,则值为TRUE:
%NOTFOUND
布尔型属性,与%FOUND 相反;
%ISOPEN
布尔型属性,当游标已打开时返回TRUE;
%ROWCOUNT
数字型属性,返回已从游标中读取的记录数。
 

带参数的游标:

oracle进阶使用_第14张图片

定义基数变量:

隐式游标:

oracle进阶使用_第15张图片

异常处理:

1.预定义( Predefined )错误
ORACLE预定义的异常情况大约有24个。对这种异常情况的处理,无需在程序中定义,由ORACLE自动将其引发。

oracle进阶使用_第16张图片
2.非预定义( Predefined )错误
即其他标准的ORACLE错误。对这种异常情况的处理,需要用户在程序中定义,然后由ORACLE自动将其引发。

pragma exception_init(异常名,异常号)进行关联

oracle进阶使用_第17张图片
3.用户定义(User_ _define) 错误
程序执行过程中,出现编程人员认为的非正常情况。对这种异常情况的处理,需要用户在程序中定义,然后显式地在程序中将其引发。

raise 异常名    抛出异常

oracle进阶使用_第18张图片

存储函数:

oracle进阶使用_第19张图片oracle进阶使用_第20张图片

oracle进阶使用_第21张图片

调用函数:
SELECT F_MSG('张力','护肤水') AS"总额" FROM DUAL;

存储过程:

oracle进阶使用_第22张图片

执行:

触发器:

oracle进阶使用_第23张图片

:old,:new:  :旧数据/新数据。

oracle进阶使用_第24张图片

你可能感兴趣的:(oracle进阶使用)