oracle 伪列访问序列,Oracle数据库对象,同义词、序列、视图、索引

数据库对象简介

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

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

其他数据库对象包括:

42d470514e10e1f1ed690c023f2bc10d.png

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

简化SQL语句

隐藏对象的名称和所有者

提供对对象的公共访问

同义词共有两种类型:

5afee54b46895e342969880a8a1e4011.png

95b19530e3e342deb728cf0be5b780ce.png

c65372be87ae8c868eace716988f73d0.png

ece2b84f480725350ab9c39566c31db5.png

908629079d9a79f56a9838d07d856e4e.png

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

bee1964bc0798da470b93e830e146f8a.png

CREATE SYNONYM staff FOR SCOTT.emp;

e275abdd0afd4e4311394ae14b3900c7.png

12c02099b232e9ca33f732670fa1850e.png

a9ef8ccb297ba3a401babebdcf37c4a7.png

CREATE PUBLIC SYNONYM pub_emp FOR SCOTT.emp;

182eda42a8d106783386325b6d603ad5.png

762c64b87ac483f879f466e64535d7f8.png

2e23ee29846adc39047b0b1a394429e4.png

CREATE OR REPLACE PUBLIC SYNONYM pub_emp FOR SCOTT.emp;

e4379d790cbe8fa8ff3b3bf9d56ea1b0.png

DROPSYNONYM staff;DROP PUBLIC SYNONYM pub_emp;

70a2c9f23dcbaf24c27de4ae52137255.png

序列

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

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

使用CREATE SEQUENCE语句创建序列

c80e166a3491d036251d1d264766001f.png

依次为:

e7f5ef86aaf651a4756eefe6bd9ae22d.png

0965b02a8071316069f1a6d6d2577c4a.png

9b8461b2feca2896c1a467f69ef67333.png

e608761432a3e56ddbf838d386fd4e10.png

8576054a116211cd852e5a5ff4fe5890.png

476b7ffafbd59e1b3825ebc52061b471.png

16ae62aa1a6a71396dca9105789c4fb0.png

序列案例

0b16ddf5ef5e0bb4dc962702196d9c9a.png

create tablet_testseq

(

idnumber primary key,

namevarchar2(10) NOT NULL);

bea2a05c582598b559c063f2986c766b.png

createsequence seq_value

Startwith 1Incrementby 1;

访问序列

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

NEXTVAL 返回序列的下一个值

CURRVAL 返回序列的当前值

INSERT INTOt_testseqVALUES (seq_value.NEXTVAL, 'tom')INSERT INTOt_testseqVALUES (seq_value.NEXTVAL, 'jime');

ef6ce4e2d6d7eadf3c32f32d4726a89b.png

SELECT seq_value.CURRVAL FROM dual;

e4d18c25baccaa8efd4026939d61f188.png

1cfd06e54a380441e4ce98bc8bb56d18.png

更改和删除序列

677ba33c954a6dae7f9edd0540a8e2c8.png

ALTER SEQUENCE SEQ_VALUE MAXVALUE 5000 CYCLE;

8f789c72cfeab751bae81f94c3ecdde8.png

DROP SEQUENCE SEQ_VALUE;

视图

380a61b39871dae9b44818c865771557.png

selectdept.deptno,dname,loc,empno,ename,job,mgr,hiredatefromemp,deptwhere emp.deptno = dept.deptno and dname= ‘ SALES ‘;

3e302d89e740b842778b1512e6a61fe1.png

--查看当前用户的系统权限

select * fromuser_sys_privs;--查看当前用户角色权限

select * fromuser_role_privs;--查看某个角色权限

select * from role_sys_privs where role =‘RESOURCE’;--创建视图

create viewdept_empas

selectdept.deptno,dname,loc,empno,ename,job,mgr,hiredatefromemp,deptwhere emp.deptno = dept.deptno;

3c6dfea77cfb2b43017fd796e0222681.png

199305e9cb2a5cc896b1454088d1314e.png

8b9cf38922ba8d0f11d84e177a239bec.png

select * from dept_emp where dname= ‘ SALES ‘;

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

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

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

视图的优点有:

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

隐藏的数据的复杂性

简化的用户的SQL命令

隔离基表结构的改变

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

f88f8a3e34b58c476a603f3454541226.png

create viewdept_emp_orderas

selectdept.deptno,dname,loc,empno,ename,job,mgr,hiredatefromemp,deptwhere emp.deptno = dept.deptno order by dept.deptno;

0a2c1552e154a2d3a7f039439dd86fcc.png

create viewdept_sal_avgas

select dname,avg(sal) avg_salfromdept,empwhere dept.deptno = emp.deptno group by dname;

视图上的DML语句

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

INSERT、UPDATE和DELETE

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

只能修改一个底层的基表

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

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

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

2d212a4cc4e239b3ce54ce8928788746.png

updatedept_empset ename = 'TOM'

WHERE empno = 7521;

159e99ed8d94b8c816ef0d092fdf66d0.png

Select ename from dept_emp where empno = 7521

3ce3e37466d6a50c7e1061f38c250dfa.png

Select ename from emp where empno = 7521

b4fad46d5bb19d40b981feda11f6be80.png

CREATE OR REPLACE [FORCE] VIEWview_name[(alias[, alias]...)]ASselect_statement[WITH CHECK OPTION]

[WITH READ ONLY];

08d2ad1f1036691b32f01c4fb24bc44a.png

DROP VIEW view_name;

索引概念

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

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

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

Oracle 自动维护索引

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

唯一索引

组合索引

反向键索引

位图索引

管理索引

a83ea579461958fafbe82dcf6274959e.png

CREATE INDEX 索引名 ON 表名 (索引字段)

CREATE INDEX idx_ename ON emp (ename)

390e349fdb39d2de08b87752b1c8050e.png

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

ALTER INDEX idx_ename REBUILD;

06fe3fb484bf102b9b94d64871760ae3.png

DROP INDEX 索引名;

DROP INDEX idx_ename;

ed167e54f83efdbdb054019a7d538869.png

测试索引

b88c556d232f2a6fc5e1feaffc3b5e8a.png

create tablet_testseq

(

idnumber,

namevarchar2(10)

);

a2d8a0b9103f069404ea22f35f7e487e.png

createsequence seq_value

startwith 1incrementby 1;

7ac31889468551a7a388ceba7782f3ac.png

BEGIN

FOR v_temp in 1..1000000LOOPINSERT INTOt_testseqvalues(seq_value.nextval,’abcde’);ENDLOOP;END;

41f8c7cb9a22feaec7f7a3cac260bf73.png

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 语句执行的性能

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值