您的位置:首页 > 数据库 > Oracle

oracle常见基础知识

2016-04-04 23:02 295 查看
oracle使用的脚本语言称为什么?
PL-SQL

oracle中游标的分类?
oracle中游标分为两类:显示游标和隐式游标

oracle中function与procedure的区别?
(1) function一定要有返回值,但procedure不需要返回值
(2) procedure可以返回多个返回值
(3) 在SQL数据操纵语句(DML:select、update、delete、insert)中只能调用function而不能调用procedure

oracle导如\出数据有哪几种方式?
(1) 通过oracle工具 exp\imp:导入\出的数据是二进制数据
(2) 通过plsql相关工具:导入\出的数据是文本文件

oracle中存在哪几种格式的文件?
数据文件(.dbf、ora)、日志文件(.log)、控制文件(.ctl)

oracle中常见的优化的方法?
(1) 建合适的索引:减少IO次数
(2) 将索引数据和表数据分开在不同的表空间上:减低IO冲突
(3) 建立表分区,将数据分别存储在不同表分区上:空间换时间思想
(4) 将数据库表按一定的规则进行逻辑分割
(5) 按规则编写SQL语句
(5.1) SQL全部大写或小写
(5.2) 尽量使用占位符?而不直接使用字符
(5.3) 多表查询时,选择数据最少的表放在右边作为基础表,比如存在中间表时
(5.4) 将表之间的连接写在其他条件之前
(6) 尽量不要使用*号:解析时需要去查询数据字典
(7) 避免使用!=进行比较
(8) 用(NOT)EXITS代替(NOT)IN
(9) 合理的使用事务(如可以使用批处理降低事务的使用次数),合理的设置事务的隔离级

oracle中使用什么连接字符串?
使用操作符 || 连接字符串

oracle的分区策略从哪些方面优化数据库?
oracle存在四种分区:列表分区、范围分区、散列分区、复合分区
(1) 增加可用性:一个分区故障不会影响其他分区的使用
(2) 减少关闭时间:一个表的分区故障只需要修复此分区而不用全部修复
(3) 利于维护
(4) 均衡IO
(5) 改善性能

oracle中如何实现分页?
oracle中实现分页主要借助于ROWNUM,例如:
SELECT * FROM (SELECT A.*, ROWNUM num FROM tableName WHERE ROWNUM<=30) WHERE num >= 20;

oracle中ORDER BY使用索引的条件?
(1) ORDER BY中的列必须包含相同的索引并且索引顺序和排序顺序一样
(2) 不能有null值的列

解释data block、extend、segment、tablespace?
data block:oracle中最小的逻辑单元,从磁盘中读写的就是块
extend:若干相邻的data block组成的就是extend
segment:由一组区组成
tablespace:数据库中数据逻辑存储的地方,一个表空间中可以包含多个数据文件

truncate和delete的区别?
(1) truncate的操作并不记录的rollback中,所以进行的操作不可以进行回滚
(2) truncate是DDL语句,而delete是DML
(3) turncate不能对视图进行操作
(4) delete操作后并不释放占有的表空间

oracle中的DML、DDL、DCL?
DML:数据操纵语句,包括select、update、insert、delete
DDL:数据定义语句,create table、drop table
DCL:数据控制语句,commit、rollback、grand、invoke

oracle中的常用函数?
Length、upper、lower、to_date、to_char、Rtrim、Ltrim、substr、add_month、to_number等

oracle中怎样创建索引?
常用的有三种索引:
(1) 标准索引:CREATE INDEX 索引名称 ON 表名(列名) TABLESPACE 表空间名;
(2) 唯一索引:CREATE UNIQUE INDEX 索引名称 ON 表名(列名) TABLESPACE 表空间名;
(3) 组合索引:CREATE INDEX 索引名称 ON 表名(列名1,列名2) TABLESPACE 表空间名;

索引的使用应该遵循哪些原则?
(1) 建议对索引字段建立NOT NULL约束:索引其实是一种数据结构(通常采用B树数据结构),是有序的,当存在NULL时,就无法确定其在索引中的位置;另外,由于空值不等于空值,所以期望检索一个空值是无法达到预期的
(2) 在表的连接字段建立索引
(3) 对选择性较高的字段建立索引
(4) 尽量减少建立复合索引
(5) 不要对DML频繁的表建立太多的索引
(6) 不要选择频繁修改的列作为索引列

索引的优缺点?
优点:加快数据的检索效率
缺点:索引需要占用物理空间,创建和维护也比较耗时

oracle中怎样建立视图?
语法:CREATE VIEW 视图名称 AS SELECT 列名 别名 FROM 表名;
优点:视图不占用系统空间;使用视图可以隐藏表的结构;简化查询

oracle中如何定义一个触发器?
CREATE [OR REPLACE] TIGGER 触发器名称 触发时间 触发事件
ON 表名
BEGIN
PL/SQL
COURSE 游标名称 IS SELECT * FROM 表名 (定义游标)
END;

Java中如何调用oracle的存储过程?
在Java中,通过类CallableStatement调用存储过程;根据存储过程返回值个数的不同,可以分为三类:
(1) 没有返回值
conn.prepareCall("call proc{?,?}");
state.setString(1, "Marry");
state.setString(2, "China");
state.execute();
(2) 有多个但非列表
conn.prepareCall("call proc{?,?}");
state.setString(1, "Marry");
state.registerOutParameter(2, Types.VARCHAR);
state.execute();
取出返回值:state.getString(2);
(3) 列表
conn.prepareCall("{? = call tpackage.proc(?) }");
state.registerOutParameter(1, Types.CURSOR);
state.execute();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: