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 值
二、事务概念
答案:事务是这样一种机制,它确保多个SQL语句被看成单个工做单元来处理。事务具备如下的做用:
* 一致性:同时进行的查询和更新彼此不会发生冲突,其余用户不会看到发生了变化但还没有提交的数据。
* 可恢复性:一旦系统故障,数据库会自动地彻底恢复未完成的事务。
三、oracle中查询系统时间
答:select sysdate from dual
四、触发器的做用,何时用触发器,建立触发器的步骤,触发器里是否能够有commit, 为何?
答案:触发器是能够由事件来启动运行的,存在于数据库服务器中的一个过程。
他的做用:能够实现通常的约束没法完成的复杂约束,从而实现更为复杂的完整性要求。
使用触发器并不存在严格的限定,只要用户想在无人工参与的状况下完成通常的定义约束不能够完成的约束,来保证数据库完整性,那么就可使用触发器。
因为触发器主要是用来保证数据库的完整性的,因此要建立一个触发器,首先要明确该触发器应该属于那一种(DML,INSTEAD OF,SYSTEM)由于他们各有个的用途;其次就是要肯定触发器被触发之后所设计到的数据。
出发器中不可使用COMMIT。
5.数字函数
abs() 绝对值exp(value)e的value次幂ceil()大于等于该值的最小整数floor()小于等于该值的最大整数 trunc(value,precision)保留precision个小数截取valueround(value,precision)保留 precision个小数对value进行四舍五入 sign()根据值为正负零返回1,-1,0mod()取模操做power(value,exponent)value的exponent次幂 sqrt()求平方根
1.初级
四、关系数据库系统与文件数据库系统的区别在那里?关系数据库系统通常适用那些方面?
答案:
关系数据库系统文件系统的区别在于:
首先,关系性数据库的总体数据是结构化的,采用关系数据模型来描述,这是它与文件系统的根本区别。(数据模型包括:数据结构,数据操做以及完整性约束条件)
其次,关系数据库系统的共享性高,冗余低能够面向整个系统,而文件系统则具备应用范围的局限性,不易扩展。
第 三,关系数据库系统采用两级映射机制保证了数据的高独立性,从而使得程序的编写和数据都存在很高的独立性。这方面是文件系统没法达到的,它只能针对于某一 个具体的应用。(两级映射:保证逻辑独立性的外模式/模式映射和保证物理独立性的内模式/模式映射。外模式:用户模式,是数据库用户的局部数据的逻辑结构 特征的描述。模式:数据库全体数据的逻辑结构特征的描述。内模式:也就是数据最终的物理存储结构的描述。)
第四,就是关系性数据库系统由统一的DBMS进行管理,从而为数据提供了如安全性保护,并发控制,完整性检查和数据库恢复服务。
五、触发器的概念,存储过程的概念.
答案:
触发器: 是存储在数据库中的过程,当表被修改(增、删、改)时它隐式地被激发。
存储过程:是数据库语言SQL的集合,一样也存储在数据库中,可是他是由其余应用程序来启动运行或者也能够直接运行。
六、基本SQL语句有哪些.
答案:
select、insert、update、delete、create、drop、truncate
1.中级
八、什么是事务一致性 ? 选择熟悉的数据库实现一个事务处理,如信用卡提款.
答案:
事务的一致性:是事务原子性的体现,事务所对应的数据库操做要么成功要么失败没有第三种状况。事务无论是提交成功与否都不能影响数据库数据的一致性状态。
事务:用户定义的一个数据库操做序列,这些操做要么所有成功完成要么所有不作,是一个不可分割的总体。定义事务的SQL语句有:BEGIN TRANSACTION,COMMIT,ROLLBACK。
事务的原子性:就是事务所包含的数据库操做要么都作,要么都不作.
事务的隔离性:事务对数据的操做不可以受到其余事务的影响。
事务的持续性:也就是说事务对数据的影响是永久的。
对’信用卡提款’这一事务而言就是要保证’提取到现金’和’卡账号余额’的修改要同时成功或失败.
BEGIN TRANSACTION
读取A的账户余额BALANCE;
BALANCE=BALANCE-AMOUNT转账金额;
IF(BALANCE<0) THEN
ROLLBACK;
ELSE
BEGIN
将A的新余额写回;
读取B的账户余额BALANCEB;
BALANCEB=BALANCEB+AMOUNT转账金额;
将B的新余额写回;
COMMIT;
END IF;
END;
九、实际编写和调试存储过程或触发器.
答案:
十、实现索引的方式? 索引的原理? 索引的代价? 索引的类型?
答案: 实现索引的方式有两种:针对一张表的某些字段建立具体的索引,如对oracle: create index 索引名称 on 表名(字段名);在建立表时为字段创建主键约束或者惟一约束,系统将自动为其创建索引。
索引的原理:根据创建索引的字段创建索引表,存放字段值以及对应记录的物理地址,从而在搜索的时候根据字段值搜索索引表的到物理地址直接访问记录。
引入索引虽然提升了查询速度,但自己占用必定的系统存储容量和系统处理时间,须要根据实际状况进行具体的分析.
索引的类型有:B树索引,位图索引,函数索引等。
十一、view 的概念 ? 什么时候应用?
答案: view 是对表级数据的多角度的透视,适用于对查询安全性、灵活性有必定要求的环境
十二、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,提示信息)。
1三、判断下列论述是否正确。 (1) 一个事务中的某条SQL命令提交时,其它SQL命令能够不提交。 (2) 在一个关系表中,主键可惟一标识一行记录。 (3) 一个关系表中的外键一定是另外一表中的主键。 (4) 回滚能够在事务失败时,回到操做事务前的数据状态。
答案: (1)错误 (2)正确 (3)正确 (4)正确
1四、如下哪些手段可保证数据库中数据的完整性和一致性: (1)自定义数据类型 (2)触发器 (3)主键和外键 (4)事务
答案: (1)(2)(3)(4) (为何有1)
1五、使用存储过程访问数据库比直接用SQL语句访问有哪些优势?
答案:存储过程是预编译过的,执行时勿须编译,执行速度更快;存储过程封装了一批SQL语句,便于维护数据的完整性与一致性;能够实现代码的复用。
1.高级
1六、对于精通的数据库系统描述其体系结构,主要包括存储机制、回滚机制、运行机制等.
答案:对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和后台进程的描述。
1七、对于精通的数据库系统描述其数据一致性的保证机制,包括lock,事务一致性等.
答案: 在并发环境下,采用多种机制保持其数据的一致性,如oracle系统提供的事务级的一致性、行级锁、表级锁等等.
1八、对精通的数据库系统描述其联机备份机制、恢复机制,考核其对日志的理解.
答案: 描述相关数据库的实时联机备份策略,如数据库系统在运行中经过何种方式保证其数据的实时备份, 出现问题时,应采起何种办法从联机备份进行恢复.
对对oracle而言,其archive online 备份方式应如何设置、修改什么参数、如何安排备份空间等等.
1九、精通的数据库系统描述性能优化方法,包括优化的策略、参数、验证方法等.
答案:
20、 Truncate; 与 delete;的区别?(这道题能够衍生出不少的问题好比:想快速的清除一个很大的表中的数据应该用设么操做?答案是:应该用truncate。还有,在 对两个相同纪录数的分别表使用了truncate,和delete commit;后对这两个表进行count(*)统计记录数操做,那个表速度会快些?答案是:使用了truncate的会快些。)
2一、写一个‘游标’并使用它。(这道题应该注意的是:在使用游标后必定要记得关闭游标)。
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;
2二、在建立表的时候会设置
pctfree 10
pctused 40
而建立表的索引的时候却没有
pctused 40
这是为何?
(这道题的主要思想是索引不能在pctused 40上获得什么好处)
2三、使用过的最大的表有多少行纪录?(这道题不是看应试者的技术过不过关,而是考察应试者是否有大型数据库的管理操做经验)
不要对表的索引列进行函数操做,由于这样系统就不能使用索引,使查询变得很慢,可是在ora8i之后就已经开始支持函数的索引,弥补了这个不足。
2四、ORACLE数据库启动与关闭的步骤
启动:启动实例—-加载数据库数据—–打开数据库
关闭:关闭数据库—-卸载数据库数据—-关闭实例
2五、Delete与truncate的区别
delete通常用于删除少许记录的操做,并且它是要使用回滚段而且要进行显示的提交事务。而truncate则使用于大量删除数据,并且隐式提交事务,其速度要比使用delete快的多。
2六、DDL和DML分别表明什么??
DDL表示数据定义语言,在ORACLE中主要包括CREATE,ALTER,DROP
DML表示数据操做语言,主要的DML有SELECT,INSERT,UPDATE,DELETE
2八、Javascript中动态效果时调用的函数。
2九、数据库中有若干条相同的记录,删除到只剩下一条记录。如何作,请用SQL语句经过ROW_ID来写出执行过程。
Delete table_name where ziduan=’’ and rowed<(select max(rowed) from table_name where ziduan=’’);
30、oracle数据库表存放到磁盘什么地方(什么物理空间上——大概意思)?
Oracle数据库表存放在数据文件上。
3一、Oracle使用什么语句给用户分配权限?
GRANT TO 语句
3二、你在项目现场,用户要求你向正在运行的表中添加一个字段,你该怎么作?
第一种方法:关闭数据库,而后使用受限模式打开,由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用户对数据库进行操做。这种状态主要用于进行数据库备份。
3三、Oracle中回滚的概念?回滚段有什么做用。
回滚就是在事务提交以前将数据库数据恢复到事务修改以前数据库数据状态。
回 滚段就是为回滚提供依据,记录的是事务操做数据库以前的数据或者对应于之前操做的操做,这个内容要根据之前的操做而定。好比说之前事务操做若是是 UPDATE那么回滚段则存储UPDATE之前的数据,若是事务是DELETE操做那么存储的则是与之相对应的INSERT操做语句,相反若是事务操做是 INSERT那么记录相应的则是DELETE操做了。
3四、Oracle的8I和9I有什么区别
3五、一张表有10万条记录,如何删除其中的任意20条记录?请用SQL语句进行操做
3六、客户端如何访问服务器端的oracle?若是客户端没法访问服务器端的oralce,可能会是什么缘由?
客 户端经过网络或者进程方式以合法的用户身份来取得和服务器端ORACLE的链接。若是客户端没法访问服务器端ORACLE可能出现的缘由是:用户无权访 问;服务器端数据库并无打开(启动数据库的第三步没有完成);若是服务器是在共享模式下的则有可能没有对应于该客户所使用的通讯协议的调度进程 Dnnn。
3七、oracle中执行语句错误时去哪里查找错误信息?
Select * from USER_ERRORS
3八、select语句须要提交吗?insert和update语句呢?
3九、在执行insert语句并提交后,这些提交的数据存储到什么地方??
被存储到数据文件中
40、oracle中有哪些类型的文件?
数据文件,控制文件,日志文件和数据字典
4一、介绍一下oracle的体系结构?
逻辑体系结构:块,区,段,表空间
物理体系结构:表空间,三大文件
软件体系结构:SGA,后台进程
4二、谈谈对oracle的row_ id是否理解?请简述?
ORACLE的row_id是一个伪列,其个是为18个字节可将这18个字节用6363来划分,分别表示段编号,数据文件编号,数据块编号和记录编号。
Row_id表示的是一个记录的物理存储地址。
4三、oracle中如何删除用户?
Oracle中使用DROP USER来删除用户,若是使用DROP USER CASCADE那么用户的对象也同时被删除掉。为了达到删除用户的效果而又不影响对用户下的对象的使用可使用alter user username account lock将用户锁定。
4四、客户端对服务器端的oralce操做的流程是什么?
专 用模式下:用户经过应用程序进程试图去获得一个与ORACLE数据库服务器的链接客户端经过网络传递链接请求,ORACLE服务器则使用监听进程监听用 户请求,而且来验证用户身份,经过验证则为用户分配一专用服务进程用户提交SQL语句专用服务进程则首先在SGA区的共享池中检查是否有与该SQL语 句类似的已经被解析执行而且缓存的SQL语句,若是有则采用它的解析结果和执行计划执行SQL语句,若是没有则对SQL语句进行语法解析生成执行计划通 过解析则执行操做获取数据将执行结果返回给客户。
共享模式下:与专用模式不一样在于当监听程序验证用户的合法性之后并不为它分配一个专用的服务进 程,而是将该请求与响应的调度进程相联系起来,并将起放入到一个请求队列中,最终由响应的Dnnn来从调度队列中获取一个请求并为之分配一个空闲的服务进 程,接下来有服务进程对该请求进行服务操做和专用方式下相同,处理完成以后由服务进程先将结果放入一个返回队列最后再由调度进程(Dnnn)将返回队列中 的结果返回给对应的用户。
4五、exits和in在ORALCE数据库中那个执行效率更高?
Exits执行效率比in高。由于:
4六、如何判断游标已经到最后一行?
Cursor_name%notfound
4七、聚簇索引和普通索引在不一样的SQL语句中哪一个效率更高??(笔试题,原题回忆不起来,主题就是聚簇索引和普通索引的区别)
概念类:
聚合函数? Session的定义和用法? Oracle的存储过程 ? 什么是构造函数?
4八、简述ORACLE中SGA的组成部分。
答:系统全局区包括:共享池、重作日志缓存区、数据高速缓存区,大池,JAVA池。
4九、简述ORACLE的启动和关闭各有多少步骤?
启动:启动实例、装载数据库数据、打开数据库。
关闭:关闭数据库、卸载数据库数据、关闭实例。
50、在Oracle表空间的分类和做用,如排序时数据将放在什么表空间?
做用是为了突破存储容量的限制,是一个逻辑概念。排序数据放在临时表空间。
5一、执行COMMIT命令时,数据库将会发生什么改变,ROLLBACK呢?
答:commit 提交时首先是与事务对应的重作日志信息将被写入到数据库物理文件中的重作日志文件中,至因而否会真正将事务操做的内容反映到数据文件还好看DBWR是否启 动了。在完成数据库的插入,删除和修改操做时,只有当事务提交到数据库才算完成,有提交前只有操做数据库的本人才能看到,别人只有在最后提交完成才能够看 到。
ROLLBACK回滚当前还没有提交的事务,使数据库恢复到事务操做前的状态。
5二、用命令建立用户,并为用户受权。
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;
5三、写一个存储过程,使employee(name,age,emp_no,salary)表中的salary值在0-1000之间的员工的工资上涨20%,(提示:要求用到游标)
Cteate or replace procedure emp_sal
V_name employee.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;
5四、ORACLE数据库都有哪些类型的文件?
数据文件,控制文件,日志文件,参数文件
5五、用命令建立表空间、用户,并为用户受权、收回权限。
Create tablespace tabllespacename
Datafile ‘f:\orcl\user001.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/local[autoallocate/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;
5六、在Oracle中如何更改用户名?
5七、如何在Oracle中查询某个用户下全部已建的表?
答:select * from cat;
5七、执行TRUNCATE命令后,存储空间是否还存在,是否可被其余的表占用?
执行TRUNCATE以后,为表分配的区空间将被回收HWM将回退,若是在使用TRUNCATE的时候没有指定REUSE STORAGE那么执行操做后仅仅留下由MINEXTENTS所指定的区不然表的全部空间将被回收用于再分配。
5九、何在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/local[autoallocate/uniform size kb];
6一、如何判断游标是否到了末尾?(提示:用%notfound)
cursor_name%notfound
6二、在Oracle中,如何查看当前用户下的全部表空间?
Select tablespace_name from user_tablespaces;
6三、在Oracle中,你所建立的表空间信息放在哪里?
存放在数据字典中,数据字典内容对应于系统表空间SYSTEM表空间。
6四、ORACLE中的控制文件何时读取?
ORACLE服务器启动时,先启动实例而后再读取数据库的各个文件固然也包括控制文件。也就是说在数据库服务器启动的第二步时读取。
6五、Oracle的表格信息存储在哪一个地方?
SYSTEM表空间的数据字典文件中。
6六、如何根据字典建立一个表空间,并说明参数?
6六、ORACLE中当一个用户正在操做一个执行过程,管理员此时取消了他的权限,会发生什么事情?
6八、谈谈你对角色的理解,经常使用的角色有哪些?
角色就是一组权限的数据库实体,它不属于任何模式或用户可是能够被授予任何用户。经常使用的角色有CONNECT,DBA,RESOURCE,SELECT_CATALOG_ROLE(查询全部表视图权),DELETE_CATALOG_ROLE(删除权限)等。
角色的建立和受权:和建立用户为用户受权差很少。Create role role_name identified …
grant 权限to role_name。
6九、简述Oracle的归档与不归档工做模式,分别说明。
Oracle 归档模式是指在建立数据库时指定了ARCHIVELOG参数,这种模式下,当重作日志文件写满的时候会将该重作日志文件的内容保存到指定的位置(由初始化 文件中的参数ARCHIVE_LOG_DEST_n来决定)。并非数据库在归档模式下工做的时候就能够自动完成归档操做,在归档模式下能够有两种归档方 式:自动归档(在初始化文件中的参数ARCHIVE_LOG_START被设置为TRUE)和手动归档。若是归档模式下没有启动自动归档的话,并且又没有 实行手动归档那么当LGWR进程将重作日志信息写入已经写满的重作日志文件时数据库将会被挂起直到进行了归档。可见归档是对重作日志文件信息的一种保护措 施。
Oracle非归档模式下当重作日志文件写满之后如果有LGWR进行重作日志信息的写入操做时,之前保存在重作日志文件中的重作日志信息就会被覆盖掉。
70、Oracle索引分为哪几类,说出惟一索引和位图索引的概念。
Oracle索引有B树索引,位图索引,函数索引,簇索引等。
惟一索引也是B树索引的一种,它要求被索引的字段值不能够重复。在建立的时候使用B树算法建立。
位图索引并非采用象惟一索引那样存储(索引字段值,记录ROWID)来建立索引段的,而是为每个惟一的字段值建立一个位图,位图中使用位元来对应一个记录的ROWID。位元到ROWID是经过映射的到的。
7一、ORACLE的基本数据类型有哪些?
Char()存储定长字符,定义的时候能够不为他指定长度可是如若往里插入值则会出错;varchar2()存储变长字符定义的时候必须指定长度,date存储时间日期;Number()数字类型,包括整型,浮点型等;clob()大容量字符串;blob()大二进制对象
7二、SQL中,执行四舍五入的是哪一个函数?
Round(value,保留的小数位数)与只对应的还有一个特别类似的函数trunc(value,保留的小数位数)它的做用是根据要保留的小数位数来截取原数。
7三、oracle数据库表存放到磁盘什么地方?数据文件
ORACLE数据库的表存放在物理文件中的数据文件中。
7四、当执行insert语句并提交后,这些提交的数据存储到什么地方??
存储到了数据库的数据文件中。
7五、Exits和in在ORALCE数据库中那个执行效率更高?
EXITS执行效率要比使用IN要快。
7六、ORACLE本身提供的函数,想知道具体位置,如何操做?
7七、数据库的几种物理文件?
1)数据文件 2)控制文件 3)日志文件
7八、控制文件都含有哪些信息?
控 制文件存放有实例信息(实例名称建立时间等),数据文件和日志文件信息,还有系统运行时记录的系统变动码(SCN),检查点信息和归档的当前状态信息等。 数据库在加载数据库的时候首先要读取控制文件得到和数据库有关的物理结构信息以后才可以正确加载数据文件和日志文件并打开数据库。
7九、Decode函数的用法?
DECODE 的语法:DECODE(value,if1,then1,if2,then2,if3,then3,…,else),表示若是value等于if1 时,DECODE函数的结果返回then1,…,若是不等于任何一个if值,则返回else。初看一下,DECODE 只能作等于测试,但刚才也看到了,咱们经过一些函数或计算替代value,是可使DECODE函数具有大于、小于或等于功能。
2.如何用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
• 使用方法:
一、比较大小
select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; –取较小值
sign()函数根据某个值是0、正数仍是负数,分别返回0、一、-1
例如:
变量1=10,变量2=20
则sign(变量1-变量2)返回-1,decode解码结果为“变量1”,达到了取较小值的目的。
二、表、视图结构转化
现有一个商品销售表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);
7九、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的区别?
一、TRUNCATE在各类表上不管是大的仍是小的都很是快。若是有ROLLBACK命令DELETE将被撤销,而TRUNCATE则不会被撤销。
二、TRUNCATE是一个DDL语言而DELETE是DML语句,向其余全部的DDL语言同样,他将被隐式提交,不能对TRUNCATE使用ROLLBACK命令。
三、TRUNCATE将从新设置高水平线和全部的索引。在对整个表和索引进行彻底浏览时,通过TRUNCATE操做后的表比DELETE操做后的表要快得多。
四、TRUNCATE不能触发触发器,DELETE会触发触发器。
五、不能授予任何人清空他人的表的权限。
六、当表被清空后表和表的索引讲从新设置成初始大小,而delete则不能。
七、不能清空父表。
8一、表空间如何扩展?并用语句写出?
两种扩展方式:
a)增长数据文件
alter tablespace tablespace_name add datafile ‘’ xxMB
b)扩展数据文件大小
alter database datafile ‘’ resize newMB
8二、表空间区管理方式?哪一种方式如今是推荐使用的?
a)字典管理方式
extent management dictionary;默认方式
b)本地管理方式
extent management local[autoallocate/uniform xxmb];
8三、用什么函数得到日期?和日期中的月,日,年
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 to_char(sysdate,’dd’):22
8四、分区表的应用?
a)一个分区表有一个或多个分区,每一个分区经过使用范围分区、散列分区、或组合分区分区的行
b)分区表中的每个分区为一个段,可各自位于不一样的表空间中
c)对于同时可以使用几个进程进行查询或操做的大型表分区很是有用
8五、谈谈索引的用法及原理?
索引是若干数据行的关键字的列表,查询数据时,经过索引中的关键字能够快速定位到要访问的记录所在的数据块,从而大大减小读取数据块的I/O次数,所以能够显著提升性能。
8六、存储过程的应用,如何既有输入又有输出?
Create procedure pro_name
(xxxx in/out type;
yyyy in/out/inout type;
) is/as
zzzz type;
begin
sqlpro;
exception
exceptionxxxxx;
commit;
end;
8七、常发生的异常有哪些?
经常使用预约义例外
CURSOR_ALREADY_OPEN — ORA-06511 SQLCODE = -6511 游标已经打开
DUP_VAL_ON_INDEX — ORA-00001 SQLCODE = -1 违反惟一性约束
INVALID_CURSOR — ORA-01001 SQLCODE = -1001 非法游标操做
INVALID_NUMBER — ORA-01722 SQLCODE = -1722 字符向数字转换失败
LOGIN_DENIED — ORA-01017 SQLCODE = -1017
NO_DATA_FOUND — ORA-01403 SQLCODE = +100 没有找到数据
NOT_LOGGED_ON — ORA-01012 SQLCODE = -1012 没有链接到数据库
PROGRAM_ERROR — ORA-06501 SQLCODE = -6501 内部错误
STORAGE_ERROR — ORA-06500 SQLCODE = -6500
TIMEOUT_ON_RESOURCE — ORA-00051 SQLCODE = -51
TOO_MANY_ROWS — ORA-01422 SQLCODE = -1422 返回多行
TRANSACTION_BACKED_OUT — ORA-00061 SQLCODE = -61
VALUE_ERROR — ORA-06502 SQLCODE = -6502 数值转换错误
ACCESS_INTO_NULL试图为NULL对象的属性赋值
ZERO_DIVIDE — ORA-01476 SQLCODE = -1476 被零除
OTHERS — 其它任何错误的处理
8八、如何使用异常?
在 oracle中有三种类型的异常。预约义的异常 非预约义的异常 用户定义的异常 第二种非预约义的异常是与特定的oracle错误关联。而且用PRAGM EXCEPTION_INIT(EXCEPTION_NAME,ERROR_NUMBER)关联一块儿的。可是到底有什么用啊? 例如:declare dup_primary_key exception; pragma exception_init(dup_primary_key,-1); begin insert into itemfile values(‘i201′,’washer’,'spares’,100,50,250,12,30); exception when dup_primary_key then dbms_output.put_line(‘重复项编号-主键冲突’); end
第一种的使用方法:exception
when 异常名称 then
异常处理代码;
第三种的用法:if 条件 then
raise_application_error(-20000“““`-20999,提示信息);
end if;
8九、优化的策略通常包括:
•内存优化
•操做系统优化
•数据存储的优化
•网络优化等方法
具体到不一样的数据库涉及到要调整不一样的数据库配置文件、不一样的操做系统参数、网络参数等等, 不一样的数据库不一样.算法