`
bb171274153
  • 浏览: 1156 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

数据库对象的学习

 
阅读更多
数据库对象是逻辑结构的集合,最基本的数据库对象是表.
数据库对象包括:同义词,序列,视图,索引。
同义词:
  简化SQL语句
  隐藏对象的名称和所有者(隐藏原始对象内容)
  提供对对象的公共访问。

同义词有两种类型:
    公有同义词可被所有的数据库用户访问。
私有同义词只能在其模式内访问,且不能与当前模式的对象同名。

--定义私有同义词
create synonym e for emp;
Select * from e;
--删除同义词
drop synonym e;
Drop public synonym e;

--赋权限
grant select on dept to zhangsan;

--定义公共的同义词
create or replace public synonym e for emp;

序列
    序列是用于生成唯一、连续序号的对象
    序列可以是升序的,也可以是降序的
使用CREATE SEQUENCE语句创建序列

--创建序列
create sequence seq_num
start with 1
increment by 2
maxvalue 20
minvalue 1
NOCYCLE
NOCACHE ;
指序列开始大小,默认为1
每次的增量,默认为2
序列的最大数 20
序列的最小数1
当序列最大了将不再生成整数
不保留在内存中


通过序列的伪列来访问序列的值
NEXTVAL 返回序列的下一个值
CURRVAL 返回序列的当前值

注意:序列在使用的时候,如果给的是主键,为防止出现不连续的情况,应该设置为NOCACHE。

--查询当前用户的序列
select * from user_sequences;

-- Create table
create table MyUser
(
  userid   number(10) not null,
  username varchar2(20),
  userpwd  varchar2(20)
)
tablespace USERS
  storage
  (
    initial 64K
    next 64K
    minextents 1
    maxextents unlimited
    pctincrease 0
  );


使用ALTER SEQUENCE语句修改序列,不能更改序列的START WITH参数
ALTER SEQUENCE  seq_num  MAXVALUE 5000 CYCLE;

--使用序列插入数据
insert into myuser values(1,'张三丰','007');

使用DROP SEQUENCE语句删除序列
DROP SEQUENCE seq_num;

视图以经过定制的方式显示来自一个或多个表的数据
视图可以视为“虚拟表”或“存储的查询”
创建视图所依据的表称为“基表”
视图的优点有:
1.提供了另外一种级别的表安全性
2.隐藏的数据的复杂性
3.简化的用户的SQL命令
4.隔离基表结构的改变
5.通过重命名列,从另一个角度提供数据
--创建视图
create or replace view v_emp as select empno,ename,job from emp;
[WITH CHECK OPTION][CONSTRAINT C_NAME]
  [WITH READ ONLY];禁止对表进行更新删除操作

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

使用 WITH CHECK OPTION 选项创建视图
CREATE OR REPLACE VIEW pause_view AS
SELECT * FROM order_master WHERE ostatus = 'p'
WITH CHECK OPTION CONSTRAINT chk_pv;

使用 ORDER BY 子句创建视图
CREATE OR REPLACE VIEW ord_ven AS
SELECT * FROM vendor_master ORDER BY venname;

创建带有错误的视图
CREATE FORCE VIEW ven AS
SELECT * FROM venmaster;


在视图上也可以使用修改数据的DML语句,如INSERT、UPDATE和DELETE
视图上的DML语句有如下限制:
1.只能修改一个底层的基表
2.如果修改违反了基表的约束条件,则无法更新视图
3.如果视图包含连接操作符、DISTINCT 关键字、集合操作符、聚合函数或 GROUP BY 子句,则将无法更新视图
4.如果视图包含伪列或表达式,则将无法更新视图

使用DROP VIEW语句删除视图
DROP VIEW toys_view;








索引
索引是与表相关的一个可选结构
用以提高 SQL 语句执行的性能
减少磁盘I/O
使用 CREATE INDEX 语句创建索引
在逻辑上和物理上都独立于表的数据
Oracle 自动维护索引

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

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

创建标准索引
CREATE INDEX item_index ON itemfile (itemcode)
     TABLESPACE index_tbs;

重建索引
ALTER INDEX item_index REBUILD;

删除索引
DROP INDEX item_index;


唯一索引
唯一索引确保在定义索引的列中没有重复值
Oracle 自动在表的主键列上创建唯一索引
使用CREATE UNIQUE INDEX语句创建唯一索引
CREATE UNIQUE INDEX item_index
     ON itemfile (itemcode);

组合索引
组合索引是在表的多个列上创建的索引
索引中列的顺序是任意的
如果 SQL 语句的 WHERE 子句中引用了组合索引的所有列或大多数列,则可以提高检索速度
CREATE INDEX comp_index
     ON itemfile(p_category, itemrate);

反向键索引
反向键索引反转索引列键值的每个字节
通常建立在值是连续增长的列上,使数据均匀地分布在整个索引上
创建索引时使用REVERSE关键字

CREATE INDEX rev_index
     ON itemfile (itemcode) REVERSE;
重建索引
ALTER INDEX rev_index REBUID NOREVERSE;

位图索引适合创建在低基数列上
位图索引不直接存储ROWID,而是存储字节位到ROWID的映射
减少响应时间
节省空间占用
CREATE BITMAP INDEX bit_index
     ON order_master (orderno);


同义词是现有数据库对象的别名
序列用于生成唯一、连续的序号
视图是基于一个或多个表的虚拟表
索引是与表相关的一个可选结构,用于提高 SQL 语句执行的性能
索引类型有标准索引、唯一索引、反向键索引、位图索引和基于函数的索引
索引组织表基于主键访问数据
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics