浅谈Oracle数据库的对象
admin
2023-04-16 21:41:37
0次

Oracle数据库---对象中最基本的是表和视图,其他还有约束、索引、序列、函数、存储过程、甚至创建同义词。对数据库的操作可以基本归结为对数据对象的操作,因此,在上篇博文讲述了基本操作的基础上,本篇博文将介绍其对象的基本操作。

一、表和视图

  • Oracle中表是数据存储的基本结构。随之引入了分区表和对象表,后来又引入了临时表,使表的功能更强大。
  • 视图是一个或多个表中数据的逻辑表达式。用户可以将视图看成一个存储查询(stored query)或一个虚拟表(virtual table).查询仅仅存储在oracle数据字典中,实际的数据没有存放在任何其它地方,所以建立视图不用消耗其他的空间。视图也可以隐藏复杂查询。
1、表操作

在上一篇博文已详细阐述,创建表空间---创建用户(c##jerry)---创建表(info),表环境如下:

//创建表

SQL>create table info
2 (
3 id number(4) constraint PK_id primary key, #constraint :约束
4 name varchar2(10),
5 score number(5,2),
6 born date,
7 address varchar2(50)
8 );

//插入数据

SQL>insert into info values(1,'zhangsan',88,to_date('2018-10-9','yyyy-mm-dd'),'nanjing');
SQL>insert into info values(2,'lisi',77,null,null);
SQL>insert into info values(3,'lwangwu',77,null,null);
SQL>commit;

浅谈Oracle数据库的对象

2、创建视图
SQL>create view view_info as select * from info;             #创建视图
          select view view_info as select * from info;             #查看视图
          drop view view_info;                                                      #删除视图

浅谈Oracle数据库的对象

3、物化视图

物化视图是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表。物化视图存储基于远程表的数据,也可以称为快照。

//给c##jerry用户授权
SQL>conn sys/abc123 as sysdba                            #切换到管理员

grant create materialized view to c##jerry;      #创建物化视图  
grant query rewrite to c##jerry;                          #查询重写
grant create any table to c##jerry;                     #创建任何表
grant select any table to c##jerry;                      #查看任何表

浅谈Oracle数据库的对象

//创建物化视图日志

SQL>create materialized view log on info;

//创建物化视图语句
SQL>create materialized view mtrlview_info     #建立物化视图名称
           build immediate                                          #立马生成数据 
           refresh fast                                                  #刷新(不开启此功能=快照)
           on commit                                                   #开启提交功能
           enable query rewrite                                  #开启查询重写
           as
           select语句;
//删除物化视图

SQL>drop materialized view mtrlview_info;
浅谈Oracle数据库的对象

二、索引

索引是一种可以提高查询性能的数据结构,分为以下几类:

//B-tree索引

SQL>create index score_index on info(score);

//唯一索引(针对主键,唯一、非空)

SQL>create unique index uni_index_info on info(id);

//反向索引

SQL>create index re_index_info on info(score) reverse;

//位图索引

SQL>create bitmap index bit_index_info on info(address);

//其他索引(如函数索引)

SQL>create index upp_index_info on info(upper(name)); #大写函数索引

//查看索引

SQL>select index_name,index_type,table_name,tablespace_name from user_indexes;

浅谈Oracle数据库的对象

//重建索引

SQL>alter index 索引名称 rebuild;
SQL>alter index 索引名称 rebuild tablespace 表空间

//合并索引碎片

SQL>alter index 索引名称 coalesce;

//删除索引

SQL>drop index 索引名称

三、序列

Oracle序列是一个连续的数字生成器。序列常用于人为的关键字,或给数据行排序否则数据行是无序的。

//创建序列
SQL>create sequence toy_seq
start with 10                      #初始值
increment by 1                #增量
maxvalue 2000               #最大值
nocycle                            #非循环(超过2000不重新开始)
cache 30;                       #缓存30个序列数字
//创建表toy
SQL>create table toy
  2  (
  3 id number(4) constraint PK_id primary key,
  4  name varchar2(10),
  5  score number(5,2),
  6  born date,          
  7 );

浅谈Oracle数据库的对象

//插入数据,验证序列号

SQL>insert into toy values (toy_seq.nextval,'zhangsan',88); #nextval:指针(固定) .为调用
SQL>insert into toy values (toy_seq.nextval,'zhangsan',77);

//查看序列当前值

SQL>select toy_seq.currval from dual;

浅谈Oracle数据库的对象

//删除序列

drop sequence toy_seq;

四、同义词

  • 对另一个数据对象而言同义词是一个别名。
  • 分类:公有同义词(public)是针对所有用户的;私有同义词(private)则只针对对象拥有者或被授予权限的账户。
  • 在本地数据库中同义词可以表示表、视图、序列、程序、函数或包等数据对象,也可以通过链接表示另一个数据库的对象。
    //创建私有同义词(针对info表)

    SQL>create synonym pr_info for info;
    SQL>select * from pr_info; #通过同义词查看

浅谈Oracle数据库的对象

//创建公有同义词(针对info表)

SQL>create public synonym pub_info for info;
SQL> select * from pub_info; #查看

浅谈Oracle数据库的对象

五、分区表

为解决海量数据存储问题

//创建四个表空间(tmp01、tmp02、tmp03、tmp04)

SQL>create tablespace tmp01
datafile '/orc/app/oracle/oradata/tmp01.dbf'
size 100M;
SQL>create tablespace tmp02
datafile '/orc/app/oracle/oradata/tmp02.dbf'
size 100M;
SQL>create tablespace tmp03
datafile '/orc/app/oracle/oradata/tmp03.dbf'
size 100M;
SQL>create tablespace tmp04
datafile '/orc/app/oracle/oradata/tmp04.dbf'
size 100M;

//创建分区表(sales)

create table sales
(
sales_id number,
product_id vachar2(5),
sales_date date
)
partition by range (sales_date)
(
partition p1 values less than (to_date('2018-04-03','yyyy-mm-dd')) tablespace tmp01,
partition p2 values less than (to_date('2018-05-03','yyyy-mm-dd')) tablespace tmp02,
partition p3 values less than (to_date('2018-06-03','yyyy-mm-dd')) tablespace tmp03,
partition p4 values less than (maxvalue) tablespace tmp04
);

//插入数据,查看是否实现分布式存储

insert into sales values(1,'abc',to_date('2018-05-23','yyyy-mm-dd'));
select * from sales partition(p3);

浅谈Oracle数据库的对象
#结果显示:输入数据日期为2018-05-23,应该存储在p3分区内,而其他分区没有此条数据!

感谢大家的阅读,希望共同进步!

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...