数据库对象简介

Oracle 数据库对象又称模式对象

数据库对象是逻辑结构的集合,最基本的数据库对象是表

其他数据库对象包括:

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

  简化SQL语句

  隐藏对象的名称和所有者

  提供对对象的公共访问

同义词共有两种类型:

CREATE  USER  test  IDENTIFIED  BY  test;
GRANT CONNECT , CREATE SYNONYM TO test;
GRANT SELECT ON SCOTT.EMP TO test;
GRANT DELETE ON SCOTT.EMP TO test;
GRANT UPDATE ON SCOTT.EMP TO test;

CREATE  SYNONYM   staff   FOR  SCOTT.emp;

CREATE   PUBLIC   SYNONYM  pub_emp FOR  SCOTT.emp;

CREATE OR REPLACE PUBLIC SYNONYM  pub_emp FOR SCOTT.emp;

DROP SYNONYM   staff;
DROP PUBLIC SYNONYM pub_emp;

序列

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

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

使用CREATE SEQUENCE语句创建序列

依次为:

序列案例

create table  t_testseq
(
id number primary key,
name varchar2(10) NOT NULL
);

create  sequence  seq_value
Start with 1
Increment by 1;

访问序列

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

NEXTVAL 返回序列的下一个值

CURRVAL 返回序列的当前值

INSERT INTO  t_testseq
VALUES (seq_value.NEXTVAL, 'tom')
INSERT INTO t_testseq
VALUES (seq_value.NEXTVAL, 'jime');

SELECT  seq_value.CURRVAL FROM dual;

更改和删除序列

ALTER SEQUENCE  SEQ_VALUE  MAXVALUE   5000   CYCLE;

DROP   SEQUENCE   SEQ_VALUE;

 视图

select dept.deptno,dname,loc,empno,ename,job,mgr,hiredate
from emp,dept
where emp.deptno = dept.deptno and dname= ‘ SALES ‘;

--查看当前用户的系统权限
select * from user_sys_privs;
--查看当前用户角色权限
select * from user_role_privs;
--查看某个角色权限
select * from role_sys_privs where role =‘RESOURCE’; --创建视图
create view dept_emp
as
select dept.deptno,dname,loc,empno,ename,job,mgr,hiredate
from emp,dept
where emp.deptno = dept.deptno;

select * from dept_emp  where dname= ‘ SALES ‘;

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

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

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

视图的优点有:

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

  隐藏的数据的复杂性

  简化的用户的SQL命令

  隔离基表结构的改变

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

create view dept_emp_order
as
select dept.deptno,dname,loc,empno,ename,job,mgr,hiredate
from emp,dept
where emp.deptno = dept.deptno order by dept.deptno;

create view dept_sal_avg
as
select dname,avg(sal) avg_sal
from dept,emp
where dept.deptno = emp.deptno group by dname;

视图上的DML语句

在视图上也可以使用修改数据的DML语句,如

INSERT、UPDATE和DELETE

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

只能修改一个底层的基表

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

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

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

update dept_emp
set ename = 'TOM'
WHERE empno = 7521;

Select  ename from  dept_emp where empno = 7521

Select  ename from emp where empno = 7521

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

DROP VIEW   view_name; 

索引概念

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

用以提高 SQL 语句执行的性能减少磁盘I/O

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

Oracle 自动维护索引

索引有各种类型,除了标准索引外,还有一些特殊类型的索引:

  唯一索引

  组合索引

  反向键索引

  位图索引

 管理索引

CREATE  INDEX    索引名    ON   表名 (索引字段)
CREATE  INDEX    idx_ename  ON   emp (ename)

ALTER  INDEX   索引名  REBUILD [REVERSE][NOREVERSE] ; 
ALTER  INDEX  idx_ename  REBUILD;

DROP INDEX   索引名; 
DROP INDEX   idx_ename; 

测试索引

create table t_testseq
(
id number,
name varchar2(10)
);

create sequence seq_value
start with 1
increment by 1;

BEGIN
FOR v_temp in 1..1000000 LOOP
INSERT INTO t_testseq
values(seq_value.nextval,’abcde’);
END LOOP;
END;

Set  timing  on;      --sqlplus环境下设置
--常规查询
Select * from t_testseq where id = 28900;
--创建索引,再查询
Create index idx_testseq_id on t_testseq(id);
Select  *  from  t_testseq  where  id = 28900;

总结

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

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

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

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

  索引类型有标准索引、唯一索引、反向键索引、位图索引

最新文章

  1. Oracle基本数据类型
  2. cdnbest节点安装后连不上主控常见问题
  3. Scalaz(44)- concurrency :scalaz Future,尚不完整的多线程类型
  4. Python - KMP算法
  5. 如何让oracle的select强制走索
  6. 工作流(Workflow)学习---基础知识整理
  7. 批处理:遍历输出指定后缀格式的文件名.bat
  8. GetSystemTime API可以得到毫秒级时间
  9. win8 wifi开关显示关闭,且设置里面wifi开关显示灰色的解决办法
  10. C# 多线程 类构造函数 类方法之间的关系
  11. spring boot websocket stomp 实现广播通信和一对一通信聊天
  12. 学习Linux系统中命令的简单方法
  13. 【Linux常用命令】
  14. js字符串方法汇总
  15. bzoj 4237 稻草人 - CDQ分治 - 单调栈
  16. Ibatis.Net 数据库操作学习(四)
  17. [POJ1655]Balancing Act
  18. H5类似易企秀/编辑器/页面制作/开发/生成工具/软件/源码/授权
  19. bzoj2733: [HNOI2012]永无乡 启发式合并
  20. ZetCode PyQt4 tutorial First programs

热门文章

  1. ACdream 1099——瑶瑶的第K大——————【快排舍半,输入外挂】
  2. sqlite3在别的目录写文件的问题
  3. SpringMVC框架下实现分页功能
  4. C# 用tabcontrol实现窗体类似网页排版的显示
  5. FTP FileZilla Server 本地加密C# 实现
  6. jQuery:mouseover and Increase the Size of an Image
  7. vue中子组件的拆分 父组件与子组件之间的传值
  8. es6新语法的使用
  9. SQL专题
  10. Simotion CF卡 固件下载地址及制作方法