数据库对象

数据库对象

数据库对象简介

Oracle 数据库对象又称模式对象
数据库对象是逻辑结构的集合,最基本的数据库对象是表
其他数据库对象包括:
在这里插入图片描述

同义词(对象别名)

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

简化SQL语句

  1. 隐藏对象的名称和所有者
  2. 提供对对象的公共访问

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

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
实例

--同义词
select * from emp;
--创建或创建(存在就替换不存在就创建)私有同义词,对象的别名。私有的别名只能本用户使用,别的用户无法访问。
create or replace synonym syn_emp for emp;
select * from syn_emp;
--创建或创建(存在就替换不存在就创建)公共同义词,对象的别名。公有的别名可以被别的用户访问.
create or replace public synonym pub_syn_emp for emp;
select * from pub_syn_emp;
--删除同义词
drop synonym syn_emp;
drop public synonym pub_syn_emp;

序列

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

在这里插入图片描述
在这里插入图片描述

访问序列

在这里插入图片描述
实例

--序列,生成唯一,连续的序号,一般用作主键编号,默认从1~999999999999999,间隔1
create sequence seq_test;
--查询序列的下一个值
select  seq_test.nextval from dual;
--查询序列当前值
select seq_test.currval from dual;

更改序列

在这里插入图片描述

视图

视图以经过定制的方式显示来自一个或多个表的数据
视图可以视为“虚拟表”或“存储的查询”
创建视图所依据的表称为“基表”
视图的优点有:

  1. 提供了另外一种级别的表安全性
  2. 隐藏的数据的复杂性
  3. 简化的用户的SQL命令
  4. 隔离基表结构的改变
  5. 通过重命名列,从另一个角度提供数据

不能够对视图进行任何的修改,只能通过视图间接的对基表进行修改详情可看(触发器的instead of模式)

创建视图

在这里插入图片描述
创建视图的语法:

CREATE [OR REPLACE] [FORCE] VIEW
view_name [(alias[, alias]…)]
AS select_statement
[WITH CHECK OPTION]
[WITH READ ONLY];

实例

--视图(不存放真实的数据,引用原来表的数据)
create or replace view emp_view as select e.employee_id,e.first_name,e.salary,e.department_id from emp e;

视图的使用

CREATE OR REPLACE VIEW ord_ven AS
SELECT * FROM vendor_master ORDER BY venname;

在这里插入图片描述

在这里插入图片描述
实例

--视图跟表的使用方式一样
--创建视图,查询各个岗位的平均工资
create or replace view sal_view as select e.job_id,round(avg(e.salary)) salary from emp e group by e.job_id
select * from sal_view;

--创建视图,查询各个部门的平均工资,然后显示部门名称
create or replace view sal_dep_view as 
select e.department_id,round(avg(e.salary)) avg_sal ,d.department_name
from emp e ,dep d
where e.department_id = d.department_id
group by e.department_id,d.department_name;
select * from sal_dep_view s where s.department_name='IT';

视图中的函数

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

CREATE VIEW item_view AS
SELECT itemcode, LOWER(itemdesc) item_desc
FROM itemfile;

使用DROP VIEW语句删除视图

SQL> DROP VIEW toys_view;

索引

简单的说索引的值是加载到内存的,索引生效则从内存中读取数据(很快)。
不使用索引则是全表查询,从磁盘中用IO流的方式读取数据(很慢)。

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

索引分类

索引有各种类型,除了标准索引外,还有一些特殊类型的索引:
在这里插入图片描述

创建标准索引

SQL> CREATE INDEX idx_student_id student(id)

重建索引

内存中索引失效让其刷新索引重新生效

--重建索引(内存中索引失效让其刷新索引重新生效),刷新内存,更新索引
alter index idx_emp_salary rebuild;

删除索引

DROP INDEX item_index; 

唯一索引

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

--创建唯一索引 ,作用在值唯一的列上,比如主键,身份证号
create unique index idx_emp_employee_id on emp(employee_id);

反向键索引

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

--创建反向索引,作用在连续增长的列,比如使用序列生成的值
create index idx_emp_department_id on emp(department_id) reverse;

去除反向索引

ALTER INDEX rev_index REBUID NOREVERSE;

位图索引

低基数列就是值某个字段能够产生不同的值是少数的,例如性别只有(男,女)、学历(小学,中学,大学,)。这些属性只能产生有限个数值。
位图
位图索引适合创建在低基数列上
位图索引不直接存储ROWID,而是存储字节位到ROWID的映射
减少响应时间
节省空间占用

--位图索引,作用在低基数列,比如性别,学历,职位,职称
create bitmap index idx_student_sex on student(sex)

基于函数的索引

基于一个或多个列上的函数或表达式创建的索引
表达式中不能出现聚合函数
不能在LOB类型的列上创建
创建时必须具有 QUERY REWRITE 权限

CREATE INDEX lowercase_idx ON toys (LOWER(toyname));

SELECT toyid
FROM toys
WHERE LOWER(toyname)=‘doll’

总结

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值