Oracle之SQL基础--创建数据库对象(序列 视图)及索引
2010-10-10 22:07
856 查看
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;
序列:在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;
相关文章推荐
- Greenplum中定义数据库对象之创建与管理序列、索引以及视图
- oracle导出创建用户下各个对象数据结构的sql语句的脚本,包括表、视图、索引、约束等等
- 【数据库】[oracle]表,视图,索引,序列,同义词等操作集合
- Oracle笔记 五、创建表、约束、视图、索引、序列、同义词、表空间
- Oracle sql 调优:使用虚拟索引在生产环境测试创建索引对数据库性能的影响
- Oracle笔记 五、创建表、约束、视图、索引、序列、同义词、表空间
- Oracle创建表、约束、视图、索引、序列、同义词、表空间
- oracle 数据库常用创建表、约束、视图、索引等
- 创建数据库、表、主外键、各种约束、存储过程、视图、索引、事务使用、触发器、创建登录账号、数据库用户 Sql语句示例
- Oracle笔记 五、创建表、约束、视图、索引、序列、同义词、表空间
- oracle 数据库模式对象,索引,序列,同义词,查看用户拥有的表,聚簇,数据库链接
- Oracle sql 调优:使用虚拟索引在生产环境测试创建索引对数据库性能的影响
- Oracle笔记 五、创建表、约束、视图、索引、序列、同义词、表空间
- Oracle Class4. 数据库对象(同义词,序列,视图,索引,簇)
- Oracle笔记 五、创建表、约束、视图、索引、序列、同义词、表空间(转)
- Oracle学习笔记之六(DDL:表、索引、视图、同义词、序列操作相关SQL)
- ORACLE SQL总结四:视图、序列、索引和同义词
- oracle sql 之视图,序列,索引,同义词
- Oracle笔记 五、创建表、约束、视图、索引、序列、同义词、表空间
- 数据库 day60,61 Oracle入门,单行函数,多表查询,子查询,事物处理,约束,rownum分页,视图,序列,索引