一、Oracle同义词的使用
定义:同义词是现有对象的一个别名
作用:
–简化SQL语句
–隐藏对象的名称和所有者
–提供对对象的公共访问
同义词共有两种类型:
•公有同义词可被所有的数据库用户访问。
•私有同义词只能在其模式内访问,且不能与当前模式的对象同名。
1)、公有同义词的创建:
create public synonym table_name for user.table_name;
其中第一个user_table和第二个user_table可以不一样。
2)、删除公有同义词
drop public synonym table_name;
3)、删除私有同义词
drop synonym countrie;
--创建或替换一个私有同义词,hr.countries 去一个别名countrie create or replace synonym countrie for hr.countries;
4)、查看所有同义词
select * from dba_synonyms
二、Oracle序列的使用
定义:
•序列是用于生成唯一、连续序号的对象
•序列可以是升序的,也可以是降序的
•使用CREATE SEQUENCE语句创建序列
访问序列
•通过序列的伪列来访问序列的值
–NEXTVAL 返回序列的下一个值
–CURRVAL 返回序列的当前值
1)、创建序列seq_test最小值为一,从一开始,每次增长一
答:create sequence seq_test;
2)、--使用序列中的两个伪列,获取和生成序列值
select seq_test.nextval from dual; --获取序列下一个值 select seq_test.currval from dual; --获取序列当前值
3)、序列的使用(用在对表的数据添加上)
答:insert into test(id,name) values(seq_test.nextval,'张三三'||seq_test.currval); commit;
4)删除序列
答:drop sequence seq_test;
3、Oracle视图的使用
定义:
•视图以经过定制的方式显示来自一个或多个表的数据
•视图可以视为“虚拟表”或“存储的查询”
•创建视图所依据的表称为“基表”
视图的优点:
–提供了另外一种级别的表安全性
–隐藏的数据的复杂性
–简化的用户的SQL命令
–隔离基表结构的改变
–通过重命名列,从另一个角度提供数据
1)、创建视图
--创建视图view_student ,跟使用表一样,但是不存在真实数据还是存在表中,视图只是存放查询|SQL,当查询视图时候,实际上执行的是保存的sql; create or replace view view_student as select * from student s;
2)、查询视图
跟使用表一样 select * from view_student;
3)、删除视图
drop view 视图名
4、Oracle索引的使用
定义:
•索引是与表相关的一个可选结构
•用以提高 SQL 语句执行的性能
•减少磁盘I/O
•使用 CREATE INDEX 语句创建索引
•在逻辑上和物理上都独立于表的数据
•Oracle 自动维护索引
索引分为五种:唯一索引,组合索引,反向索引,位图索引,基于函数的索引
1)创建标准索引
SQL> CREATE INDEX item_index ON itemfile (itemcode)
TABLESPACE index_tbs;
2)重建索引
SQL> ALTER INDEX item_index REBUILD;
3)删除索引
SQL> DROP INDEX item_index;
4)唯一索引
定义:•唯一索引确保在定义索引的列中没有重复值
•Oracle 自动在表的主键列上创建唯一索引
•使用CREATE UNIQUE INDEX语句创建唯一索引
使用:
CREATE UNIQUE INDEX item_index
ON itemfile (itemcode);
5)反向键索引
定义:
•反向键索引反转索引列键值的每个字节
•通常建立在值是连续增长的列上,使数据均匀地分布在整个索引上
•创建索引时使用REVERSE关键字
6)位图索引
定义:
•位图索引适合创建在低基数列上
•位图索引不直接存储ROWID,而是存储字节位到ROWID的映射
•减少响应时间
•节省空间占用
使用:
CREATE BITMAP INDEX bit_index
ON order_master (orderno);
7)基于函数的索引
定义:
•基于一个或多个列上的函数或表达式创建的索引
•表达式中不能出现聚合函数
•不能在LOB类型的列上创建
•创建时必须具有 QUERY REWRITE 权限
使用:
CREATE INDEX lowercase_idx
ON toys (LOWER(toyname));
> SELECT toyid FROM toys
WHERE LOWER(toyname)='doll';