Oracle数据库入门之DDL与数据库对象
2012-11-28 15:27:55 来源:WEB开发网核心提示:临时:嵌入到SQL语句中的子查询都是临时视图,比如说用子查询建表或TopN分析等等所涉及到的子查询都属于临时视图临时视图不是数据库对象,Oracle数据库入门之DDL与数据库对象(6),其定义不会长久保存在数据库中,本次运行后即被清除,同理minvalue就是设定序列号的最小值cycle设置在序列达到最大值之后,是否重
临时:嵌入到SQL语句中的子查询都是临时视图。比如说用子查询建表或TopN分析等等所涉及到的子查询都属于临时视图
临时视图不是数据库对象,其定义不会长久保存在数据库中,本次运行后即被清除。它类似于Java语言中创建的匿名类
索引(Index)
概述:是一种用于提升查询效率的数据库对象。索引信息与表独立存放。它可以通过快速定位数据的方法,减少磁盘I/O操作
索引分为两类,即唯一性索引和非唯一索引。Oracle数据库自动使用和维护索引
创建:自动创建:在定义主键或唯一键约束时,系统会自动在相应的字段上创建唯一性索引
手动创建:用户可以在其它列上创建非唯一的索引,以加速查询
语法为create index [schema.]index on table(column[,column]...);
比如说create index myindex on emp(ename);--查询表时,若以ename作为查询条件的话,就很容易定位到某行记录了
删除:使用drop index语句删除索引,如drop index myindex;操作者必须是索引的所有者,或拥有drop该index的权限
删除表时,相关的索引(和约束)将被自动删除,但视图和序列将保留
原则:适合于创建索引:字段取值的分布范围很广。字段中包含大量空值。字段经常出现在where子句或连接条件中
表经常被访问,或表数据量很大时,且通常每次访问的数据量小于记录总量的2%~4%
不适合创建索引:表很小。字段不经常出现在where子句中。每次访问的数据量大于记录总数的2%~4%
表经常更新。被索引的字段作为表达式的一部分被引用
查看:查询用户字典视图user_indexes可得到用户的所有索引。如select * from user_indexes;
查询用户字典视图user_ind_columns可获知索引建立在哪些字段上。如select * from user_ind_columns;
函数:基于表达式的索引被统称为基于函数的索引。索引表达式由表中的字段、常量、SQL函数和自定义函数构建而成
创建函数索引语法为create index [schema.]index on table(function(column));
创建函数索引create index myindex on emp(lower(ename));
使用函数索引select * from emp where lower(ename)='king';
在使用时,条件中的字段需要与创建索引时指定的相同,索引才会起作用。即lower(ename)需要前后一致
序列(Sequence)
概述:是由系统自动生成的,不重复的整数值。序列是一种数据库对象,可以被多个用户共享。序列可以代替应用程序编号
序列的最典型的用途是作为主键值,它对于每一行必须是唯一的。可以对序列值进行缓冲存储,以提高访问效率
但在应用程序中生成编号的话,会产生性能瓶颈的。也就是说比较麻烦,要确保它的唯一性,还要它的保证效率
所谓的缓冲存储是指,在使用序列之前,先生成指定的多个序列的取值作为备用,这样能提高访问效率
从实际应用的角度来讲,序列的重要性远远超过视图和索引,跟约束条件以及表的重要性相当
查看:查询数据字典视图user_sequences可获得用户序列信息
创建:create sequence [schema.]sequence [increment by n][start with n]
[{maxvalue n|nomaxvalue}][{minvalue n}|nominvalue][{cycle|nocycle}][{cache n|nocache}][{order|noorder}];
举例:create sequence mysequence2;
create sequence mysequence1 increment by 1 start with 1 nomaxvalue nocycle;
释一:increment指明当前序列号递增的值,缺省为1。start with指定当前序列号的起始值,缺省为1
maxvlaue设定序列号的最大值。缺省为nomaxvalue,即没有最大值。同理minvalue就是设定序列号的最小值
cycle设置在序列达到最大值之后,是否重新从1开始循环,缺省为nocycle,即不循环
临时视图不是数据库对象,其定义不会长久保存在数据库中,本次运行后即被清除。它类似于Java语言中创建的匿名类
索引(Index)
概述:是一种用于提升查询效率的数据库对象。索引信息与表独立存放。它可以通过快速定位数据的方法,减少磁盘I/O操作
索引分为两类,即唯一性索引和非唯一索引。Oracle数据库自动使用和维护索引
创建:自动创建:在定义主键或唯一键约束时,系统会自动在相应的字段上创建唯一性索引
手动创建:用户可以在其它列上创建非唯一的索引,以加速查询
语法为create index [schema.]index on table(column[,column]...);
比如说create index myindex on emp(ename);--查询表时,若以ename作为查询条件的话,就很容易定位到某行记录了
删除:使用drop index语句删除索引,如drop index myindex;操作者必须是索引的所有者,或拥有drop该index的权限
删除表时,相关的索引(和约束)将被自动删除,但视图和序列将保留
原则:适合于创建索引:字段取值的分布范围很广。字段中包含大量空值。字段经常出现在where子句或连接条件中
表经常被访问,或表数据量很大时,且通常每次访问的数据量小于记录总量的2%~4%
不适合创建索引:表很小。字段不经常出现在where子句中。每次访问的数据量大于记录总数的2%~4%
表经常更新。被索引的字段作为表达式的一部分被引用
查看:查询用户字典视图user_indexes可得到用户的所有索引。如select * from user_indexes;
查询用户字典视图user_ind_columns可获知索引建立在哪些字段上。如select * from user_ind_columns;
函数:基于表达式的索引被统称为基于函数的索引。索引表达式由表中的字段、常量、SQL函数和自定义函数构建而成
创建函数索引语法为create index [schema.]index on table(function(column));
创建函数索引create index myindex on emp(lower(ename));
使用函数索引select * from emp where lower(ename)='king';
在使用时,条件中的字段需要与创建索引时指定的相同,索引才会起作用。即lower(ename)需要前后一致
序列(Sequence)
概述:是由系统自动生成的,不重复的整数值。序列是一种数据库对象,可以被多个用户共享。序列可以代替应用程序编号
序列的最典型的用途是作为主键值,它对于每一行必须是唯一的。可以对序列值进行缓冲存储,以提高访问效率
但在应用程序中生成编号的话,会产生性能瓶颈的。也就是说比较麻烦,要确保它的唯一性,还要它的保证效率
所谓的缓冲存储是指,在使用序列之前,先生成指定的多个序列的取值作为备用,这样能提高访问效率
从实际应用的角度来讲,序列的重要性远远超过视图和索引,跟约束条件以及表的重要性相当
查看:查询数据字典视图user_sequences可获得用户序列信息
创建:create sequence [schema.]sequence [increment by n][start with n]
[{maxvalue n|nomaxvalue}][{minvalue n}|nominvalue][{cycle|nocycle}][{cache n|nocache}][{order|noorder}];
举例:create sequence mysequence2;
create sequence mysequence1 increment by 1 start with 1 nomaxvalue nocycle;
释一:increment指明当前序列号递增的值,缺省为1。start with指定当前序列号的起始值,缺省为1
maxvlaue设定序列号的最大值。缺省为nomaxvalue,即没有最大值。同理minvalue就是设定序列号的最小值
cycle设置在序列达到最大值之后,是否重新从1开始循环,缺省为nocycle,即不循环
- ››oracle 中 UPDATE nowait 的使用方法
- ››Oracle ORA-12560解决方法
- ››Oracle 10g RAC 常用维护命令
- ››Oracle如何在ASM中定位文件的分布
- ››Oracle的DBMS_RANDOM.STRING 的用法
- ››oracle 外部表导入时间日期类型数据,多字段导入
- ››Oracle中查找重复记录
- ››oracle修改用户登录密码
- ››Oracle创建删除用户、角色、表空间、导入导出等命...
- ››Oracle中登陆时报ORA-28000: the account is lock...
- ››Oracle数据库在配置文件中更改最大连接数
- ››Oracle中在pl/sql developer修改表的两种方式
更多精彩
赞助商链接