Oracle数据库对象

数据库对象简介

Oracle 数据库对象又称模式对象。

数据库对象是逻辑结构的集合,最基本的数据库对象是表。



序列

序列是用于生成唯一、连续序号的对象。

序列可以是升序的,也可以是降序的。

序列创建

SQL> CREATE SEQUENCE toys_seq

           START WITH 10 -- 指定起始值

           INCREMENT BY 10

           MAXVALUE 2000

           MINVALUE 10

           NOCYCLE

           CACHE 10; -- 内存中预先分配的序号数

SQL> CREATE SEQUENCE seqa START WITH 1000 INCREMENT BY 2;


序列操作

通过序列的伪列来访问序列的值

NEXTVAL 返回序列的下一个值

CURRVAL 返回序列的当前值

SQL> SELECT seqa.CURRVAL FROM dual;

更改序列

注意:不能修改序列的start with 数值

SQL> ALTER SEQUENCE seqa MAXVALUE 5000 CYCLE;

删除序列

SQL> DROP SEQUENCE seqa;


同义词

同义词是现有对象的一个别名

简化SQL语句

隐藏对象的名称和所有者,开发者可以不考虑具体对象名

提供对对象的公共访问,提高安全性


同义词共有两种类型:

公有同义词可被所有的数据库用户访问。

私有同义词只能在其模式内访问,且不能与当前模式的对象同名。


同义词操作

创建同义词

只有DBA用户才能建立同义词

SQL> CREATE SYNONYM myemp FOR scott.emp;

SQL> CREATE PUBLIC SYNONYM myemp2 FOR scott.emp;

访问同义词

私有同义词无论授权与否一般(除DBA之外)只能当前用户模式访问

公共同义词只有得到同义词所对应对象的select授权才能访问

SQL> GRANT SELECT ON myemp(同义词) TO xm(用户名);

SQL> SELECT * FROM myemp;

修改同义词

SQL> CREATE OR REPLACE SYNONYM myemp FOR SCOTT.dept;

删除同义词

SQL> DROP SYNONYM myemp;

SQL> DROP PUBLIC SYNONYM myemp2;


视图

视图以经过定制的方式显示来自一个或多个表的数据,可以视为“虚拟表”或“存储的查询”

视图本身不存储数据

创建视图所依据的表称为“基表”

视图的优点有:

提供了另外一种级别的表安全性

隐藏数据的复杂性

简化用户查询SQL

隔离基表结构的改变

通过重命名列,从另一个角度提供数据


创建视图



创建视图的语法:

CREATE  [OR REPLACE] [FORCE]  VIEW

        view_name [(alias[, alias]...)]

         AS select_statement

        [WITH CHECK OPTION]--检查视图

        [WITH READ ONLY];--只读视图


CREATE VIEW v_emp AS

        SELECT empno,ename,job FROM emp

        WHERE deptno=10

        [WITH CHECK OPTION CONSTRAINT chk_pv]

        [with read only];

删除视图:drop view


创建简单的视图

CREATE VIEW myview AS

SELECT * FROM emp WHERE job='MANAGER';

创建带有聚合函数的视图

CREATE VIEW myviewa AS SELECT deptno,sum(sal) totsal FROM emp GROUP BY deptno;

创建从多张表连接形成的视图

CREATE VIEW myviewb AS SELECT ename,job,dname,loc FROM  emp e,dept d WHERE e.deptno=d.deptno;

注意:

--创建视图权限

grant create  view to scott;

--授予查询权限

grant select any table to scott;

--授予权限

grant select any dictionary to scott;


视图上的DML语句

在视图上也可以使用修改数据的DML语句,如INSERT、UPDATE和DELETE

视图上的DML语句有如下限制:

只能修改一个底层的基表

如果修改违反了基表的约束条件,则无法更新视图

如果视图包含连接操作符、DISTINCT 关键字、集合操作符、聚合函数或 GROUP BY 子句,则将无法更新视图

如果视图包含伪列或表达式,则将无法更新视图


视图更改

UPDATE myview SET sal=sal+20;--成功

UPDATE myviewa SET totsal=10000 WHERE  deptno=10;聚合函数

UPDATE myviewb SET job=‘MANAGER’ WHERE ename=‘SMITH’;


SQL> INSERT INTO myview(empno,ename,job,deptno) VALUES(2222,'rose','CLERK',10);

SQL>SELECT * FROM myview;

SQL>--为什么插入数据看不到?--实际已添加至基表,但被职位限制不显示了

SQL> DROP VIEW myview

SQL>CREATE VIEW myview AS SELECT * FROM emp WHERE job=‘MANAGER’ with check option;--再次添加会报错,因为已限制只能添加'manager'


索引

索引是与表相关的一个可选结构

用以提高 SQL 语句执行的性能

减少磁盘I/O

使用 CREATE INDEX 语句创建索引

在逻辑上和物理上都独立于表的数据

Oracle 自动维护索引


索引有各种类型,除了标准索引外,还有一些特殊类型的索引:



索引管理

索引创建

通过主键、唯一约束等自动建立

手动创建

CREATE INDEX index_emp ON emp(hiredate)

SELECT* FROM emp WHERE hiredate>to_date(‘19810101’,’yyyymmdd’)

重建索引

ALTER INDEX index_emp REBUILD;

删除索引

DROP INDEX index_emp ;


索引一览

唯一索引

Oracle 自动在表的主键列上创建唯一索引

CREATE UNIQUE INDEX

组合索引

是在表的多个列上创建的索引

反向键索引

通常建立在值是连续增长的列上,使数据均匀地分布在整个索引上

创建索引时使用REVERSE关键字,基于B树优化

位图索引

通常建立低基数列上,列值相对固定

CREATE BITMAP INDEX


本章小结

同义词是现有数据库对象的别名

序列用于生成唯一、连续的序号

视图是基于一个或多个表的虚拟表

索引是与表相关的一个可选结构,用于提高 SQL 语句执行的性能。索引类型有标准索引、唯一索引、反向键索引、位图索引和基于函数的索引

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,372评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,368评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,415评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,157评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,171评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,125评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,028评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,887评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,310评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,533评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,690评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,411评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,004评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,812评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,693评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,577评论 2 353

推荐阅读更多精彩内容

  • 5.多表查询 多表查询 目的:从多张表获取数据 前提:进行连接的多张表中有共同的列 等连接 通过两个表具有相同意义...
    乔震阅读 1,227评论 0 0
  • 1.简介 数据存储有哪些方式?电子表格,纸质文件,数据库。 那么究竟什么是关系型数据库? 目前对数据库的分类主要是...
    乔震阅读 1,715评论 0 2
  • 1.伪表,伪列 1.1.伪表dual 概念:就是一个不真实存在的虚拟表.伪表的作用就是用来构造一个符合sql规则的...
    随手点灯阅读 1,224评论 1 7
  • 5.DML DML 语句 语句操作语言 INSERT UPDATE DELETE MERGE INSERT 方法:...
    乔震阅读 940评论 0 0
  • 数据库对象 一、视图:从表中抽出的逻辑上相关的数据集合 要创建视图,需要管理员授予权限: 视图: 视图的优点: 创...
    我可能是个假开发阅读 598评论 0 4