Oracle(一)--> 数据库对象详解(文字解释,先有个小理解~)

----数据库对象:逻辑结构的集合 ----

一、同义词:现有对象的别名

/*

作用: 

简化SQL语句

隐藏对象的名称和所有者

提供对对象的公共访问

分类:*/

--公有同义词:可以被所有的数据库用户访问,本地对象和公有对象同名时,本地对象优先

create public synonym syn1 for scott.emp;

select * from syn1;

--私有同义词:只能被当前模式访问,且不能与当前模式下的对象同名

create synonym emp1 for scott.emp;

select * from emp1;

/*

同义词创建的条件:在自身的模式下创建私有同义词的话,用户需要具有create synonym系统权限,

在其他的模式创建私有同义词,用户需要具有create any synonym系统权限

公有同义词:用户需要具有create  public synonym系统权限

*/

--创建或替换现有的同义词

create or replace synonym emp1 for scott.books;  

select * from emp1;

--删除私有同义词

drop synonym emp1;

--删除公有同义词

drop public synonym syn1;

--oracle表中的列实现自增:

--1 sys_guid: global unique identified:全局唯一标识,用于标识一行数据,32位的唯一字符串

select sys_guid() from  dual;

二、 序列(与触发器连用)

--序列:用于生成唯一、连续序号的数据库对象

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

create sequence seq_toys

start with 10

increment by 10

maxvalue 500

minvalue 10

nocycle

cache 10;

/*

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

NEXTVAL 返回序列的下一个值

CURRVAL 返回序列的当前值

*/

create table toys

(toyid int primary key,

toyname char(20),

toyprice float);

insert into toys values(seq_toys.nextval,‘熊大‘,20);

select * from toys;

select  seq_toys.CURRVAL from dual;

insert into toys values(seq_toys.nextval,‘熊二‘,21);

--使用ALTER SEQUENCE语句修改序列,不能更改序列的START WITH参数

alter sequence seq_toys increment by 20 maxvalue 1000;

--删除序列

drop sequence seq_toys;

三:视图:视图以经过定制的方式显示来自一个或多个表的数据

/*

视图的优点有:

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

隐藏了数据的复杂性

简化了用户的SQL命令

隔离基表结构的改变

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

 CREATE [OR REPLACE] [FORCE] VIEW

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

  AS select_statement

  [WITH CHECK OPTION]

  [WITH READ ONLY];

or replace:如果视图存在则替换,否则创建新的视图

force:无论基表是否存在都创建视图

with check option:一旦使用该限制,对视图增加或者修改数据的时候,必须满足子查询的条件

with read only:设置视图只读,不能通过视图更改数据,这样的视图具有更高的安全性

*/

CREATE OR REPLACE VIEW v_stu AS

SELECT * FROM students WHERE sdept = ‘Art‘

WITH CHECK OPTION ;

select * from v_stu;

select * from students;

insert into v_stu values(‘20030105‘,‘July‘,‘F‘,null,‘Art‘,to_date(‘1996-12-11‘,‘yyyy-mm-dd‘));

CREATE OR REPLACE VIEW v_stu AS

SELECT * FROM students WHERE sdept = ‘Art‘ ; 

--若没有此选项,可以将不符合条件的记录(在试图中)改为视图中不可见记录

insert into v_stu values(‘20030106‘,‘Juli‘,‘F‘,null,‘Maths‘,to_date(‘1996-12-11‘,‘yyyy-mm-dd‘));

--使用 ORDER BY 子句创建视图

CREATE OR REPLACE VIEW v_stusorted AS

SELECT * FROM students ORDER BY sdept;

select * from v_stusorted

--force :带有错误的视图

create force view v_temp  as select * from t_temp;

select * from v_temp;

create table t_temp (id varchar2(10),name varchar2(20));

insert into t_temp values(‘1‘,‘a‘);

--视图中可以使用单行函数、分组函数和表达式

---删除视图

drop view v_temp;

--如何保证对视图的修改最后映射到唯一基表数据

--键保留表:基表的主键也是视图的主键

四、索引:与表相关的一个可选结构

/*

主要作用:用以提高 SQL 语句执行的性能

减少磁盘I/O

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

Oracle 自动维护索引

创建索引有以下两种方式:

1手工创建

2 自动创建:主键 唯一约束

*/

create index index_stu  on students(sname);

--重建索引

--rebuilD 性能优于drop create 语句

alter index index_stu rebuild;

--删除索引

drop index index_stu;

--唯一索引

create unique index index_name on students(sname);

--组合索引:作用如果 SQL 语句的 WHERE 子句中引用

了组合索引的所有列或大多数列,则可以提高检索速度

create index index_ss on students(sage,sdept);

--USER_INDEXES

select * from USER_INDEXES;

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-08 01:32:51

Oracle(一)--> 数据库对象详解(文字解释,先有个小理解~)的相关文章

Oracle数据库备份详解

Oracle数据库备份详解 Oracle官方提供多种备份方式,日常使用最多的有exp/imp常规方式,及数据泵expdp/impdp方式:下面对这两种方式进行详解. 常规方式 exp/imp imp/exp是Oracle导入导出命令,可以用作数据的迁移,expdp/imdp也是Oracle数据导入导出的命令,效率比imp/exp效率要高,这个后面再讨论 一  EXP导出命令 exp 是数据的导出命令,可以用于表,用户,整个数据库,exp -help查看帮助 Export: Release 11.

ORACLE数据库备份与恢复详解

ORACLE数据库备份与恢复详解 学习过程中的总结,有兴趣不妨看看,如果有不对的地方,高手不要留情!! Oracle的备份与恢复有三种标准的模式,大致分为两 大类,备份恢复(物理上的)以及导入导出(逻辑上的),而备份恢复又可以根据数据库的工作模式分为非归档模式(Nonarchivelog-style) 和归档模式(Archivelog-style),通常,我们把非归档模式称为冷备份,而相应的把归档模式称为热备份,他们的关系如下所示 三种方式各有优点,我们做个比较(这个是用Fireworks画的,

ORACLE PL/SQL编程详解

ORACLE PL/SQL编程详解 编程详解 SQL语言只是访问.操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发.PL /SQL是一种高级数据库程序设计语言,该语言专门用于在各种环境下对ORACLE数据库进行访问.由于该语言集成于数据库服务器中,所以PL/SQL代码可以对数据进行快速高效的处理.除此之外,可以在ORACLE数据库的某些客户端工具中,使用PL/SQL语言也是该语言的一个特点.本章的主要内容是讨论引入PL/SQL语言的必要性和该语言的

[顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功)

原文:[顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功) [顶]ORACLE PL/SQL编程详解之二: PL/SQL块结构和组成元素(为山九仞,岂一日之功) 继上四篇:ORACLE PL/SQL编程之八:把触发器说透                ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)                [推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到) [推荐]

[强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!)

原文:[强烈推荐]ORACLE PL/SQL编程详解之七:程序包的创建与应用(聪明在于学习,天才在于积累!) [强烈推荐]ORACLE PL/SQL编程详解之七: 程序包的创建与应用(聪明在于学习,天才在于积累!) ——通过知识共享树立个人品牌.   继上七篇:            [推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下)            [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之

oracle中imp命令详解 .

oracle中imp命令详解 Oracle的导入实用程序(Import utility)允许从数据库提取数据,并且将数据写入操作系统文件.imp使用的基本格式:imp[username[/password[@service]]],以下例举imp常用用法. 1. 获取帮助 imp help=y 2. 导入一个完整数据库 imp system/manager file=bible_db log=dible_db full=y ignore=y 3. 导入一个或一组指定用户所属的全部表.索引和其他对象

[推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下)

原文:[推荐]ORACLE PL/SQL编程详解之一:PL/SQL 程序设计简介(千里之行,始于足下) [推荐]ORACLE PL/SQL编程详解之一: PL/SQL 程序设计简介(千里之行,始于足下) ——通过知识共享树立个人品牌. 继上六篇: [顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功) [推荐]ORACLE PL/SQL编程详解之三:PL/SQL流程控制语句(不给规则,不成方圆) [推荐]ORACLE PL/SQL编程之四:把游标说透(

JavaWeb学习(三)----JSP内置对象详解

[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4065790.html 联系方式:[email protected] [系列]JSP学习系列文章:(持续更新) JavaWeb学习(一)----JSP简介及入门(含Tomcat的使用) JavaWeb学习(二)----JSP脚本元素.指令元素.动作元素 JavaWeb学习(三)----JSP内置对象

oracle impdp的table_exists_action详解

oracle impdp的table_exists_action详解 分类: [oracle]--[备份与恢复]2012-01-06 22:44 9105人阅读 评论(0) 收藏 举报 tableactionoracleschemaobjectimport 1 table_exists_action参数说明 使用imp进行数据导入时,若表已经存在,要先drop掉表,再进行导入. 而使用impdp完成数据库导入时,若表已经存在,有四种的处理方式: 1)  skip:默认操作 2)  replace