Oracle数据库--实用操作(2) 数据库对象

                                                                                                    Oracle-----数据库对象

Oracle数据对象

                   表              存储数据

                   序列         自动增长的数值

                            sqe_a.nextval  下一个值,

                            sqe_a.currval  当前值

                   视图[虚表]

                   实质:存储了编译好的SQL查询语句,打开视图时,直接运行查询语句[效率高]

                  

                   同义词:相当于 “别名”

                  

                   索引:(默认、唯一、函数、反向键索引)

                   优化搜索、排序性能;但会占用大量存储空间。

                  

                            默认索引         PK主键

                            唯一索引         UK

                            反向键索引     1124801

                  

                            函数索引         ename like '李%'

                                               lower(ename)like '李%'

                                               to_char(date,"yyyy-MM")

                            位图索引

                            低基数索引(可以数过来,值相对较少)

                           

                   函数

                            系统定义的

                            自定义函数[把常用的计算式,定义成函数,可在多出调用]

                  

                   过程

                            存储过程        

                  

                   触发器

                            定义触发器,自动调用。 

 一、

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

1.       简化SQL语句

2.       隐藏对象的名称和所有者(隐藏原始对象内容)

3.       提供对对象的公共访问

同义词共有两种类型:

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

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

 二、

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

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

使用CREATE SEQUENCE语句创建序列

序列信息        

从user_sequences中查出所有的序列信息。

select * from user_sequences;

修改序列

使用ALTER SEQUENCE语句修改序列,

不能更改序列的START WITH参数

ALTER SEQUENCE toys_seq MAXVALUE 5000CYCLE;

删除序列

使用DROP SEQUENCE语句删除序列

 DROPSEQUENCE toys_seq;

三、视图

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

      视图可以视为“虚拟表”或“存储的查询”

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

      视图的优点有:

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

2.       隐藏的数据的复杂性

3.       简化的用户的SQL命令

4.       隔离基表结构的改变

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

CREATE VIEW stud_view

AS

SELECT studno, studname, subno

FROM Stud_details;                                     --创建单表视图;操作单表视图就相当于操作表

      创建视图的语法:

WITH CHECKOPTION CONSTRAINT _NAME :表示增加一个检查约束,INSERT和UPDATE时候必须要求: INSERT时候要求插入的数据必须符合定义时候设置的where条件一致,UPDATE 时候只能改除where条件列以外的其他数据列或者修改的条件列的值符合where条件

多表视图(联接视图)

CREATE VIEW Stud_sub_view AS

SELECT Studno, Studname, Submrks, Subname

FROM Stud_details, Sub_Details

WHERE Stud_details.Subno=Sub_details.Subno;             --where指定  多个表的连接关系

 

CREATE VIEWven_ord_outj_view AS

SELECTvm.vencode, venname, orderno, odate, ostatus

FROM   vendor_master vm, order_master om

WHERE  vm.vencode = om.vencode(+);                         --不带(+)的表,数据全出现[不等值连接]

SELECT vm.vencode, venname, orderno, odate,ostatus

FROM vendor_master vm LEFT OUTER JOINorder_master om

ON vm.vencode = om.vencode;

 

视图上的DML语句

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

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

1.       只能修改一个底层的基表

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

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

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

 

键保留表

         例如:Studno 既是 Stud_details中的主键,也是联接结果中的主键

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

 

四、索引

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

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

      减少磁盘I/O

      使用 CREATEINDEX 语句创建索引

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

      Oracle 自动维护索引

        索引的工作原理是与一个叫做ROWID的概念紧密相关的,Oracle9i在创建数据表时,默认会为每个数据表建立一个隐含字段,叫ROWID。

        在向数据表中插入记录时,系统将自动为每条记录分配惟一的一个ROWID号,利用这个ROWID号,就可以快速定位到记录。

唯一索引

唯一索引确保在定义索引的列中没有重复值

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

使用CREATE UNIQUE INDEX语句创建唯一索引

 CREATE UNIQUE INDEXitem_index

     ON itemfile (itemcode);

组合索引

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

索引中列的顺序是任意的

如果 SQL 语句的 WHERE 子句中引用了组合索引的所有列或大多数列,则可以提高检索速度

 

反向键索引

反向键索引反转索引列键值的每个字节

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

创建索引时使用REVERSE关键字

 CREATE INDEX rev_index

     ON itemfile (itemcode)REVERSE;

 

位图索引

位图索引适合创建在低基数列上

位图索引不直接存储ROWID,而是存储字节位到ROWID的映射

减少响应时间

节省空间占用

CREATE BITMAP INDEX bit_index

     ON order_master(orderno);

索引组织表

索引组织表的数据存储在与其关联的索引中

索引中存储的是行的实际数据,而不是ROWID

基于主键访问数据

CREATE TABLE 命令与 ORGANIZATIONINDEX 子句一起用于创建索引组织表

CREATE TABLE ind_org_tab (

       vencode NUMBER(4)PRIMARY KEY,

       venname VARCHAR2(20)

     )

     ORGANIZATION INDEX;

基于函数的索引

基于一个或多个列上的函数或表达式创建的索引

表达式中不能出现聚合函数

不能在LOB类型的列上创建

创建时必须具有 QUERY REWRITE权限

当查询使用了函数的时候,索引将不再使用,所以要建立函数索引

CREATE INDEX lowercase_idx

     ON toys (LOWER(toyname));

 

总结:

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

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

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

索引是与表相关的一个可选结构,用于提高 SQL语句执行的性能

索引类型有标准索引、唯一索引、反向键索引、位图索引和基于函数的索引

索引组织表基于主键访问数据

你可能感兴趣的:(oracle,数据库)