美文网首页
Oracle学习day-31:数据库其他对象

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

作者: 开源oo柒 | 来源:发表于2019-08-22 22:20 被阅读0次

    一、视图(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实现导入与导出:

    (1)导出sql格式:

    (2)导入sql格式:

    (3)导出PDE格式:

    (4)导入PDE格式: 

    (5)导出数据库对象:

    (6)导入数据库对象:

    相关文章

      网友评论

          本文标题:Oracle学习day-31:数据库其他对象

          本文链接:https://www.haomeiwen.com/subject/ztnosctx.html