oracle数据库面试题目集锦.pdf_第1页
oracle数据库面试题目集锦.pdf_第2页
oracle数据库面试题目集锦.pdf_第3页
oracle数据库面试题目集锦.pdf_第4页
oracle数据库面试题目集锦.pdf_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1. 对字符串操作的函数? 答:ASCII() -函数返回字符表达式最左端字符的ASCII 码值 CHR() -函数用于将ASCII 码转换为字符 -如果没有输入0 255 之间的ASCII 码值CHR 函数会返回一个NULL 值 -应该是必须给chr()赋数字值 concat(str,str)连接两个字符串 LOWER() -函数把字符串全部转换为小写 UPPER() -函数把字符串全部转换为大写 LTRIM() -函数把字符串头部的空格去掉 RTRIM() -函数把字符串尾部的空格去掉 TRIM() -同时去掉所有两端的空格 实际上LTRIM(),RTRIM(),TRIM()是将指定的字符从字符串中裁减掉 其中LTRIM(),RTRIM()的格式为xxxx(被截字符串,要截掉的字符串),但是TRIM() 的格式为TRIM(要截掉的一个字符 from 被截的字符串) SUBSTR() -函数返回部分字符串 INSTR(String,substring) -函数返回字符串中某个指定的子串出现的开始位置,如 果不存在则返回0 REPLACE(原来的字符串,要被替换掉的字符串,要替换成的字符串) SOUNDEX() -函数返回一个四位字符码 -SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函数对数字和汉字均 只返回NULL 值 2、 事务概念 答案:事务是这样一种机制,它确保多个SQL语句被当作单个工 作单元来处理。事务具有以下的作用: * 一致性:同时进行的查询和更新彼此不会发生冲突,其他 用户不会看到发生了变化但尚未提交的数据。 * 可恢复性:一旦系统故障,数据库会自动地完全恢复未完成 的事务。 3、oracle中查询系统时间 答:select sysdate from dual 4、 触发器的作用,什么时候用触发器,创建触发器的步骤,触发器 里是否可以有commit, 为什么? 答案:触发器是可以由事件来启动运行的,存在于数据库服务器 中的一个过程。 他的作用:可以实现一般的约束无法完成的复杂约束,从而实现 更为复杂的完整性要求。 使用触发器并不存在严格的限定,只要用户想在无人工参与的情 况下完成一般的定义约束不可以完成的约束,来保证数据库完整 性,那么就可以使用触发器。 由于触发器主要是用来保证数据库的完整性的,所以要创建一个 触发器,首先要明确该触发器应该属于那一种(DML, INSTEAD OF,SYSTEM)因为他们各有个的用途;其次就是要 确定触发器被触发以后所设计到的数据。 出发器中不可以使用COMMIT。 5数字函数 abs()绝对值 exp(value)e的value次幂 ceil()大于等于该值的最小整 数 floor()小于等于该值的最大整数 trunc(value,precision)保留precision 个小数截取value round(value,precision)保留precision个小数对value进行 四舍五入 sign()根据值为正负零返回1,-1,0 mod()取模操 作 power(value,exponent)value的exponent次幂 sqrt()求平方根 1. 初级 4、 关系数据库系统与文件数据库系统的区别在那里?关系数据库系 统一般适用那些方面? 答案: 关系数据库系统文件系统的区别在于: 首先,关系性数据库的整体数据是结构化的,采用关系数据模型 来描述,这是它与文件系统的根本区别。(数据模型包括:数据 结构,数据操作以及完整性约束条件) 其次,关系数据库系统的共享性高,冗余低可以面向整个系统, 而文件系统则具有应用范围的局限性,不易扩展。 第三,关系数据库系统采用两级映射机制保证了数据的高独立 性,从而使得程序的编写和数据都存在很高的独立性。这方面是 文件系统无法达到的,它只能针对于某一个具体的应用。(两级 映射:保证逻辑独立性的外模式/模式映射和保证物理独立性的内 模式/模式映射。外模式:用户模式,是数据库用户的局部数据的 逻辑结构特征的描述。模式:数据库全体数据的逻辑结构特征的 描述。内模式:也就是数据最终的物理存储结构的描述。) 第四,就是关系性数据库系统由统一的DBMS进行管理,从而为 数据提供了如安全性保护,并发控制,完整性检查和数据库恢复 服务。 5、 触发器的概念,存储过程的概念. 答案: 触发器: 是存储在数据库中的过程,当表被修改(增、删、改) 时它隐式地被激发。 存储过程:是数据库语言SQL的集合,同样也存储在数据库中, 但是他是由其他应用程序来启动运行或者也可以直接运行。 6、 基本SQL语句有哪些. 答案: select、insert、update、delete、create、drop、truncate 1. 中级 8、什么是事务一致性 ? 选择熟悉的数据库实现一个事务处理,如信用卡 提款. 答案: 事务的一致性:是事务原子性的体现,事务所对应的数据库操作要 么成功要么失败没有第三种情况。事务不管是提交成功与否都不能影响 数据库数据的一致性状态。 事务:用户定义的一个数据库操作序列,这些操作要么全部成功完 成要么全部不做,是一个不可分割的整体。定义事务的SQL语句有: BEGIN TRANSACTION,COMMIT,ROLLBACK。 事务的原子性:就是事务所包含的数据库操作要么都做,要么都不做. 事务的隔离性:事务对数据的操作不能够受到其他事务的影响。 事务的持续性:也就是说事务对数据的影响是永久的。 对信用卡提款这一事务而言就是要保证提取到现金和卡帐号余 额的修改要同时成功或失败. BEGIN TRANSACTION 读取A的帐户余额BALANCE; BALANCE=BALANCE-AMOUNT转帐金额; IF(BALANCE0) THEN ROLLBACK; ELSE BEGIN 将A的新余额写回; 读取B的帐户余额BALANCEB; BALANCEB=BALANCEB+AMOUNT转帐金额; 将B的新余额写回; COMMIT; END IF; END; 9、 实际编写和调试存储过程或触发器. 答案: 10、 实现索引的方式? 索引的原理? 索引的代价? 索引的类型? 答案: 实现索引的方式有两种:针对一张表的某些字段创建具体的索 引,如对oracle: create index 索引名称 on 表名(字段名);在创建表时为字 段建立主键约束或者唯一约束,系统将自动为其建立索引。 索引的原理:根据建立索引的字段建立索引表,存放字段值以及对 应记录的物理地址,从而在搜索的时候根据字段值搜索索引表的到物理 地址直接访问记录。 引入索引虽然提高了查询速度,但本身占用一定的系统存储容量和 系统处理时间,需要根据实际情况进行具体的分析. 索引的类型有:B树索引,位图索引,函数索引等。 11、 view 的概念 ? 何时应用? 答案: view 是对表级数据的多角度的透视,适用于对查询安全性、灵活 性有一定要求的环境 12、 sql语句例外处理?举例说明? 答案: 当sql 语句在执行过程中出现意外时,如查询时,未查询到结果;更 改时无记录等情况的应采取的措施. 以oracle为例:测试其对exception的理解.如 select 字段 into 变量 from table ; 若查询出多条记录,应增加exception 例外处理. Oracle处理异常有三种: 1 预定义的例外处理,EXCEPTION WHEN exception_name THEN 2 EXCEPTION_INIT产生例外 首先要declare 声明一个例外名;然后将例外名和错误代码绑定 pragma exception_init(错误名,错误代码);最后在EXCEPTION 处when 错误名then 3用户自定义例外,不用EXCEPTION,当判断条件成熟时用 raise_application_error(-20000-20999,提示信息)。 13、 判断下列论述是否正确。 (1) 一个事务中的某条SQL命令提交 时,其它SQL命令可以不提交。 (2) 在一个关系表中,主键可 唯一标识一行记录。 (3) 一个关系表中的外键必定是另一表中 的主键。 (4) 回滚可以在事务失败时,回到操作事务前的数据 状态。 答案: (1)错误 (2)正确 (3)正确 (4)正确 14、 以下哪些手段可保证数据库中数据的完整性和一致性: (1)自定义 数据类型 (2)触发器 (3)主键和外键 (4)事务 答案: (1)(2)(3)(4) (为什么有1) 15、 使用存储过程访问数据库比直接用SQL语句访问有哪些优点? 答案:存储过程是预编译过的,执行时勿须编译,执行速度更快;存储 过程封装了一批SQL语句,便于维护数据的完整性与一致性;可以实现 代码的复用。 1. 高级 16、 对于精通的数据库系统描述其体系结构,主要包括存储机制、 回滚机制、运行机制等. 答案:对oracle 系统而言,描述sga的结构; 后台pmon,ckpt、lgwr,smon等 进程的功能;表空间的分配策略; 回滚段的结构 oracle的sga(系统全局区)包括的主要区有:数据库缓存区,重做日志 缓存区,共享池(数据字典缓存和库缓存),大池等。数据库缓存区用 来存放最近使用过的数据块主要和后台进程中的数据库写进程(DBWR) 以及数据文件发生关系;重做日志缓存区用于存放操作数据库数据所产 生的重做日志信息,与之合作的有重做日志写进程(LGWR)和重做日志 文件;共享池主要缓存SQL/PLSQL,资源锁,控制信息等,其中的库 缓存主要缓存被解析执行过的SQL/PLSQL库缓存可分为共享SQL和私有 SQL两个区,共享SQL用于存放SQL语句的语法分析结果和执行计划, 私有SQL则用来存放与具体SQL语句执行有关的绑定变量,会话参数 等。 ORACLE实例的另外一个重要部分就是其后台进程,主要的后台进程 有:数据库写进程(DBWR),重做日志写进程(LGWR),系统监视 器(SMON),进程监视器(PMON),检查点进程(CKPT)。 DBWR主要是对数据库缓存区中的脏冷数据进行写入数据文件操作; LGWR主要是将对数据库数据操作所产生的重做日志信息写入到重做日 志文件中;SMON完成由于非正常关闭数据库的情况下重起数据库时对 数据库的恢复;PMON用来恢复失败的用户进程和服务进程,并释放其 所占的系统资源;CKPT可以表示数据库在此出处于完整状态。 逻辑存储结构:数据块BLOCK,区EXTENT,段SEGMENT,表空间 TABLESPACE 物理存储空间:表空间,数据文件,控制文件,日志文件,数据字典 软件体系结构就是上边对SGA和后台进程的描述。 17 、对于精通的数据库系统描述其数据一致性的保证机制,包括lock, 事务一致性等. 答案: 在并发环境下,采用多种机制保持其数据的一致性,如oracle系统 提供的事务级的一致性、行级锁、表级锁等等. 18、对精通的数据库系统描述其联机备份机制、恢复机制,考核其对日 志的理解. 答案: 描述相关数据库的实时联机备份策略,如数据库系统在运行中通 过何种方式保证其数据的实时备份, 出现问题时,应采取何种办法从联机 备份进行恢复. 对对oracle而言,其archive online 备份方式应如何设置、修改什么参 数、如何安排备份空间等等. 19、 精通的数据库系统描述性能优化方法,包括优化的策略、参 数、验证方法等. 答案: 20、Truncate; 与 delete;的区别?(这道题可以衍生出很多的问题比如: 想快速的清除一个很大的表中的数据应该用设么操作?答案是:应该用 truncate。还有,在对两个相同纪录数的分别表使用了truncate,和delete commit;后对这两个表进行count(*)统计记录数操作,那个表速度会快 些?答案是:使用了truncate的会快些。) 21、写一个游标并使用它。(这道题应该注意的是:在使用游标后一 定要记得关闭游标)。 Declare Cursor cursor_name is Select * from tablename; Begin Open cursor_name; Loop Fetch cursor_name into bianliang; Exit when cursor_name%notfound; Sql End loop; Close cursor_name; End; 22、在创建表的时候会设置 pctfree 10 pctused 40 而创建表的索引的时候却没有 pctused 40 这是为什么? (这道题的主要思想是索引不能在pctused 40上得到什么好处) 23、使用过的最大的表有多少行纪录?(这道题不是看应试者的技术过 不过关,而是考察应试者是否有大型数据库的管理操作经验) 不要对表的索引列进行函数操作,因为这样系统就不能使用索引,使查 询变得很慢,但是在ora8i以后就已经开始支持函数的索引,弥补了这个 不足。 24、ORACLE数据库启动与关闭的步骤 启动:启动实例-加载数据库数据-打开数据库 关闭:关闭数据库-卸载数据库数据-关闭实例 25、Delete与truncate的区别 delete一般用于删除少量记录的操作,而且它是要使用回滚段并且要进 行显示的提交事务。而truncate则使用于大量删除数据,而且隐式提交 事务,其速度要比使用delete快的多。 26、DDL和DML分别代表什么? DDL表示数据定义语言,在ORACLE中主要包括CREATE,ALTER, DROP DML表示数据操作语言,主要的DML有SELECT,INSERT, UPDATE,DELETE 28、Javascript中动态效果时调用的函数。 29、数据库中有若干条相同的记录,删除到只剩下一条记录。如何 做,请用SQL语句通过ROW_ID来写出执行过程。 Delete table_name where ziduan= and rowed(select max(rowed) from table_name where ziduan=); 30、oracle数据库表存放到磁盘什么地方(什么物理空间上大概意 思)? Oracle数据库表存放在数据文件上。 31、Oracle使用什么语句给用户分配权限? GRANT TO 语句 32、你在项目现场,用户要求你向正在运行的表中添加一个字段,你 该怎么做? 第一种方法:关闭数据库,然后使用受限模式打开,由sys/sysdba来进 行 第二种方法:不关闭数据库,将数据库置于静默状态在SYS/SYSDBA 模式下用ALTER SYSTEM QUISCE RESTRICTED,这种状态下只有 SYS/SYSDBA才可以对数据库进行操作,修改完毕之后再退出静默状 态ALTER SYSTEM UNQUISCE 在这里复习到了数据库的两种特殊状态:静默状态(QUISCE)和挂起状 态 静默状态就是只有特殊权限的SYS/SYSDBA才可以对数据库进行操 作,使用ALTER SYSTEM QUISCE RESTRICTED以后系统将等候活动 着的会话主动结束,同时阻止建立新的会话,系统挂起所有的SQL语 句,等恢复以后再重新激活会话执行挂起的SQL。 挂起状态就是系统将数据库所有对物理文件(数据文件,控制文件, 日志文件)的I/O操作都暂停,但是并不禁止非DBA用户对数据库进行 操作。这种状态主要用于进行数据库备份。 33、Oracle中回滚的概念?回滚段有什么作用。 回滚就是在事务提交之前将数据库数据恢复到事务修改之前数据库数 据状态。 回滚段就是为回滚提供依据,记录的是事务操作数据库之前的数据或 者对应于以前操作的操作,这个内容要根据以前的操作而定。比如说 以前事务操作如果是UPDATE那么回滚段则存储UPDATE以前的数 据,如果事务是DELETE操作那么存储的则是与之相对应的INSERT操 作语句,相反如果事务操作是INSERT那么记录相应的则是DELETE操 作了。 34、Oracle的8I和9I有什么区别 35、一张表有10万条记录,如何删除其中的任意20条记录?请用SQL 语句进行操作 36、客户端如何访问服务器端的oracle?如果客户端无法访问服务器端 的oralce,可能会是什么原因? 客户端通过网络或者进程方式以合法的用户身份来取得和服务器端 ORACLE的连接。如果客户端无法访问服务器端ORACLE可能出现的 原因是:用户无权访问;服务器端数据库并没有打开(启动数据库的 第三步没有完成);如果服务器是在共享模式下的则有可能没有对应 于该客户所使用的通信协议的调度进程Dnnn。 37、 oracle中执行语句错误时去哪里查找错误信息? Select * from USER_ERRORS 38、 select语句需要提交吗?insert和update语句呢? 39、 在执行insert语句并提交后,这些提交的数据存储到什么地 方? 被存储到数据文件中 40、 oracle中有哪些类型的文件? 数据文件,控制文件,日志文件和数据字典 41、 介绍一下oracle的体系结构? 逻辑体系结构:块,区,段,表空间 物理体系结构:表空间,三大文件 软件体系结构:SGA,后台进程 42、 谈谈对oracle的row_ id是否理解?请简述? ORACLE的row_id是一个伪列,其个是为18个字节可将这18个字节用 6363来划分,分别表示段编号,数据文件编号,数据块编号和记录编 号。 Row_id表示的是一个记录的物理存储地址。 43、 oracle中如何删除用户? Oracle中使用DROP USER来删除用户,如果使用DROP USER CASCADE那么用户的对象也同时被删除掉。为了达到删除用户的效 果而又不影响对用户下的对象的使用可以使用alter user username account lock将用户锁定。 44、 客户端对服务器端的oralce操作的流程是什么? 专用模式下:用户通过应用程序进程试图去得到一个与ORACLE数据 库服务器的连接客户端通过网络传递连接请求,ORACLE服务器则使 用监听进程监听用户请求,并且来验证用户身份,通过验证则为用户 分配一专用服务进程用户提交SQL语句专用服务进程则首先在SGA区 的共享池中检查是否有与该SQL语句相似的已经被解析执行并且缓存 的SQL语句,如果有则采用它的解析结果和执行计划执行SQL语句, 如果没有则对SQL语句进行语法解析生成执行计划通过解析则执行操 作获取数据将执行结果返回给客户。 共享模式下:与专用模式不同在于当监听程序验证用户的合法性以后 并不为它分配一个专用的服务进程,而是将该请求与响应的调度进程 相联系起来,并将起放入到一个请求队列中,最终由响应的Dnnn来从 调度队列中获取一个请求并为之分配一个空闲的服务进程,接下来有 服务进程对该请求进行服务操作和专用方式下相同,处理完成之后由 服务进程先将结果放入一个返回队列最后再由调度进程(Dnnn)将返 回队列中的结果返回给对应的用户。 45、 exits和in在ORALCE数据库中那个执行效率更高? Exits执行效率比in高。因为: 46、 如何判断游标已经到最后一行? Cursor_name%notfound 47、 聚簇索引和普通索引在不同的SQL语句中哪个效率更高? (笔试题,原题回忆不起来,主题就是聚簇索引和普通索引 的区别) 概念类: 聚合函数? Session的定义和用法? Oracle的存储过程 ? 什么是 构造函数? 48、简述ORACLE中SGA的组成部分。 答:系统全局区包括:共享池、重做日志缓存区、数据高速缓存区,大 池,JAVA池。 49、简述ORACLE的启动和关闭各有多少步骤? 启动:启动实例、装载数据库数据、打开数据库。 关闭:关闭数据库、卸载数据库数据、关闭实例。 50、在Oracle表空间的分类和作用,如排序时数据将放在什么表空间? 作用是为了突破存储容量的限制,是一个逻辑概念。排序数据放在临时 表空间。 51、执行COMMIT命令时,数据库将会发生什么改变,ROLLBACK 呢? 答:commit 提交时首先是与事务对应的重做日志信息将被写入到数据 库物理文件中的重做日志文件中,至于是否会真正将事务操作的内容反 映到数据文件还好看DBWR是否启动了。在完成数据库的插入,删除和 修改操作时,只有当事务提交到数据库才算完成,有提交前只有操作数 据库的本人才能看到,别人只有在最后提交完成才可以看到。 ROLLBACK回滚当前尚未提交的事务,使数据库恢复到事务操作前的 状态。 52、用命令创建用户,并为用户授权。 Create user user_name identified by password / identified externally/ identified blobally as CN=user default tablespace tablespace_name temporary tablespace tablespace_name; grant role/privilege to user_name; 53、 写一个存储过程,使employee(name,age,emp_no,salary)表中的 salary值在0-1000之间的员工的工资上涨20%,(提示:要求用 到游标) Cteate or replace procedure emp_sal V_name %type; V_emp_no employee.emp_no%type; V_salary employee.salary%type; Cursor cursor_sal is Select name,emp_no,salary from employee where salary between 0 and 1000; Begin Open cursor_sal; Loop Fetch cursor_sal into v_name,v_emp_no,v_salary; Exit when cursor_sal%notfound; Update employee set salary=salary*1.2 where name=v_name and emp_no=v_emp_no; End loop; Close cursor_sal; Commit; End; 54、 ORACLE数据库都有哪些类型的文件? 数据文件,控制文件,日志文件,参数文件 55、 用命令创建表空间、用户,并为用户授权、收回权限。 Create tablespace tabllespacename Datafile f:orcluser001.dbf size 20m Default storage( Initial 512k Next 512k minextents 2 pctincrease 50% maxExitnts 2048) minimum extent 512k logging online permanent extent management dictionary; 回收权限: revoke privilege from user; create tablespace tablespace_name datafile default storage( initial xxxkb next yykb minextents 2 pctincrease nnnn maxextents mmm) logging online extent management dictionary/localautoallocate/uniform size xxxmb; create user user_name identified by passwore/ identified externally/ identified globally as CN=user default tablespace tablespace_name temporary tablespace tablespace_name account lock /unlock grant connect to user_name; grant create table to suer_name; grant update on table_name to user_name; revoke create table from user_name; revoke update on table_name from user_name; 56、 在Oracle中如何更改用户名? 57、如何在Oracle中查询某个用户下所有已建的表? 答:select * from cat; 57、 执行TRUNCATE命令后,存储空间是否还存在,是否可被其他 的表占用? 执行TRUNCATE之后,为表分配的区空间将被回收HWM将回退,如果 在使用TRUNCATE的时候没有指定REUSE STORAGE那么执行操作后 仅仅留下由MINEXTENTS所指定的区否则表的所有空间将被回收用于 再分配。 59、何在Oracle中查看当前用户,通常有哪些方式?(提示:show user 和select * from user_users)show user;/select username from user_users; 60、 出在Oracle中,创建表空间的语法结构,以及所含参数说明。 Create tablespace tablespacename Datafile Logging/nologging Default storage(initial kb Next kb Minextents x Maxextents y Pctincrease z ) online/not online extent management dictionary/localautoallocate/uniform size kb; 61、 如何判断游标是否到了末尾?(提示:用%notfound) cursor_name%notfound 62、 在Oracle中,如何查看当前用户下的所有表空间? Select tablespace_name from user_tablespaces; 63、 在Oracle中,你所创建的表空间信息放在哪里? 存放在数据字典中,数据字典内容对应于系统表空间SYSTEM表空间。 64、 ORACLE中的控制文件什么时候读取? ORACLE服务器启动时,先启动实例然后再读取数据库的各个文件当然 也包括控制文件。也就是说在数据库服务器启动的第二步时读取。 65、 Oracle的表格信息存储在哪个地方? SYSTEM表空间的数据字典文件中。 66、如何根据字典创建一个表空间,并说明参数? 66、 ORACLE中当一个用户正在操作一个执行过程,管理员此时取 消了他的权限,会发生什么事情? 68、谈谈你对角色的理解,常用的角色有哪些? 角色就是一组权限的数据库实体,它不属于任何模式或用户但是可以被 授予任何用户。常用的角色有CONNECT,DBA,RESOURCE, SELECT_CATALOG_ROLE(查询所有表视图权), DELETE_CATALOG_ROLE(删除权限)等。 角色的创建和授权:和创建用户为用户授权差不多。Create role role_name identified grant 权限to role_name。 69、简述Oracle的归档与不归档工作模式,分别说明。 Oracle归档模式是指在创建数据库时指定了ARCHIVELOG参数,这种模 式下,当重做日志文件写满的时候会将该重做日志文件的内容保存到指 定的位置(由初始化文件中的参数ARCHIVE_LOG_DEST_n来决定)。 并不是数据库在归档模式下工作的时候就可以自动完成归档操作,在归 档模式下可以有两种归档方式:自动归档(在初始化文件中的参数 ARCHIVE_LOG_START被设置为TRUE)和手动归档。如果归档模式 下没有启动自动归档的话,而且又没有实行手动归档那么当LGWR进程 将重做日志信息写入已经写满的重做日志文件时数据库将会被挂起直到 进行了归档。可见归档是对重做日志文件信息的一种保护措施。 Oracle非归档模式下当重做日志文件写满以后若是有LGWR进行重做日 志信息的写入操作时,以前保存在重做日志文件中的重做日志信息就会 被覆盖掉。 70、Oracle索引分为哪几类,说出唯一索引和位图索引的概念。 Oracle索引有B树索引,位图索引,函数索引,簇索引等。 唯一索引也是B树索引的一种,它要求被索引的字段值不可以重复。在 创建的时候使用B树算法创建。 位图索引并不是采用象唯一索引那样存储(索引字段值,记录 ROWID)来创建索引段的,而是为每一个唯一的字段值创建一个位 图,位图中使用位元来对应一个记录的ROWID。位元到ROWID是通过 映射的到的。 71、ORACLE的基本数据类型有哪些? Char()存储定长字符,定义的时候可以不为他指定长度但是如若往里插 入值则会出错;varchar2()存储变长字符定义的时候必须指定长度,date 存储时间日期;Number()数字类型,包括整型,浮点型等;clob()大容 量字符串;blob()大二进制对象 72、SQL中,执行四舍五入的是哪个函数? Round(value,保留的小数位数)与只对应的还有一个特别相似的函数 trunc(value,保留的小数位数)它的作用是根据要保留的小数位数来 截取原数。 73、oracle数据库表存放到磁盘什么地方?数据文件 ORACLE数据库的表存放在物理文件中的数据文件中。 74、当执行insert语句并提交后,这些提交的数据存储到什么地方? 存储到了数据库的数据文件中。 75、Exits和in在ORALCE数据库中那个执行效率更高? EXITS执行效率要比使用IN要快。 76、ORACLE自己提供的函数,想知道具体位置,如何操作? 77、数据库的几种物理文件? 1) 数据文件 2)控制文件 3)日志文件 78、 控制文件都含有哪些信息? 控制文件存放有实例信息(实例名称创建时间等),数据文件和日志文 件信息,还有系统运行时记录的系统变更码(SCN),检查点信息和归档 的当前状态信息等。数据库在加载数据库的时候首先要读取控制文件获 得和数据库有关的物理结构信息之后才能够正确加载数据文件和日志文 件并打开数据库。 79、 Decode函数的用法? DECODE的语法:DECODE(value,if1,then1,if2,then2,if3,then3,.,else),表示如果value等 于if1时,DECODE函数的结果返回then1,.,如果不等于任何一个if值,则返回else。初看一下, DECODE 只能做等于测试,但刚才也看到了,我们通过一些函数或计算替代value,是可以使 DECODE函数具备大于、小于或等于功能。 1. 如何用decode进行大于小于的比较? 利用sign()函数和DECODE和在一起用 select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; decode(条件,值1,翻译值1,值2,翻译值2,.值n,翻译值n,缺省值) 该函数的含义如下: IF 条件=值1 THEN RETURN(翻译值1) ELSIF 条件=值2 THEN RETURN(翻译值2) ELSIF 条件=值n THEN RETURN(翻译值n) ELSE RETURN(缺省值) END IF 使用方法: 1、比较大小 select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; -取较小值 sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1 例如: 变量1=10,变量2=20 则sign(变量1-变量2)返回-1,decode解码结果为“变量1”,达到 了取较小值的目的。 2、表、视图结构转化 现有一个商品销售表sale,表结构为: month char(6) -月份 sell number(10,2) -月销售金额 现有数据为: 200001 1000 200002 1100 200003 1200 200004 1300 200005 1400 200006 1500 200007 1600 200101 1100 200202 1200 200301 1300 想要转化为以下结构的数据: year char(4) -年份 month1 number(10,2) -1月销售金额 month2 number(10,2) -2月销售金额 month3 number(10,2) -3月销售金额 month4 number(10,2) -4月销售金额 month5 number(10,2) -5月销售金额 month6 number(10,2) -6月销售金额 month7 number(10,2) -7月销售金额 month8 number(10,2) -8月销售金额 month9 number(10,2) -9月销售金额 month10 number(10,2) -10月销售金额 month11 number(10,2) -11月销售金额 month12 number(10,2) -12月销售金额 结构转化的SQL语句为: create or replace view v_sale(year,month1,month2,month3,month4,month5,month6,month7,month8,month9,month10,month11,month12) as select substrb(month,1,4), sum(decode(substrb(month,5,2),01,sell,0), sum(decode(substrb(month,5,2),02,sell,0), sum(decode(substrb(month,5,2),03,sell,0), sum(decode(substrb(month,5,2),04,sell,0), sum(decode(substrb(month,5,2),05,sell,0), sum(decode(substrb(month,5,2),06,sell,0), sum(decode(substrb(month,5,2),07,sell,0), sum(decode(substrb(month,5,2),08,sell,0), sum(decode(substrb(month,5,2),09,sell,0), sum(decode(substrb(month,5,2),10,sell,0), sum(decode(substrb(month,5,2),11,sell,0), sum(decode(substrb(month,5,2),12,sell,0) from sale group by substrb(month,1,4); 79、CASE语句的用法? Oracle用法很简单: SELECT last_name, job_id, salary CASE job_id WHEN IT_PROG THEN 1.10*salary WHEN ST_CLERK THEN 1.15*salary WHEN SA_REP THEN 1.20*salary ELSE salary END “REVISED_SALARY“ FROM employees 80、 truncate和delete的区别? 1、TRUNCATE在各种表上无论是大的还是小的都非常快。如果有 ROLLBACK命令DELETE将被撤销,而TRUNCATE则不会被撤销。 2、TRUNCATE是一个DDL语言而DELETE是DML语句,向其他所 有的DDL语言一样,他将被隐式提交,不能对TRUNCATE使用 ROLLBACK命令。 3、TRUNCATE将重新设置高水平线和所有的索引。在对整个表和 索引进行完全浏览时,经过TRUNCATE操作后的表比DELETE操作后的 表要快得多。 4、TRUNCATE不能触发触发器,DELETE会触发触发器。 5、不能授予任何人清空他人的表的权限。 6、当表被清空后表和表的索引讲重新设置成初始大小,而delete则 不能。 7、不能清空父表。 81、 表空间如何扩展?并用语句写出? 两种扩展方式: a) 增加数据文件 alter tablespace tablespace_name add datafile xxMB b) 扩展数据文件大小 alter database datafile resize newMB 82、 表空间区管理方式?哪种方式现在是推荐使用的? a) 字典管理方式 extent management dictionary;默认方式 b) 本地管理方式 extent management localautoallocate/uniform xxmb; 83、 用什么函数获得日期?和日期中的月,日,年 to_char(sysdate,year):tow thsound six to_char(sysdate,yyyy) :2006 to_char(sysdate,month):8月 to_char(sysdate,mm):08 to_char(sysdate,day):星期4 t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论