Oracle整理笔记(三)

day04
数据库对象

同义词:就是给数据库对象一个别名。
序列:Oracle 中实现增长的对象。
视图:预定义的查询,作为表一样的查询使用,是一张虚拟表。
索引:对数据库表中的某些列进行排序,便于提高查询效率。
同义词
在 Oracle 中对用户的管理是使用权限的方式来管理的,,如果我们想使用数据库,我们就必须得有权限,如果是别人将权限授予了我们,我们也是能对数据库进行操作的,但是我们必须要在已授权的表的名称前键入该表所有者的名称,所以每次写就比较麻烦,有没有简化的方式呢?这里我们可以创建 Oracle 同义词来解决这个问题!我们就可以直接使用同义词来访问对应的表。
总的来说,同义词是现有对象的一个别名,可以简化 SQL 语句,隐藏对象的名称和所有者,提供对对象的公共访问。
同义词分为私有同义词和共有同义词:
(1)私有同义词:拥有 create synonym 权限的用户(包括非管理员用户)即可创建私有同义词,创建的私有同义词只能由当前用户使用。
(2)公有同义词:系统管理员可以创建公有同义词,公有同义词可以被所有用户访问。

1、system 账号登录:创建 test_user 测试账号,赋予权限
–创建测试账号
create user test_user identified by 123456;
–赋予测试账号连接和资源创建相关权限
grant connect,resource to test_user;
–赋予 test_user 账号创建同义词权限
grant create public synonym to test_user;
–赋予 test_user 账号删除同义词权限
grant drop public synonym to test_user;
2、student 账号登录:让 test_user 获得 student 的 t_student 的查询权限
grant select on t_student to test_user;
3、test_user 账号登录:创建同义词
create or replace public synonym syn_t_student
for student.t_student;
4、System 账号登录:现在可查询该同义词是否建立成功:
select * from dba_synonyms
where table_owner = ‘STUDENT’;
5、test_user 账号登录:
(1)接下来可以直接在 test_user 中查询该同义词的数据
select * from syn_t_student;
(2)使用 test_user 连接,删除同义词
drop public synonym syn_t_student;
7、student 账号登录:移除 t_student 上的 student 查询权限
revoke select on t_student from test_user;

序列
在这里插入图片描述

– 创建序列
create sequence seq_empno
start with 1
–初始值
increment by 1;
–增量
– 序列中的下一个值,从定义(start with)的值开始,调用了 nextval 之后, currval 会变成 nextval 的值
select seq_empno.nextval from dual;
– 获取序列的当前值
select seq_empno.currval from dual;

视图
查询视图没有什么限制, 插入/更新/删除视图的操作会受到一定的限制; 所有针对视图的操作都会影响到视图的基表; 为了防止用户通过视图间接修改基表的数据, 可以将视图创建为只读视图(带上 with read only 选项)
优点:

  1. 可以限制用户只能通过视图检索数据。这样就可以对最终用户屏蔽建表时底层的基表。
  2. 可以将复杂的查询保存为视图。可以对最终用户屏蔽一定的复杂性。
  3. 限制某个视图只能访问基表中的部分列或者部分行的特定数据。这样可以实现一定的安全性。
  4. 从多张基表中按一定的业务逻辑抽出用户关心的部分,形成一张虚拟表。
    缺点:
    1、视图的操作最终都会转换为对基表的操作,因此如果是对复杂的视图的修改操作可能会失败。

视图分类:
1、简单视图
指基于单个表并且不包含函数或表达式的视图,在该视图上可以执行 DML 语句(即可执行增、删、改操作)。
2、复杂视图
指基于单个或者多个表或者包含函数、表达式或者分组数据的视图,在该视图上执行 DML 语句时必须要符合特定条件。注意:在定义复杂视图时必须为函数或表达式定义别名
3、连接视图
指基于多个表建立的视图,一般来说不会在该视图上执行 INSERT、UPDATE、DELETE 操作。课程内容页
4、只读视图
指只允许进行 SELECT 操作的视图,在该视图时指定 WITH READ ONLY 选项。该视图上不能执行 INSERT、UPDATE、DELETE 操作。
5、check 约束视图
WITH CHECK OPTION 用于在视图上定义 CHECK 约束,即在该视图上执行 INSERT 或 UPDATE 操作时,数据必须符合查询结果

视图操作

  1. 基本语法
    create [or replace] view view_name [(column_name1[,column_name2…
    AS
    select_statement
    [WITH CHECK OPTION]
    [WITH READ ONLY]
    2、参数说明
    CREATE OR REPLACE:用于创建和修改视图(OR REPLACE :若所创建的试图已经存在,则替换旧视图;)
    WITH CHECK OPTION :用于创建限制数据访问的视图
    WITH READ ONLY :用于创建只读视图
    创建视图
    –简单视图
    create or replace view v_student
    as
    select * from stuinfo1;
    对视图数据进行增删改查操作
    –查询
    select * from v_student;
    –更新
    update v_student set v_student.age=15
    where v_student.stuname=‘唐僧’;
    –查询视图(验证视图数据是否变化)
    select * from v_student;
    –查询基表(验证基本数据是否变化)
    select * from stuinfo1;
    –增加
    insert into v_student(STUID, STUNAME, SEX, AGE, CLASSNO, STUADDRESS, GRADE, ENROLDATE, IDNUMBER)values (‘SC201801005’, ‘李四’, ‘1’, 26, ‘C201801’, ‘福建省厦门市 XXX 号’, ‘2018’, to_date(‘01-09-2018’, ‘dd-mm-yyyy’),’ 3503021992XXXXXXXX’);
    –查询视图(验证视图数据是否变化)
    select * from v_student;
    –查询基表(验证基本数据是否变化)
    select * from stuinfo1;
    –删除
    delete from v_student where v_student.stuname=‘李四’;
    –查询视图(验证视图数据是否变化)
    select * from v_student;
    –查询基表(验证基本数据是否变化)
    select * from stuinfo1;
    – 删除视图
    drop view v_student;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值