(oracle数据库基础)第四章 数据库对象管理

 1.1视图管理

  创建视图的语法:

  CREATEVIEW view_nameAS

  SELECT column_name1,column_name2--多个列用逗号隔开

  FROM table_name

  WHERE condition;

 

  --例子:创建一个视图,查询所有员工工号,员工姓名及所在的部门名称

  createview emp_dept--create or replace 允许在重名情况下创建视图,取代旧版本的视图

  as

  select e.empno,e.ename,d.dname

  from emp e, dept d

  where e.deptno=d.deptno;

 

1.2创建可更新视图

  可更新视图是指可以通过视图进行insertdeleteupdate操作而更改基表。

  在可更新视图定义中,如果出现下列情景,则无法进行上述三种操作。

  a.集合运算符,比如unionunionallintersectminus

  b.distinct操作符

  c.组函数,比如avgcountmaxminsum

  d.group byorder by子句

  e.select 包含表达式

  f.子查询

  g.连接查询(有例外)

 

  --例子1:复制表emp,检验在视图上的insertdeleteupdate操作对表数据的影响。

   --第一步,复制表

  createtable emp1

  as

  select empno, ename, jobfrom empwhere1=2;--加上此条件不复制数据

   --第二布,创建视图

  createview v_emp1

  as

  select *from emp1;

   --测试~~

  insertinto v_emp1values(7369,'SMITH','CLERK');

  select *from emp1;

  select *from v_emp1;

 

  --例子2:创建一个包含从两个表中提取数据的复杂视图

  createview dept_sum(name,minsal,maxsal,avgsal)

  as

  select d.dname,min(e.sal),max(e.sal),avg(e.sal)

  from emp e, dept d

  where e.deptno=d.deptnogroupby d.dname;

 

   --测试

  insertinto dept_sumvalues('sales',32,332,323222);

  系统提示:无法修改与非键值保存表对应的列

 

  --例子3:链接视图

  droptable emp1;

  --复制表emp

  createtable emp1

  as

  select *from emp;

  --复制表dept

  createtable dept1

  as

  select *from dept;

 

  --创建视图emp_dept

  createorreplaceview emp_dept

  as

  select e.empno,e.ename,e.sal,e.deptno,d.dname,d.loc

  from emp1 e, dept1 d

  where e.deptno=d.deptno;

 

  目前这个视图还是不能进行增删改操作的,必须对两个基表加上适当的主外键就可以了。

  不深究了,这个目前为止工作中都没用过!

 

1.3withcheckoption(不改不插可删)withreadonly(只可读)选项

  --1with check option

  createorreplaceview v_emp

  as

  select empno, ename, job

  from emp1

  where job='ANALYST'

  withcheckoptionconstraint v_emp_constraint;

 

  此时插入和修改都会报错。

  --2with read only

  createorreplaceview v_emp

  as

  select empno, ename, job

  from emp1

  where job='ANALYST'

  withreadonly;--完全禁止通过视图修改表资料

 

2.1索引管理

 

3.1序列管理

    创建序列的时候,指定cacheoracle可以预先再内存中存放一些序列,这样存取会快一点,但是,如果数据库忽然不正常关闭,

    有可能会导致跳号。可以使用nocache防止这种情况,建的时候和建后都可以加。

    建后加:

    altersequence序列名nocache;

 

4.1同义词管理

    同义词是指为表、视图和序列等对象起的另一个名字。

   

5.1用户管理

    模式(schema):是oracle数据库中一个重要的概念。模式被用户所拥有,与用户名相同。模式可以看成房子,用户就是主人。

    oracle数据库对象分为两类:模式对象和非模式对象。表和视图等都是模式对象,用户和角色是非模式对象。

    通过<模式名>.<对象名>才能唯一确定一个对象,不过,oracle允许用户访问自己模式对象时省略模式名。

    DBA创建一个新数据库用户时,一个与用户同名的模式也被同时建立。在用户建立数据库对象时,数据库系统会把该对象的名称记录

    在与用户同名的模式中。

    例如:通过<模式名>.<对象名>的方式访问dept

          select *from scott.dept;

         

6.1创建用户

    create user命令创建用户:

    createuser<username>identifiedby <pwd>;

   

    更改用户密码:

    alteruser usernameidentifiedby密码;

   

    删除用户:

    dropuser usernamecascade;--cascade选项的作用是一并删除用户对象()

   

7.1权限管理

    oracle数据库中用户权限分为:系统权限和对象级权限。

   

    grant命令:

    grantcreatesessionto用户名;--授予用户连接数据库的权限

   

    revoke命令:

    revokeupdate,deleteon模式.表名;--收回更改和删除模式.表名的权限

   

8.1角色管理

    角色是一个具有名字的权限集合,可以授权给一个或多个用户。当把一个角色授予某个用户时,这个用户就自动拥有了这个角色的

    所有权限。

    oracle数据库除允许DBA定义角色外,还提供了一些预定义的角色,如CONNECTRESOURCEDBA等。DBA角色拥有所有的系统级权限。

   

    --create role命令:

    createrole角色名identifiedby密码;

   

    grant角色名to用户名;--将某个角色授予用户

   

    --alter role命令:

    alterrole角色名identifiedby密码;--为角色设置密码

   

    --set role命令:

    setrole角色名identifiedby密码;--启动角色

    setroleall;--启动所有角色

    setrolenone;--禁止角色

   

    --drop role命令:

    droprole角色名;--删除角色

    revoke角色名from用户名;--撤销用户角色

   

9.1数据字典

    数据字典是oracle存放有关数据库信息的地方,用来描述数据库元数据,比如一个表的创建者信息、创建时间信息和用户访问权限信息等。

    数据字典分为静态数据字典和动态数据字典。用户访问静态数据字典的时候数据字典的数据不会发生改变;动态数据字典以来数据库运行的

    性能,反应数据库运行的一些内在信息。

   

    数据字典由表和视图组成,只能访问,不能修改。

    oracle数据字典的视图有三个不同的实例,它们的前缀为:user_all_dba_

    user_*

      该视图存储了关于当前用户所拥有的对象的信息(即所有在共用户模式下的对象)

    all_*

      该视图存储了当前用户能够访问的对象的信息(user_*相比,它不需要拥有该对象,只需具有该对象的权限即可)

    dba_*

      该视图存储了数据库中所有对象的信息(前提是用户具有访问这些数据库的权限,一般来说必须具有管理权限)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值