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

一、视图

1、视图的概念: 
 
   有的时候我们需要关联多张表获得一个查询结果集,
   有的时候我们需要写很复杂的条件得到一个想要的结果集,
   有的时候我们需要关联多张表获得一个查询结果集,有的时候我们需要写很复杂的条件得到一个想要的结果集, 
   我们不想每次要想这些数据的时候都重新去写很复杂的 我们不想每次要想这些数据的时候都重新去写很复杂的SQL语句,怎么办?  
 
我们可以把这些结果集创建为视图 我们可以把这些结果集创建为视图-View 
2、创建视图

   create view 视图名 as 一条查询语句;
   视图(View)创建使用,视图(View)实际上是一张或者多张表上的预定义查询,这些表称为基表。
   从视图中查询信息与从表中查询信息的方法完全相同。只需要简单的SELECT…FROM即可。
3、删除视图

   drop view 视图名;
   
4、视图的使用

   select * from 视图名;
5、使用视图的优点

   视图具有以下优点:

       (1)可以限制用户只能通过视图检索数据。这样就可以对最终用户屏蔽建表时底层的基表。

       (2)可以将复杂的查询保存为视图。可以对最终用户屏蔽一定的复杂性。

       (3)限制某个视图只能访问基表中的部分列或者部分行的特定数据。这样可以实现一定的安全性。

        (4)从多张基表中按一定的业务逻辑抽出用户关心的部分,形成一张虚拟表。
二、序列

1、 序列定义

序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字)。
不占用磁盘空间,占用内存。
其主要用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值。
2、序列的用法

语法:

CREATE SEQUENCE sequence                     --创建序列,名字为sequence
[INCREMENT BY 1]                             --步长为1
[START WITH 1000]                            --开始值为1000
[{MAXVALUE 9999999999999999 | NOMAXVALUE}]   --最大值
[{MINVALUE 1000 | NOMINVALUE}]               --最小值
[{CYCLE | NOCYCLE}]                          --是否循环
[{CACHE 20 | NOCACHE}];                      --缓冲,定义存放序列的内存块的大小,默认为20。

1000
1001
1002
;

举例:

create SEQUENCE dept_deptid_seq             --创建序列,名字为dept_deptid_seq
INCREMENT BY 50                             --步长为50
MAXVALUE 999999                             --最大值
NOCACHE NOCYCLE;                            --不循环,不缓冲,其他项默认

查询序列: 

SELECT dept_deptid_seq.nextval              --查询下一个序列
FROM dual;

SELECT dept_deptid_seq.currval              --查询当前序列
FROM dual;

序列使用: 

INSERT INTO departments                     --序列的使用
  (department_id
  ,department_name
  ,location_id)
VALUES
  (dept_deptid_seq.nextval                  --主键处使用序列,主键自增
  ,'Support'
  ,2500);


SELECT dept_deptid_seq.CURRVAL              查询当前序列
FROM dual;

修改和删除序列: 

ALTER SEQUENCE dept_deptid_seq              --修改序列
INCREMENT BY 20
MAXVALUE 999999
NOCACHE NOCYCLE;

DROP SEQUENCE dept_deptid_seq;              --删除序列

三、索引
1、索引的概念
   索引是关系数据库中用于存放每一条记录的一种对象,主要目的是加快数据的读取速度和完整性检查。
   建立索引是一项技术性要求高的工作。一般在数据库设计阶段的与数据库结构一道考虑。
   应用系统的性能直接与索引的合理直接有关。
2、创建索引的语法
   

CREATE INDEX
   CREATE [unique] INDEX [user.]index
   ON [user.]table (column [ASC | DESC] [,column
   [ASC | DESC] ] ... )
   [CLUSTER [scheam.]cluster]
   [INITRANS n]
   [MAXTRANS n]
   [PCTFREE n]
   [STORAGE storage]
   [TABLESPACE tablespace]


   [NO SORT]   其中:
   schema ORACLE模式,缺省即为当前帐户
   index 索引名
   table 创建索引的基表名
   column 基表中的列名,一个索引最多有16列,long列、long raw
              列不能建索引列
   DESC、ASC 缺省为ASC即升序排序
   CLUSTER 指定一个聚簇(Hash cluster不能建索引)
   INITRANS、MAXTRANS 指定初始和最大事务入口数
   Tablespace 表空间名
   STORAGE 存储参数,同create table 中的storage.
   PCTFREE 索引数据块空闲空间的百分比(不能指定pctused)
   NOSORT 不(能)排序(存储时就已按升序,所以指出不再排序)
3、索引举例
   CREATE INDEX  emp_last_name_idx ON employees(last_name);
   为employees表的last_name创建索引,名为emp_last_name
   例1:为EMP表的ename 列建立大写转换函数的索引idx :
   CREATE INDEX idx ON emp ( UPPER(ename));
   这样就可以在查询语句来使用:
   SELECT * FROM EMP WHERE UPPER(ename) LIKE ‘JOH%’;
4、删除索引
   drop index emp_last_name; 
   注:当表结构被删除时,有其相关的所有索引也随之被删除。
5、索引的使用   
   create index index_sno on student('name');
   select * from all_indexes where table_name='student';
四、同义词(没什么用处)
1、同义词使用举例
 

 create table cux.cux_order_headers_all(header_id number, order_number varchar2(50));   --在cux用户下新建了一张表cux_order_headers_all            

   select * from cux_order_headers_all;                                                   --在当前用户下访问是访问不到的 

   CREATE SYNONYM cux_order_headers_all for cux.cux_order_headers_all;                    --可以为cux.cux_order_headers_all新建一个同义词(我的理解就是别名)                                                                                                                                               

   select * from cux_order_headers_all;                                                   --然后就可以通过同义词进行查询


2、创建同义词
   create synonym 同义词名 for 需要建同义词的对象;

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值