视图、序列、索引、同义词

一、视图
语法:
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view
[(alias[, alias]...)]
AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY];
1、简单视图:

创建视图:
SQL> create view test_view as select * from emp where deptno=10;
查询视图:
SQL> select * from test_view;

EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7782 CLARK MANAGER 7839 09-6月 -81 2450 10
7839 KING PRESIDENT 17-11月-81 5000 10
7934 MILLER CLERK 7782 23-1月 -82 1300 10
查看视图结构:
SQL> DESC TEST_VIEW;

2、创建复杂视图

SQL> CREATE VIEW AVG_SAL_COMM AS
SELECT DNAME 部门名称,D.DEPTNO 部门编号,COUNT(ENAME) 部门总人数,ROUND(AVG(NVL(SAL,0)),2) 部门平均工资,ROUND(AVG(NVL(COMM,0)),1) 部门平均资金
FROM EMP E RIGHT JOIN DEPT D
ON E.DEPTNO=D.DEPTNO
GROUP BY DNAME,D.DEPTNO
ORDER BY D.DEPTNO;
SQL> SELECT * FROM AVG_SAL_COMM;

部门名称 部门编号 部门总人数 部门平均工资 部门平均资金
-------------- ---------- ---------- ------------ ------------
ACCOUNTING 10 3 2916.67 0
RESEARCH 20 5 2175 0
SALES 30 6 1566.67 366.7
OPERATIONS 40 0 0 0
testSEQ 94 0 0 0

3、在视图定义中,可以使用WITH READ ONLY选项来保证该视图上不能进行DML操作.

4、删除视图
DROP VIEW VIEW_NAME;

二、序列
1、创建序列
--创建一个名称为 DEPT_DEPTNO的序列值,以用于DEPT表.不要设置 CYCLE 选项.

CREATE SEQUENCE DEPT_DEPTNO
INCREMENT BY 1
START WITH 91
MAXVALUE 100
NOCACHE --CACHE(缓冲)定义存放序列的内存块的大小,默认为20。NOCACHE表示不对序列进行内存缓冲。对序列进行内存缓冲,可以改善序列的性能。
NOCYCLE;
/*NEXTVAL 返回下一个可用的序列值,每访问一次,将产生一个新的值。. CURRVAL 返回当前的序列值.只有当NEXTVAL被访问之后,
CURRVAL伪列才能包含一个值.所以刚创建好的序列,第一次访问CURRVAL时报错。必须先访问NEXTVAL再访问CURRVAL。*/

2、序列的使用及查询

SQL> SELECT DEPT_DEPTNO.CURRVAL FROM DUAL;
SELECT DEPT_DEPTNO.CURRVAL FROM DUAL
*
第 1 行出现错误:
ORA-08002: 序列 DEPT_DEPTNO.CURRVAL 尚未在此会话中定义
SQL> SELECT DEPT_DEPTNO.NEXTVAL FROM DUAL;

NEXTVAL
----------
91

SQL> SELECT DEPT_DEPTNO.CURRVAL FROM DUAL;

CURRVAL
----------
91
SQL>
--使用序列向表DEPT中插入数据
SQL> insert into dept values(dept_deptno.nextval,‘testSEQ‘,‘testLOC‘);

已创建 1 行。

--如果一个序列是以 NOCACHE选项建立的, 那么可以通过查询USER_SEQUENCES 表来查看下一个可用的序列值,而不会使序列的当前值增加.
SQL> SELECT * FROM USER_SEQUENCES;

SEQUENCE_NAME MIN_VALUE MAX_VALUE INCREMENT_BY C O CACHE_SIZE LAST_NUMBER
------------------------------ ---------- ---------- ------------ - - ---------- -----------
DEPT_DEPTNO 1 100 1 N N 0 95

SQL>
=========
SELECT * FROM ALL_SEQUENCES;
SELECT * FROM DBA_SEQUENCES;

3、修改序列
可以更改序列的增量值、最大值、最小值、循环或者缓存选项。不能修改序列的初始值,否则会报错:ORA-02283: 无法变更启动序列号
ALTER SEQUENCE DEPT_DEPTNO INCREMENT BY 2;
ALTER SEQUENCE DEPT_DEPTNO MAXVALUE 200;

4、删除序列
DROP SEQUENCE SEQUENCE_NAME;
三、索引
1、创建索引
自动创建:当在创建表时,如果指定了 PRIMARY KEY或者 UNIQUE约束,那么将自动创建索引.
手动创建:用户可以在某个列上建立非唯一的索引,以加快基于该行的查询.
CREATE INDEX index_name
ON table (column[, column]...);
--创建索引,以提高对表EMP的ENAME列的访问速度.
CREATE INDEX EMP2_ENAME_IDX ON EMP2(ENAME);
--什么时候创建索引
欲创建索引的列在 WHERE子句或者连接条件中频繁使用.
该列所包含的不同值很多.
该列包含大量的空值.
表中的数据行数非常大,而且只有 2–4% 数据行被查询出来.
--什么时候没必要创建索引
表是空的.
列在查询条件中不经常使用.
大多数基于该表的查询,所查询出的数据量远多于2–4% 行.
表被频繁修改.

2、查看索引
USER_INDEXES 数据字典视图包含用户创建的索引的名字和它唯一性.
USER_IND_COLUMNS 视图包含索引的名字、表名、列名.

SELECT ic.index_name, ic.column_name,
ic.column_position col_pos,ix.uniqueness
FROM user_indexes ix, user_ind_columns ic
WHERE ic.index_name = ix.index_name
AND ic.table_name = ‘EMP2‘;

3、基于函数的索引
基于函数的索引也就是基于表达式的索引.
索引表达式由表的列、常量、 SQL函数或者用户自定义函数组成.
SQL> CREATE TABLE test (col1 NUMBER);
SQL> CREATE INDEX test_index on test(col1,col1+10);
SQL> SELECT col1+10 FROM test;

4、删除索引
要删除一个索引,必须是索引的拥有者,或者具有 DROP ANY INDEX的权限.
从数据字典中删除 EMP_ENAME_IDX 索引.
SQL> DROP INDEX EMP2_ENAME_IDX;
索引已删除。

四、同义词
通过创建一个同义词 (对象的另一个名字)来简化对数据库中对象的存取. 缩短了对象的名字长度.
CREATE [PUBLIC] SYNONYM synonym
FOR object;
例:为视图QUERY_TABSPACE创建一个简短的名字Q_SPACE;

创建视图:
CREATE VIEW QUERY_TABSPACE AS (SELECT /*+NO_MERGE(A) NO_MERGE(B)*/B.TABLESPACE_NAME 表空间名称, ROUND((B.BYTES/1024)/1024,2) 总空间大小MB,
NVL2(A.BYTES,ROUND((B.BYTES-NVL(A.BYTES,0))/1024/1024,2),B.BYTES) 已使用大小MB,
NVL2(A.BYTES,ROUND(NVL(A.BYTES,0)/1024/1024,2),0) 未使用大小MB,
NVL2(A.BYTES,TO_CHAR(ROUND(((B.BYTES-NVL(A.BYTES,0))/B.BYTES)*100,2),‘990.0‘),‘100‘)||‘%‘ 已使用率
FROM (SELECT TABLESPACE_NAME,SUM(BYTES) BYTES FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME)A,
(SELECT TABLESPACE_NAME,SUM(BYTES) BYTES FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME) B
WHERE B.TABLESPACE_NAME=A.TABLESPACE_NAME(+))
查询视图:
SELECT * FROM QUERY_TABSPACE;
创建同义词:
CREATE SYNONYM Q_SPACE FOR QUERY_TABSPACE;
查询同义词:
SELECT * FROM Q_SPACE;
删除同义词
DROP SYNONYM Q_SPACE;
时间: 2024-11-06 16:15:16

视图、序列、索引、同义词的相关文章

数据库 day60,61 Oracle入门,单行函数,多表查询,子查询,事物处理,约束,rownum分页,视图,序列,索引

1.    oracle介绍 ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一.比如SilverStream就是基于数据库的一种中间件.ORACLE数据库是目前世界上使用最为广泛的数据库管理系统,作为一个通用的数据库系统,它具有完整的数据管理功能:作为一个关系数据库,它是一个完备关系的产品:作为分布式数据库它实现了分布式处理功能.但它的所有知识,只要在一种机型上学习

视图序列索引

视图名字一般是以"V_"开头 视图在SQL语句中体现的角色与表相同,但是视图并不是一张真实存在的表,而只是对应一个 select语句的查询结果集,并将其当做表看待而已,使用视图的目的就是简化sql语句的复杂度,重用子查询,限制数据访问 视图对应的子查询中的字段若含有函数或者表达式,那么该字段必须指定别名.当师徒对应的子查询中的字段使用了别名,那么视图中该字段就用别名来命名 create view v_emp_10 as select empno,ename,sal,deptno fro

Oracle数据库——索引、视图、序列和同义词的创建

一.涉及内容 1.理解索引的概念和类型. 2.掌握创建索引的命令. 3.理解视图的概念和优点. 4.理解可更新视图应具备的特点. 5.掌握创建一般视图和可更新视图的命令. 6.理解序列和同义词的概念和作用. 7.掌握序列的创建与应用. 8.掌握同义词的创建与应用. 二.具体操作

Oracle学习(十):视图,索引,序列号,同义词

1.知识点:可以对照下面的录屏进行阅读 视图,序列,索引,同义词 SQL> --视图:虚表 SQL> --视图的优点:简化复杂查询,限制数据访问(银行用的多),提供数据的相互独立,同样的数据可以有不同的显示方式 SQL> --第一个视图: 员工号 姓名 月薪 年薪 SQL> create view view1 2 as 3 select empno,ename,sal,sal*12 annlsal from emp; SQL> --如果显示没有权限,则需要授权,见下图1-1

【Oracle】第三章索引视图序列

第三章索引视图序列 序列是用来生成唯一,连续的整数的数据库对象.序列是用来自动生成主键或唯一键的值. CREATE SEQUENCE  sequence_name START WITH  integer INCREMENT BY  integer MAXVALUE   integer|nomaxvalue MINVALUE    integer|nominvalue CYCLE|NOCYCLE CACHE  integer|nocache; START WITH     指要生成的第一个序列号,

oracle创建序列&索引&视图

---oracle学习 --oracle的管理系统学习 --oracle的数据管理学习 --oracle的用户管理 --oracle二维表管理 --oracle的其他知识 --oracle的序列,视图,索引 --oracle的分页查询 --oracle的数据库备份 --oracle的图形化界面操作 序列 1 --oracle的序列的学习 2 --创建序列 3 --使用 create sequence 序列名 4 --特点1:默认开始是没有值的,也就是指针指在了没有值的位置. 5 --特点2:序列

事务、视图和索引

今天我们学习了事务.视图和索引!!这是一个很神奇的东西!我们先来说说最神奇的事务吧,什么叫事务呢?事务是一个不可分割的整体,事务中的多个执行过程,同生共死.要么都执行成功,要么都执行失败.(一荣俱荣,一损俱损) 事务有4个神奇的特性: ACID原则 原子性(Atomicity ) 一致性( Consistency ) 隔离性( Isolation) :两个事务之间 永久性(Durabilily) 事务分类 显式事务;自己写的事务都是显式事务 隐式事务 自动提交事务 视图! 如何创建视图 Crea

Oracle实践--PL/SQL基础之视图和索引

PL/SQL基础入门之视图和索引         PL/SQL:过程语言(Procedure  Language)和结构化语言(Structured Query Language)结合而成的编程语言,是对SQL的扩展,支持多种数据类型,如大对象和集合类型,可使用条件和循环等控制语句,可创建存储过程,程序包和触发器等,给sql语句的执行添加程序逻辑,与Oracle服务器和Oracle工具紧密集成,具有可移植性,灵活性和安全性. -----------------------------------

T-SQL的事物、视图和索引

事物,视图和索引 技能掌握目标: 1.使用事物保证操作的完整性 2.掌握如何创建视图 3.掌握如何创建并使用索引 首先我们要讲的是事物,那么问题来了,请问大家什么事物,他有什么作用? 带来了哪几大好处?分别是什么. 答案:事物就是把多件事情当做一件事情来处理的过程.也就是大家同在一条船上,要活一起活,要over一起over !,这也就是保证了事物的一致性和完整性. 其作用是保证事物的一致性,持久性,原子性,和隔离性. 1.一致性:就是当我们需要更新多条数据的时候,保证他们一荣俱荣,一损俱损. 就

PL/SQL 编程(三 )程序包和包体,触发器,视图,索引

一.程序包和包体 程序包(package):存储在数据库中的一组子程序.变量定义.在包中的子程序可以被其它程序包或子程序调用.但如果声明的是局部子程序,则只能在定义该局部子程序的块中调用该局部子程序. 它具有面向对象程序设计语言的特点,是对这些PL/SQL 程序设计元素的封装.包类似于JAVA语言中的类,其中变量相当于类中的成员变量,过程和函数相当于类方法. create or replace package stuinfo as type stucur is ref cursor; proce