Oracle数据库对象

目录

一,数据库对象介绍

1.1 数据库对象 又称模式对象,是逻辑结构的集合。最基本的数据库对象就是表。

1.2  数据库对象包括 同义词、序列、视图、索引、表、函数、包、过程、触发器等。

二, 同义词synonym 

2.1: 同义词——现有对象的一个别名。

2.2: 同义词分类

2.3: 同义词作用 

2.4: 私有同义词

2.5: 为某个账户授权同义词

 2.6: 取消授权       

2.7: 同义词的操作

 三,序列

3.1: oracle中没有标识列,就是序列标识列可以做好多东西,有替代品---序列比标识列麻烦的多序列+触发器

3.2 什么是序列?

3.3 序列有什么用?

3.4 创建序列语法

 3.5 更改和删除序列

 四,视图

4.1 创建这个需求的视图

4.2 调用视图     

  ​                                                

五、索引

5.1 创建索引

5.2 重建索引(修改)

5.3  删除索引

5.4 唯一索引 

5.5  组合索引

5.6 索引组织表 


一,数据库对象介绍

1.1 数据库对象 又称模式对象,是逻辑结构的集合。最基本的数据库对象就是表。

       1. 数据逻辑结构:指的是存在一种或多种特定关系的数据元素集合。 

           通俗点:就是把数据元素形象地进行了有规则排列,但不用考虑在计算机上如何实现。

           再通俗点:就是数据有规则的排列。表不就是有规则的排列吗?

1.2  数据库对象包括 同义词、序列、视图、索引、表、函数、包、过程、触发器等。

二, 同义词synonym 

2.1: 同义词——现有对象的一个别名。

1: Oracle只有一个数据库,用户的访问是通过表空间分隔开的,一般来说两个用户之间不能相互访问,但现在A用户要B用户分享某个表中的数              据,那B的表空间就要给A分配个权限。

2: 如果只共享表空间中的某个表中的一部分数据,怎么共享? 将某个表共享,但这也向其他用户曝露了表,存在安全问题。因此,我们给要共享            的表设置个同义词(别名),将同义词共享给其他用户。

          举例:同义词就好比我们要给这个对象取别名,也就是我们所称的“外号”,比如张新宇你们叫他“锤子”,“锤子”就是他的外号;如果某天来个IS            来找“锤子”,他找得到么?找不到,“锤子”是不是很安全?IS找门卫问这里有个叫“锤子”的没有?门卫当他傻啊,如果说要找张新宇,找                        不找得到?找得到。

2.2: 同义词分类

           1. 私有同义词;--  只有自己使用; 只能在其模式内访问,且不能与当前模式的对象同名

           2. 公有同义词;--  搞个别名给大家使用;公有同义词可被所有的数据库用户访问

2.3: 同义词作用 

           1. 提高安全性

           2. 主要用于资源共享。

2.4: 私有同义词

          语法:

	Create [or replace]  Synonym  syn_emp  For  scott.emp;
	--Synonym   同义词
	--syn_emp   指scott.emp表的同义词(别名)
	--scott.emp 是模式名(对象名),其中emp是表名。
		    如果当前是用scott账户在操作,则可以省略scott.

            注意:  在创建私有同义词时,发现scott也没有权限创建,要让scott有创建的权限,就需要用管理员权限给scott授权。

2.5: 为某个账户授权同义词

grant create synonym to scott;

         注意:权限授出后,一定要收回(取消授权),否则会乱套。


 2.6: 取消授权       

revoke create synonym from scott;

        1: 以上是授权私有同义词,那么公有的同义词呢?
           公有的同义词不能授权,也就是普通账户不能创建公有同义词,除非是管理员账户。 

2.7: 同义词的操作

          1.调用:

	select * from syn_emp;
	--syn_emp 为同义词名(别名)

          2.删除:

Drop Synonym  syn_emp;		--删除私有同义词
Drop Public Synonym  syn_emp;	--删除公有同义词

        3.创建或替换(修改):

create or replace sysnonym syn_emp for scott.emp;

 

 三,序列

3.1: oracle中没有标识列,就是序列标识列可以做好多东西,有替代品---序列比标识列麻烦的多序列+触发器

3.2 什么是序列?

        1.  序列是用于生成唯一的、连续的序号 的对象。序列有升序和降序。一般都是升序。

3.3 序列有什么用?

        1. 能为我们生成一组连续的,永远不重复的一组数字。主要用于提供主键值,做分页。

3.4 创建序列语法

create sequence 序列名称
	    [start with 1]               -- (种子)从n开始计数
	    [increment by 1]             -- (增量)每次递增n,负数为递减  <英'克瑞门特>
	    [maxvalue n | nomaxvalue]    --  最大值
	    [minvalue n | nominvalue]    --  最小值,(没太多含义)
	    [cycle | nocycle]	         --  循环/不循环<塞叩>
	    [cache n | nocache];         --  分配并存入到内存中

               注意:
               1. 序列不要轻易的删掉
               在SQL Server中,有标识列1,2,3,4的数据,如果删除标识列4的,再增加一条记录,标识列是5。
               在Oracle中,如为某表定义了序列,删除中间的某条记录,情况和SQL Server中一样,但是如果把该表的序列删掉,再创建序列,那么情                   况就不一样了。

 3.5 更改和删除序列

                 1.   更改序列:

alter sequence seq_110 maxvalue 5000 cycle;
	注意:不能更改序列的start with参数
		  尽量不要修改,一旦修改会出问题,如果实在要改,先删了再创建序列。

                2.   删除序列:

drop sequence seq_110;

    

 四,视图

4.1 创建这个需求的视图

我们根据这需求创建个视图,以后别人要看,就直接调用这个视图名就行了。
create or replace view v_emps
as
根据需要写查询语句

       注意:如果这时运行报错:没有权限,则要通过sys或system账户给scott赋view的权限。

     grant create view to scott;

4.2 调用视图     

select * from v_emps;

                                                  

  1.视图是否可以无限次嵌套?(应该不行,SQL Server最多是32层,Oracle中应该也差不多)

  2.视图的数据是否可以直接修改?(视图的数据保存在表里,视图只是一张虚拟的表)
     理论上来说是可以修改的,这个修改是在修改基表上的数据;
     但有一种合成、聚合的数据,比如“收入”是由薪水+奖金,是不能被修改的。

五、索引

5.1 创建索引

Create Index index_name on Tablename(colname,colname...)
tablespace 表空间名;
	--不能使用or replace

5.2 重建索引(修改)

Alter Index index_name Rebuild;

5.3  删除索引

Drop Index index_name;

5.4 唯一索引 

Create Unique Index index_name On Tablename(colname);

5.5  组合索引

create index index_name on tablename(colname1,colname2,……);

5.6 索引组织表 

     1. 好处:把数据存储在与其关联的索引中最大优点:访问数据都是基于组件 就是教大家创建表

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值