Oracle之SQL基础--创建数据库对象(序列 视图)及索引

oracle数据库对象:序列,,视图,

序列:在oracle当中是对象的一种。

序列:
序列用于产生唯一序号的数据库对象,可以同时为多个数据库用户依次生成不重复的连续整数,通常使用序列自动生成表中的主键值.
查询数据字典中序列的信息

user_sequences

select sequence_name,increment_by,last_number from user_sequences;
创建默认的序列
create sequence seq_fangfan;
修改序列步长
alter sequence seq_fangfan increment by 5;
删除序列
drop sequence seq_fangfan;

create table fangfan_test (id number(4) primary key,name varchar2(20));
insert into fangfan_test values(seq_fangfan.nextval,'fangfan');
select * from fangfan_test;
select seq_fangfan.currval from dual;
select seq_fangfan.nextval from dual;
从序列数据字典当中查看序列信息

这里呢,值得说明的是要查询数据字典的信息都应该采用大写,否则不能得到结果
select * from user_sequences where sequence_name='SEQ_FANGFAN';


视图:

[]
表示可选
create [or replace] view emp_view as select empno,ename,sal from emp;

create view emp_info_view1(deptno,avgsal,empcount) AS select deptno,avg(sal),count(*) From emp Group by deptno;

在创建视图的时候可以加上with read only 后对视图的操作将不能改变原来表中的数据屏蔽对视图的dml操作

create or replace emp_info_view2 as select empno,ename from emp with read only;

 

对视图的数据操作和表基本一致

 

索引
索引是一种数据库优化的技术和支持,只是为了提高查询的效率.快速定位数据,减少io操作读写硬盘的次数.
索引适合大量读少量修改数据量很大并且每次只需要查询少量数据的表


create table fangfan_test1 (id number(4),name varchar2(20));
create index fangfan_index on fangfan_test1(id);

select i.index_name,c.column_name from user_indexes i,user_ind_columns c where i.index_name=c.index_name and i.table_name='FANGFAN_STUDENT';

创建基于函数的索引(只有使用该函数才可以发挥作用)
create index fangfan_index1 on fangfan_test1(UPPER(name));
select UPPER(name) from fangfan_test1;

 



Top-N

 

这里是mysql当中的查询语句,这句表示查询工资大于2000的员工的前三名
select rownum,empno,ename,sal from emp where sal>2000 and rownum<4;

Top N 查询(在不同的数据库之间并不通用)

select empno,ename,sal from emp;
select rowid,empno,ename,sal from emp;
select rownum,empno,ename,sal from emp;
select rownum,empno,ename,sal from emp where sal>2000;

在Oracle这种方式不可以,可以采用下面的语句:

select rownum,info.empno,info.ename,info.sal from (select empno,ename,sal from emp where sal>2000 order by sal desc) info where rownum<4;

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值