Oracle存储过程、触发器、分页以及数据库的管理与备份

1、分页

思路:orcale 要使用分页得使用rownum (行号来进行分页),rownum 不支持大于号,查询rownum 起别名

 《多少    》多少

2、数据库的备份与管理

用户的创建与授权:

创建用户
create user username identified by password
修改密码
alert user username identified by password;
用户授权
grant dba to username;
锁定用户  |  解锁
alter user username  account  lock |unlock
创建连接
conn username/password
授予权限:
    默认的普通用户scott默认未解锁,不能进行那个使用,新建的用户也没有任何权限,必须授予权限
    多个权限用,逗号隔开

    grant create session to zhangsan;//授予zhangsan用户创建session的权限,即登陆权限

  grant unlimited tablespace to zhangsan;//授予zhangsan用户使用表空间的权限

  grant create table to zhangsan;//授予创建表的权限

  grante drop table to zhangsan;//授予删除表的权限

  grant insert table to zhangsan;//插入表的权限

  grant update table to zhangsan;//修改表的权限

  grant all to public;//这条比较重要,授予所有权限(all)给所有用户(public)

用户表与表之间的授权:

     oralce对权限管理比较严谨,普通用户之间也是默认不能互相访问的,需要互相授权

  grant select on tablename to zhangsan;//授予zhangsan用户查看指定表的权限

  grant drop on tablename to zhangsan;//授予删除表的权限

  grant insert on tablename to zhangsan;//授予插入的权限

  grant update on tablename to zhangsan;//授予修改表的权限

  grant insert(id) on tablename to zhangsan;

  grant update(id) on tablename to zhangsan;//授予对指定表特定字段的插入和修改权限,注意,只能是insert和update

  grant alert all table to zhangsan;//授予zhangsan用户alert任意表的权限

撤销权限:

    基本语法同grant,关键字为revoke

revokeselect on tablename to zhangsan;//授予zhangsan用户查看指定表的权限

。。。。。。。同上

查看权限:

     select * from user_sys_privs;//查看当前用户所有权限

  select * from user_tab_privs;//查看所用用户对表的权限

角色:

  角色即权限的集合,可以把一个角色授予给用户

  create role myrole;//创建角色

  grant create session to myrole;//将创建session的权限授予myrole

  grant myrole to zhangsan;//授予zhangsan用户myrole的角色

  drop role myrole;删除角色


3、触发器(trigger)

语句级触发器
在指定的操作语句操作之前或者之后执行一次,不管这条语句影响了多少行
行级触发器 触发语句作用的每一条记录都被触发,在行级触发器中使用:old 和:new 伪记录变量,识别值的状态
or  |   on 
字段   | 表

语句触发器

create or replace trigger  demo2
 before insert 
  on emp 
  declare
  begin 
    if to_number(to_char(sysdate,'hh24')) not between 9 and 17 or to_char(sysdate,'day') in ('星期六','星期日','星期三')
      then RAISE_APPLICATION_ERROR(-20001, '禁止在非工作日时间插入');
      end if;
  end;

行级触发器

4、存储过程

存储过程和存储函数(不用declare  用 as  ) 概念:指存储在数据库中供所有用户程序调用的字程序叫做存储过程、存储函数 

区别(什么时候用):如果只有一个返回值用存储函数,如果有多个返回值,就用存储过程(申明包结构,创建包体,:游标)

存储过程创建方式:
( 返回多个值:包结构)
create or replace procedure demo1(mempno number,psal number)
  as 
    msal emp.sal%type;
begin 
    select sal into msal from emp where empno = mempno;
    update emp set sal =sal+psal;
    dbms_output.put_line('涨前:'||msal||'   涨后:'||(msal+psal));
    commit;
end;
存储函数的创建方式:
(返回单个值)
create or replace function queryempincome(eno in number)
return number--返回一个值
as
   --定义变量保存月薪和奖金
   psal emp.sal%type;
   pcomm emp.comm%type;
begin
   select sal,comm into psal,pcomm from emp where empno=eno;
   --返回年收入
   return psal*12+nvl(pcomm,0);
end;
    存储过程返回多个值,将游标以集合的方式返回:     需要申明包结构、创建包体

|
  • 17
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值