Oracle学习day-31:数据库其他对象

一、视图(view)

1.什么是视图?

可以通过创建表的视图来表现数据的逻辑子集或数据的组合。视图是基于表或另一个视 图的逻辑表,一个视图并不包含它自己的数据,它象一个窗口,通过该窗口可以查看或改变 表中的数据。视图基于其上的表称为基表。

2.视图的作用:

(1)视图限制数据的访问,因为视图能够选择性的显示表中的列。

(2)视图可以用来构成简单的查询以取回复杂查询的结果。例如,视图能用于从多表中查 询信息,而用户不必知道怎样写连接语句。 

(3)视图对特别的用户和应用程序提供数据独立性,一个视图可以从几个表中取回数据。

3.视图的类型:

(1)简单视图:

1) 数据仅来自一个表 ;

2)不包含函数或数据分组;

3)能通过视图执行 DML 操作。

简单视图语法:

4)使用列别名创建视图:

如果在创建视图的查询语句中含有列别名,那么列别名将作为视图的列名。

5)从视图中取回数据;

(2)复杂视图:

1) 数据来自多个表;

2)包含函数或数据分组;

3)不允许通过视图进行 DML 操作。

创建复杂视图语法:

(3)定义视图时指定列名:

4.视图中 DML 操作的执行规则:

(1)视图中包含下面的部分就不能修改数据:

 组函数;GROUPBY 子句 ;DISTINCT 关键字;用表达式定义的列。

(2)创建只读视图:

不允许执行DML操作,使用whith read only;


5.内建视图:

(1)什么是内建视图?

1)内建视图是一个带有别名 (或相关名) 的可以在 SQL 语句中使用的子查询;

2)一个主查询的在 FROM 子句中指定的子查询就是一个内建视图;

3)内建视图由位于 FROM 子句中命名了别名的子查询创建。该子查询定义一 个可以在主查询中引用数据源。

6.Top-N分析:

(1)什么是“Top-N”分析?

1)使用一个带有下面描述的元素的一致的嵌套查询结构;

2)子查询或者内建视图产生数据的排序列表,该子查询或者内建视图包含 ORDERBY 子 句来确保排序以想要的顺序排列。为了取回最大值,需要用 DESC 参数。

3)在最后的结果集中用外查询限制行数。外查询包括下面的组成部分: −ROWNUM 伪列,它为从子查询返回的每一行指定一个从 1 开始的连续的值 − 一个 WHERE 子句,它指定被返回的 n 行,外 WHERE 子句必须用一个<或 者<=操作。

6.Oracle的分页查询:

(1)什么是分页查询?

“分页查询”,也就是说不要一次性查询所有的数据,每次只查询一部分数 据。这样分批次地进行处理,可以呈现出很好的用户体验,对服务器资源的消耗也不大。

(2)实现思路:

在内建视图中通过rownum伪列值的判断来指定获取数据的数量。

(3)分页语法:

分页语句:select t1.*from(select t.*,rownum rn from 表名 t where rownum<=分页单位*当前页)t1 where  t1.rn>=(当前页-1)*分页单位 and t1.rn<=分页单位*当前页;

分页单位:每页展示数据的条数;当前页:展示的第几页。

二、序列(sequence)

1.什么是序列?

1)序列是用户创建的数据库对象,序列会产生唯一的整数。序列的一个典型的用途是创建 一个主键的值,它对于每一行必须是唯一的。序列由一个 Oracle 内部程序产生并增加或减 少。 

2)序列是一个节省时间的对象,因为它可以减少应用程序中产生序列程序的代码量。序列 号独立于表被存储和产生,因此,相同的序列可以被多个表使用。

2.创建序列:

(1)通过DDL语句创建序列

创建序列语法:

create sequence 序列名称[参数列表]

 参数列表:increment by 增长间隔

start with起始值

 maxvalue最大值

minvalue最小值

cycle/nocycle是否循环

cache/nocache是否缓存

(2)使用默认参数创建:(从1开始,每次增加1,不限制最大值,不循环,缓存20)

3.使用序列:

(1)NEXTVAL 和 CURRVAL 伪列:

1)NEXTVAL 返回下一个可用的序列值,它每次返回一个唯一的被引用值,即使对于 不同的用户也是如此 。

2)CURRVAL 获得当前的序列值 ;

3)在 CURRVAL 获得一个值以前,NEXTVAL 对该序列必须发布。

4.修改序列:

(1)原则:

1)必须是被修改序列的所有者,或者有 ALTER 权限。 

2)用 ALTERSEQUENCE 语句,只有以后的序列数会受影响。 

3)用 ALTERSEQUENCE 语句,STARTWITH 选项不能被改变。为了以不同的数重新开 始一个序列,该序列必须被删除和重新创建。

(2)删除序列:

三、索引(index)

1.什么是索引?

1)索引提供对表中行的直接和快速访问,它的目的是用已索引的路径快速定位数据以减少 磁盘 I/O。

2)索引由 Oracle 服务器自动使用和维护,索引逻辑地和物理地独立于他们索引的 表,这意味者索引可以在任何时候被创建或删除,并且不影响基表或其它的索引。当删除表 时,相应的索引也被删除。

3)索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。

2.索引的类型:

(1)唯一性索引:当你在一个表中定义一个列为主键,或者定义一个唯一键约束时 Oracle 服务器自动创建该索引,索引的名字习惯上是约束的名字。 

(2)非唯一索引:由用户创建,(单行索引,复合索引(组合索引),函数索引)例如,可以创建一个 FOREIGN KEY 列索引用于一个查询 中的连接来改进数据取回的速度。

3.创建索引的方式:

1)自动:在一个表的定义中,当定义一个 PRIMARYKEY 或 UNIQUE 约束时,一个 唯一索引被自动创建。

2)手动:用户能够在列上创建非唯一的索引来加速对行的访问。

(1)索引的优缺点:

优点:索引可以提高查询效率;缺点:对增、删改、效率有影响。

(3)什么时候创建索引?

1)一个列包含一个大范围的值;

2)一个列包含很多的空值;

3)一个或多个列经常同时在一个 WHERE 子句中或一个连接条件中被使用 ;

4)表很大,并且经常的查询期望取回少于百分之 2 到 4 的行。

4.操作索引:

(1)创建非唯一索引语法:

语法:create index 索引名on 表名(列名...)

(2)创建单行索引:

(3)创建复合索引:

(4)创建函数索引:

(5)删除索引:

5.同义词(synonym):

(1)什么是同义词?

为数据对象起别名。

(2)创建同义词:

create synonym 别名for数据对象(表/ 视图);

(3)删除同义词:

drop synonym 同义词名;

6.创建用户:

(1)什么是Oracle用户?

Oracle 用户是用来连接数据库和访问数据库对象的。

(2)操作用户:

1)创建用户:需要具备创建用户的权限可以使用 sys 或者 system 用户来创建新用户。

语法结构:

2)删除用户:

法:drop User  用户名;

四、数据控制语言(DCL)

1.授予系统权限:

grant...授予用户权限;

语法结构:

(1)授权创建其他对象

1)CREATESESSION;

2)CREATETABLE;

3)CREATESEQUENCE ;

4)CREATEVIEW;

5)CREATEPROCEDURE;

6)UNLIMITEDTABLESPACE;

2.撤销权限:

revork..撤销用户权限

语法:Revoke 权限 from 用户

3.Oracle中的角色:

(1)创建角色:

(2)授予权限给一个角色

(3)授予一个角色给用户

(4)撤销用户角色

语法:revoke 角色 from 用户;

五、Oracle的数据导入与导出

1.数据库导入导出需要注意:

1)目标数据库要与源数据库有着名称相同的表空间。 

2)目标数据在进行导入时,用户名尽量相同(这样保证用户的权限级别相同)。 

3)目标数据库每次在进行数据导入前,应做好数据备份,以防数据丢失。 

4)弄清是导入导出到相同版本还是不同版本(oracle10g 版本与 oracle11g 版本)。 

5)目标数据导入前,弄清楚是数据覆盖(替换),还是仅插入新数据或替换部分数据表。

6)确定目标数据库磁盘空间是否足够容纳新数据,是否需要扩充表空间。 

7)导入导出时注意字符集是否相同,一般 Oracle 数据库的字符集只有一个,并且固定, 一般不改变。

8)确定操作者的账号权限。

2.导出数据的格式:

1)Dmp 格式:.dmp 是二进制文件,可跨平台,还能包含权限,效率好。 

2)Sql 格式:.sql 格式的文件,可用文本编辑器查看,通用性比较好,效率不如第一种, 适合小数据量导入导出。尤其注意的是表中不能有大字段 (blob,clob,long),如果有,会 报错。

3) Pde 格式: .pde 格式的文件, .pde 为 PL/SQLDeveloper 自有的文件格式,只能用 PL/SQL Developer 工具导入导出,不能用文本编辑器查看。

3.exp(导出)和imp(导入):

注意:该命令需要在操作系统的命令窗口执行,而非 sql/plus ;在使用导出或导入命令时,在命令的后侧不要添加分号。

(1)命令格式:

1)导出:exp 用户名/密码@oracle 的连接地址:端口/需要导出的服务名 file=路径/文件名.dmp;

2)导入:imp 用户名/密码@oracle 的连接地址:端口/需要导出的服务名 file=路径/文件名.dmp;

4.使用PL/SQL Developer实现导入与导出:


tools

(1)导出sql格式:

(2)导入sql格式:

(3)导出PDE格式:

(4)导入PDE格式: 

(5)导出数据库对象:

(6)导入数据库对象:

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

推荐阅读更多精彩内容

  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,004评论 0 9
  • 1.伪表,伪列 1.1.伪表dual 概念:就是一个不真实存在的虚拟表.伪表的作用就是用来构造一个符合sql规则的...
    随手点灯阅读 1,213评论 1 7
  • 视图(View) 什么是视图 可以通过创建表的视图来表现数据的逻辑子集或数据的组合。视图是基于表或另一个视图的逻辑...
    小破孩_e9ce阅读 550评论 0 0
  • 对sql语言的以下知识点回顾: 1.视图(View) 2.序列(Sequence) 3.索引(Index) 4.同...
    袁小胜阅读 590评论 0 0
  • 今天看到一位朋友写的mysql笔记总结,觉得写的很详细很用心,这里转载一下,供大家参考下,也希望大家能关注他原文地...
    信仰与初衷阅读 4,720评论 0 30