oracle databases questions&&answers

完成下列操作,写出相应的SQL语句

1. 创建表空间neuspace,数据文件命名为neudata.dbf,存放在d:\data目录下,文件大小为200MB,设为自动增长,增量5MB,文件最大为500MB。(8分)

答:create tablespace neuspace datafile ‘d:\data\neudata.dbf’ size 200m auto extend on next 5m maxsize 500m;

2. 假设表空间neuspace已用尽500MB空间,现要求增加一个数据文件,存放在e:\appdata目录下,文件名为appneudata,大小为500MB,不自动增长。(5分)

答:alter tablespace neuspace add datafile ‘e:\appdata\appneudata.dbf’ size 500m;

3. 以系统管理员身份登录,创建账号tom,设置tom的默认表空间为neuspace。为tom分配connect和resource系统角色,获取基本的系统权限。然后为tom分配对用户scott的表emp的select权限和对SALARY, MGR属性的update权限。(8分)

答:create user tom identified by jack default tablespace neuspace;

Grant connect, resource to tom;

Grant select, update(salary, mgr) on scott.emp to tom;

4. 按如下要求创建表class和student。(15分)

属性


类型(长度)


默认值


约束


含义
CLASSNO 数值 (2) 无 主键 班级编号
CNAME 变长字符 (10) 无 非空 班级名称

属性


类型(长度)


默认值


约束


含义
STUNO 数值 (8) 无 主键 学号
SNAME 变长字符 (12) 无 非空 姓名
SEX 字符 (2) 男 无 性别
BIRTHDAY 日期 无 无 生日
EMAIL 变长字符 (20) 无 唯一 电子邮件
SCORE 数值 (5, 2) 无 检查 成绩
CLASSNO 数值 (2) 无 外键,关联到表CLASS的CLASSNO主键 班级编号

答:create table class

(classno number(2) constraint class_classno_pk primary key,

cname varchar2(10) not null);

create table student

(stuno number(8) constraint student_stuno_pk primary key,

sname varchar2(12) not null,

sex char(2) default ‘男’,

birthday date,

email varchar2(20) constraint student_email_uk unique,

score number(5,2) constraint student_score_ck check(score>=0 and score<=100),

classno number(2) constraint student_classno_fk references class(classno)

);

5. 在表student的SNAME属性上创建索引student_sname_idx(5分)

答:create index student_sname_idx on student(sname);

6. 创建序列stuseq,要求初值为20050001,增量为1,最大值为20059999。(6分)

答:create sequence stuseq increment by 1 start with 20050001 maxvalue 20059999 nocache nocycle;

7. 向表student中插入如下2行。(5分)
STUNO SNAME SEX BIRTHDAY EMAIL SCORE CLASSNO
从stuseq取值 tom 男 1979-2-3 14:30:25 tom@163.net 89.50 1
从stuseq取值 jerry 默认值 空 空 空 2

答:insert into student values(stuseq.nextval, ’tom’, ’男’, to_date(‘1979-2-3

14:30:25’, ’yyyy-mm-dd fmhh24:mi:ss’), ’tom@163.net’, 89.50, 1);

insert into student (stuno, sname, classno) values(stuseq.nextval, ’jerry’, 2);

8. 修改表student的数据,将所有一班的学生成绩加10分。(4分)

答:update student set score=score+10 where classno=1;

9. 删除表student的数据,将所有3班出生日期小于1981年5月12日的记录删除。(4分)

答:delete from student where classno=3 and birthday > ’12-5月-81’;

10. 完成以下SQL语句。(40分)

(1) 按班级升序排序,成绩降序排序,查询student表的所有记录。

答:select * from student order by classno, score desc;

(2) 查询student表中所有二班的成绩大于85.50分且出生日期大于1982-10-31日的男生的记录。

答:select * from student where classno=2 and score>85.50 and birthday < ’31-10月-82’ and sex=’男’;

(3) 查询student表中所有三班成绩为空的学生记录。

答:select * from student where classno=3 and score is null;

(4) 表student与class联合查询,要求查询所有学生的学号,姓名,成绩,班级名称。(使用oracle与SQL 99两种格式)

答:select s.stuno, s.sname, s.score, c.cname from student s, class c where s.classno=c.classno;

(5) 按班级编号分组统计每个班的人数,最高分,最低分,平均分,并按平均分降序排序。

答:select classno, count(*), max(score), min(score), avg(score) from student group by classno order by avg(score) desc;

(6) 查询一班学生记录中所有成绩高于本班学生平均分的记录。

答:select * from student where classno=1 and score > (select avg(score) from student where classno=1);

(7) 统计二班学生中所有成绩大于所有班级平均分的人数。

答:select count(*) from student where classno=2 and score > all (select avg(socre) from student group by classno);

(8) 查询平均分最高的班级编号与分数。

答:select classno, avg(score) from student group by classno having avg(score) = (select max(avg(score)) from student group by classno);

(9) 查询所有学生记录中成绩前十名的学生的学号、姓名、成绩、班级编号。

答:select stuno, sname, score, classno from (select * from student order by score desc) where rownum<=10;

(10) 创建视图stuvu,要求视图中包含student表中所有一班学生的stuno, sname, score, classno四个属性,并具有with check option限制。

答:create view stuvu

as

select stuno, sname,score,classno from student where classno=1 with check option;
表结构说明:
create table employee(
id number(10) not null, — 员工工号
salary number(10,2) default 0 not null, — 薪水
name varchar2(24) not null — 姓名
);
1.创建序列seq_employee,该序列每次取的时候它会自动增加,从1开始计数,不设最大值,并且一直累加,不循环。(10分)
2.写一个PL/SQL块,插入表user.employee中100条数据。插入该表中字段id用序列seq_employee实现,薪水和姓名字段可以任意填写。(15分)



6.写一个匿名语句块,用于执行函数f_employee,并打印执行该函数的结果。(8分)
7.创建存储过程p_create_emp,用于判断表employee是否存在,如果存在则删除该表。(15分)
8.写一个匿名语句块,用于执行存储过程p_create_emp。(7分)
答案如下:
SQL> create table employee(
2 id number(10) not null, — 员工工号
3 salary number(10,2) default 0 not null, — 薪水
4 name varchar2(24) not null — 姓名
5 );
表已创建。
—第一题答案:
SQL> Create sequence seq_employee increment by 1 start with 1 nomaxvalue nocycle;
序列已创建。
—第二题答案:
SQL> declare i number;
2 begin
3 for i in 1 .. 100
4 loop
5 insert into employee
6 values(seq_employee.nextval,1950+i,’王明’||to_char(i));
7 commit;
8 end loop;
9 end;
10 /
PL/SQL 过程已成功完成。
SQL> select * from employee where rownum<11;
ID SALARY NAME
———- ———- ————————
1 1951 王明1
2 1952 王明2
3 1953 王明3
4 1954 王明4
5 1955 王明5
6 1956 王明6
7 1957 王明7
8 1958 王明8
9 1959 王明9
10 1960 王明10
已选择10行。
3.写一个语句块,在语句块中定义一个显式游标,按id升序排列,打印表employee中前十条数据。(15分)
——-第三题答案:
SQL> declare
2 cursor c is select id,salary,name from(select * from employee order by id) where rownum<11;
3 v_record c%rowtype;
4 begin
5 open c;
6 loop
7 fetch c into v_record;
8 exit when c%notfound;
9 dbms_output.put_line(to_char(v_record.id)||’,'||to_char(v_record.salary)||’,'||v_record.name);
10 end loop;
11 close c;
12 end;
13 /
1,1951,王明1
2,1952,王明2
3,1953,王明3
4,1954,王明4
5,1955,王明5
6,1956,王明6
7,1957,王明7
8,1958,王明8
9,1959,王明9
10,1960,王明10
PL/SQL 过程已成功完成。
4.创建存储过程p_employee,输入员工薪水范围,返回员工工号、姓名、薪水结果集,结果集按员工薪水升序排列。(15分)
——-第四题答案
SQL> create or replace procedure p_employee
2 (iminsalary in number,
3 imaxsalary in number)
4 is
5 begin
6 for x in(select id,salary,name from(select * from employee where salary between iminsalary and imaxsalary) order by salary)
7 loop
8 dbms_output.put_line(to_char(x.id)||to_char(x.salary)||x.name);
9 end loop;
10 end;
11 /
过程已创建。
SQL> exec p_employee(2000,2007);
502000王明50
512001王明51
522002王明52
532003王明53
542004王明54
552005王明55
562006王明56
572007王明57
PL/SQL 过程已成功完成。
5.创建函数f_employee实现更新员工薪水的功能,将薪水低于2000且姓wang的员工薪水加5%,其他不变,更新成功则返回0,否则返回1。(15分)
———第五题答案
SQL> create or replace function f_employee return number
is
begin
update employee set salary=salary+salary*0.05 where salary<2000 and name like ‘王%’;
commit;
if sql%rowcount=0 then
return 1;
else
return 0;
end if;
end;
/
函数已创建。
—–第六题答案
SQL> declare a number;
2 begin
3 a:=f_employee();
4 dbms_output.put_line(to_char(a));
5 end;
6 /
0
PL/SQL 过程已成功完成。
SQL> select * from employee where salary<2000 and name like ‘王%’;
未选定行
SQL> select * from employee where rownum<50;
ID SALARY NAME
———- ———- ————————
1 2048.55 王明1
2 2049.6 王明2
3 2050.65 王明3
4 2051.7 王明4
5 2052.75 王明5
6 2053.8 王明6
7 2054.85 王明7
8 2055.9 王明8
9 2056.95 王明9
10 2058 王明10
11 2059.05 王明11
ID SALARY NAME
———- ———- ————————
12 2060.1 王明12
13 2061.15 王明13
14 2062.2 王明14
15 2063.25 王明15
16 2064.3 王明16
17 2065.35 王明17
18 2066.4 王明18
19 2067.45 王明19
20 2068.5 王明20
21 2069.55 王明21
22 2070.6 王明22
ID SALARY NAME
———- ———- ————————
23 2071.65 王明23
24 2072.7 王明24
25 2073.75 王明25
26 2074.8 王明26
27 2075.85 王明27
28 2076.9 王明28
29 2077.95 王明29
30 2079 王明30
31 2080.05 王明31
32 2081.1 王明32
33 2082.15 王明33
ID SALARY NAME
———- ———- ————————
34 2083.2 王明34
35 2084.25 王明35
36 2085.3 王明36
37 2086.35 王明37
38 2087.4 王明38
39 2088.45 王明39
40 2089.5 王明40
41 2090.55 王明41
42 2091.6 王明42
43 2092.65 王明43
44 2093.7 王明44
ID SALARY NAME
———- ———- ————————
45 2094.75 王明45
46 2095.8 王明46
47 2096.85 王明47
48 2097.9 王明48
49 2098.95 王明49
已选择49行。
—–第七题答案
SQL> create or replace procedure p_create_emp
2 is
3 v_count number;
4 begin
5 select count(*) into v_count from user_tables where table_name=’EMPLOYEE’;
6 if v_count=0 then
7 return;
8 else
9 execute immediate ‘drop table employee’;
10 end if;
11 end;
12 /
过程已创建。

———第八题答案
SQL> exec p_create_emp;
PL/SQL 过程已成功完成。
SQL> select * from employee;
select * from employee
*
ERROR 位于第 1 行:
ORA-00942: 表或视图不存在

A schema is collection of database objects, including logical structures such as tables, views, sequences, stored procedures, synonyms, indexes, clusters, and database links.

schema是数据库对象的集合,包括表,视图,序列,存储过程,逻辑结构,索引,集群和数据库链接等等逻辑结构。
* A user owns a schema.

一个user拥有一个schema
* A user and a schema have the same name.

user和他的schema的名字相同
* The CREATE USER command creates a user. It also automatically creates a schema for that user.
CREATE USER命令创建一个user,同时也为这个user创建一个schema
* The CREATE SCHEMA command does not create a “schema” as it implies, it just allows you to create multiple tables and views and perform multiple grants in your own schema in a single transaction.
CREATE SCHEMA命令并不像命令说的那样创建一个SCHEMA, 他只是给你创建table的权限和在同一个事务中在你创建的schema中查看和进行赋与权限的权限。
* For all intents and purposes you can consider a user to be a schema and a schema to be a user.
在任何情况下你都可以把用户和schema当作同一个东西。

影响oracle查询性能的因素都有哪些?
1. 硬件配置:处理器速度,内存大小,磁盘读写速度,网络传输速度等等,这些都影响oracle的整体性能和查询性能

2. 是否建立了索引,索引是否合理

3. 表碎片和索引碎片,生产库由于长时间运营,碎片可能导致查询使用错误的执行计划,导致查询速度变慢

4. 表或者索引的initial 参数配置不同,导致数据扩展区大小不一,也可能 导致查询速度降低。

5. SQL执行效率低下,导致查询速度很慢

6. 数据库负载过大

1 以下权限哪个时系统权限?

A.ALTER

B.EXECUTE

C.PREFERENCES

D.BACKUP ANY TABLE

答案 D

2 以下哪个权限时对象权限?

A.INDEX

B.DROP USER

C.CREATE SESSION

D.BACKUP ANY TABLE

答案 A

3 以下哪个视图可以查到用户具有使用权限的表的信息

A.USER_VIEWS

B.USER_TABLES

C.ALL_OBJECTS

D.USER_OBJECTS

答案 C

4 .简述带前缀的视图的区别:V$,DBA_,ALL_,USER_

答案:V$开头的是描述实例运行的动态性能视图,

DBA_,数据库中数据字典的信息

ALL_,用户具有操作权限的对象 信息

USER_,用户所拥有的对象的信息

5 数据定义语言是一种方法,用于:

A 确保数据的精确性

B 定义和储存数据对象

C 帮助查看数据

D 储存数据

6 关系定于为

A 网络之间的关系

B 实体之间的关系

C 属性之间的关系

D 对象之间的关系

7 下列哪个表可以用来查询所有的索引

A ALL_INDEXES_TABLES

B ALL_INDEXES

C INDEX_TABLES

D 以上都不是

8 _____数据字典表可以用来查看抽象数据类型的实际结构.

A USER_TYPE_ATTRS

B USER_TABLES

C USER_TYPE_TABS

D USER_OBJECT

9 哪个初始化参数在数据库创建后无法改变

A DB_NAME

B DB_BLOCK_SIZE

C DB_CACHE_SIZE

D SHARED_POOL_SIZE

10 现在要启动数据库,那么下面哪一个启动语句是错误的

A STRATUP NORMAL

B STRATUP FORCE

C STRATUP NOMOUNT

D STARTUP MOUNT

11 使用哪一条SHUTDOWN语句关闭数据库时,下次打开数据库是需要做恢复操作?

A SHUTDOWN TRANSACTIONAL

B SHUTDOWN IMMEDIATE

C SHUTDOWN ABORT

D SHUTDOWN NORMAL

12 关于数据库存储结构说法正确的是

A oracle始终都只能以块作为存储单位

B oracle是以块为基本存储单位,然后将块组合成区,再将区合为段,最后再由表空间对这些段进行管理。

C oracle的基本存储单位是表空间

D oracle的基本存储单位是表,将表存放于表空间,当有数据加入并提交时,最后将表空间的数据写入数据文件。

13 下列哪个选项不适物理结构中的对象

A 数据文件

B 重做日志文件

C 表空间

D 控制文件

14 在创建数据库时,必须得表空间是哪个表空间

A TABLESPACE

B SYSTEM TABLESPACE

C USERS TABLESPACE

D ROLLBACK TABLESPACE

15 关于oracle数据库启动的顺序,描述错误的是

A 当调用STRATUP open命令时,就打开了数据库

B 启动时,oracle会先启动INSTANCE,再由INSTANCE打开数据文件和日志文件,从而启动数据库

C 启动时,oracle会先启动INSTANCE,然后加载init.ora文件,根据参数设置,分配SGA和CACHE的大小,之后加载控制文件,根据控制文件的内容,分别读取数据文件和日志文件。最后启动必要的后台进程和数据库。

D 启动后台进程,在启动INSTANCE,最后加载数据库

16 要查看当前用户下有哪些数据表格,适用下列哪个视图

A USER_TABLE

B TAB

C USER_ALL_TABLES

D TABLES_USER

17 下面哪一个不是ORACLE实例的组成部分

A SGA

B PGA

C CONTROLFILE

D BGPROCESS

18 Oracle中哪个缓冲区是以循环方式写入的

A DATABASE BUFFER

B SHARD BUFFER POOL

C REDOLOG BUFFER

D LARGE BUFFER POOL

19 在一个Oracle Instance 中最多可启动多少个DBWR进程

A 1个

B 10个

C 256个

D 32个

20 如果一个用户的服务进程意外终止了,Oracle会使用哪一个后台进程来释放该用户所占的资源

A SMON

B RECV

C PMON

D CKPT

21 当服务进程无法在系统缓存中找到空闲空间时存放数据时,将会应用下列哪一项操作

A 调用DBWR将脏数据写入到数据文件

B 调用CKPT将脏数据写入到数据文件

C 调用SMON来收集存储碎片,以得到空闲空间

D 调用LGWR将数据写入到日志文件

22 下列哪个进程不是Oracle必须的后台进程

A DBWR 数据写入进程

B LGWR 日志写入进程

C SMON 系统监视进程

D ARCn 日志归档进程

23 关于模式描述不正确的是

A 表和视图等模式对象一定属于某一个模式

B 一个表可以同时属于多个模式

C 某些数据库对象可以不属于任何模式

D 在Oracle数据库中,用户与模式是一一对应的

24 每一个用户都有一个模式,一般情况下,用户名与模式名相同,必要时,用户还可以进入到其他用户的模式。

A 说法不正确

B 说法正确

C 差不多吧

D 没有答案

25 当用户BOB通过ALTER SESSION SET CURRENT_SCHEMA=SCOTT语句,进入到scott模式时,说法正确的是

A BOB拥有了SCOTT模式下的所有权限

B BOB只是可以不用以SCOTT为前缀来访问SCOTT用户的对象了,但是并没有得到SCOTT的权限

C 如果BOB在该模式下建了一个表,则该表还是属于BOB,而不属于SCOTT

D BOB在访问自己模式下的对象时,也不需要使用BOB作为前缀

26 ROWID的作用是

A 唯一标识表中的一条记录

B 这是一个伪列,用户一般无法使用,是由Oracle自身引用的

C 表示了数据的物理存储方式

D 没有作用

27 关于视图的说法正确的是

A 视图与表一样,也占用系统空间

B 视图实际上只是在需要时,执行它所代表的SQL语句

C 视图不用记录在数据字典中

D 视图其实就是表

28 视图能否修改

A 视图不能修改,因为它只是一段SQL语句而已

B 可以修改,它就代表了表格

C 没有使用联合操作符的,没有排序的,没有分组的,没有使用子查询和聚合函数的,凡是键保留表的值可以修改。

D 只要是两个表以上的联合视图,就都不能修改

29 关于索引的说法错误的是

A 索引对于表来说,可有可无

B 索引是用来提高查询速度的

C 索引是用来装饰表,是表格好看一点

D 索引会影响更新的速度

30 索引的存储方式

A 当创建索引的时候,数据库会将该索引所对应的列和每列相对应ROWID存放在一起,如果查询时引用了索引列,数据库就会从索引中找到与列对应的ROWID,从而可以快速的定位记录。

B 首先建立一个索引段,然后将创建索引的列存在索引段中,每当引用了索引列的时候,就先从索引段中找到该列值,然后再定位记录。

C 索引只不过是一个数组,每次从数组中取值当然会快一些

D 以上都不对

31 索引的特点

A 索引越多查询越快

B 索引越多查询越慢

C 索引越多更新越快

D 索引越多查询更新就越快

32序列的定义

A 序列不占用实际的存储空间

B 序列也是数据库对象,所以也占空间

C 序列占的空间较少,这个可以调

D 上面都不对

33 要创建一个从1开始,每次增加1,最大值为99999,达到最大值从头开始的序列,方法正确的是

A CREATE SEQUENCE SEQ_NAME

INCREMENT BY 1

START BY 1

MAXVALUE 99999

CYCLE

B CREATE SEQUENCE SEQ_NAME

INCREMENT BY 1

START WITH 1

MAXVALUE 99999

CYCLE

C CREATE SEQUENCE SEQ_NAME

INCREMENT BY 1

START WITH 1

MAXVALUE 99999

NOCYCLE

D CREATE SEQUENCE SEQ_NAME

INCREMENT 1

START BY 1

MAXVALUE 99999

CYCLE

34 当定义了一个序列(SEQUTEST)后,使用序列方法正确的是

A 直接使用SEQUTEST.CURRVAL;

B 必须先使用SEQUTEST.NEXTVAL 然后才能使用 SEQUTEST.CURRVAL

C 只能使用SEQUTEST.NEXTVAL

D 必须两者一起使用

35 同义词有哪几种类型

A 公有同义词和私有同义词

B 就一种 同义词

C 系统同义词

D 用户同义词

36 什么是同义词

A同义词是一个模式对象的别名,通过为模式对象创建同义词,可以隐藏对象的实际名称和所有者信息

B 在数据库中两个相同意义的单词

C 给数据库对象起个别名,这样一来,可以用多种名字来引用该对象,但只能使创建该同义词的用户才能访问

D 上面都不对

37 查询用户同义词的数据字典视图是

A USERS_SYNONYM

B USER_SYNONYMS

C ALL_ SYNONYM

D VIEW_ SYNONYMS

38 有一个商品表,需要为该表的id列,产生一个有序的,唯一的连续整数,应该采用以下的那种结构

A VIEW

B SEQUENCE

C SYNONYM

D INDEX

39 数据库设计中,第二范式的作用主要是

A 消除重复值

B 消除函数依赖

C 消除传递依赖

D 消除规范化

1. 解释FUNCTION,PROCEDURE和PACKAGE区别
答:function 和procedure是PL/SQL代码的集合,通常为了完成一个任务。procedure 不需要返回任何值而function将返回一个值在另一方面,Package是为了完成一个商业功能的一组function和procedure的集合。

2. 取某个序列的当前值的PL/SQL语句怎么写?
答:SELECT 序列名.CURRVAL FROM DUAL;

3. 说明ORACLE数据库实例与ORACLE用户的关系?
答:实例可以包含多个用户,一个用户只能在一个实例下

4. 创建数据库时,自动建立的tablespace名称?
答:SYSTEM tablespace

5. 创建用户时,需要赋予新用户什么权限才能使它连上数据库?
答:CONNECT

6. IMPORT和SQL*LOADER这2个工具的不同点?
答:这两个ORACLE工具都是用来将数据导入数据库的。
区别是:IMPORT工具只能处理由另一个ORACLE工具EXPORT生成的数据。而SQL*LOADER可以导入不同的ASCII格式的数据源。

7.解释冷备份和热备份的不同点以及各自的优点?
答:热备份针对归档模式的数据库,在数据库仍旧处于工作状态时进行备份。而冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库。热备份的优点在于当备份时,数据库仍旧可以被使用并且可以将数据库恢复到任意一个时间点。冷备份的优点在于它的备份和恢复操作相当简单,并且由于冷备份的数据库可以工作在非归档模式下,数据库性能会比归档模式稍好。(因为不必将archive log写入硬盘)

8.比较truncate和delete命令?
答:两者都可以用来删除表中所有的记录。区别在于:truncate是DDL(data defining language数据定义语言),它移动HWK,不需要rollback segment(处理事务回滚操作)而Delete是DML(data manufacturing language数据操作语言)操作,需要rollback segment(处理事务回滚操作)且花费较长时间。

9.给出数据的相关约束类型?
答:主键约束,外键约束,非空约束,唯一约束,检查约束。

10.说明索引的类型与作用?
答:索引类型上分为聚集索引,非聚集索引其作用是加快查询速度。

11.解释归档和非归档模式之间的不同和它们各自的优缺点
答:归档模式是指你可以备份所有的数据库 transactions并恢复到任意一个时间点。非归档模式则相反,不能恢复到任意一个时间点。但是非归档模式可以带来数据库性能上的少许提高。

12.解释$ORACLE_HOME和$ORACLE_BASE的区别?
答:ORACLE_BASE是oracle的根目录,ORACLE_HOME是oracle产品的目录。

13.获取某个字符字段的最后3个字符的函数是什么?
答:select substr (字段,(length(字段)-3)) from 表

14.取当前系统时间点日期(不包括年月)的SQL写法是怎样的?
答:Select substr (to_char(sysdate,’YYYYMMDDh24hh:MM:SS’),5) from dual;

15.返回大于等于N的最小整数值?
答:select ceil(N) from dual;

16.将根据字符查询转换后结果,规则为:’A’转换为’男’,’B’转换为’女’,其他字符转换为’未知’,请用一个SQL语句写出。
答:select decode(字符,’A’,’男’,’B’,’女’,’未知’) from dual;

17.如何搜索出前N条记录?
答:select * from 表 where Rownum <= N;

18.如何搜索出第N~M条记录?
答:select * from 表 where Rownum <= M
Minus
select * from 表 where Rownum <= N;

19.有一个数据表(TEST),字段如下:
ID number
PARENT_ID number
NAME Varchar(20)
请使用PL/SQL来按父子层次关系查询出该表的所有数据
答:Select * from test a, test b Where a.parent_id = b.id;

20.怎样用SQL语句实现查找一列中的第N大值?
答:select * from (select * from 表 order by 列名 Desc) where Rownum <= N
Minus
select * from (select * from 表 order by 列名 Desc) where Rownum <= N-1;
1. Oracle安裝完成后的初始口令? 

   internal/oracle
   sys/change_on_install
    system/manager
    scott/tiger
    sysman/oem_temp  

  2. ORACLE9IAS WEB CACHE的初始默认用户和密码?  

   administrator/administrator 

  3. oracle 8.0.5怎么创建数据库?  

   用orainst。如果有motif界面,可以用orainst /m 

  4. oracle 8.1.7怎么创建数据库?

   dbassist 

  5. oracle 9i 怎么创建数据库? 

   dbca  

  6. oracle中的裸设备指的是什么?  

   裸设备就是绕过文件系统直接访问的储存空间 

  7. oracle如何区分 64-bit/32bit 版本??? 

  $ sqlplus ‘/ AS SYSDBA’
  SQL*Plus: Release 9.0.1.0.0 – Production on Mon Jul 14 17:01:09 2003
  (c) Copyright 2001 Oracle Corporation. All rights reserved.
  Connected to:
  Oracle9i Enterprise Edition Release 9.0.1.0.0 – Production
  With the Partitioning option
  JServer Release 9.0.1.0.0 – Production
  SQL> select * from v$version;
  BANNER
  Oracle9i Enterprise Edition Release 9.0.1.0.0 – Production
  PL/SQL Release 9.0.1.0.0 – Production
  CORE 9.0.1.0.0 Production
  TNS for Solaris: Version 9.0.1.0.0 – Production
  NLSRTL Version 9.0.1.0.0 – Production
  SQL>  

  8. SVRMGR什么意思? 

  svrmgrl,Server Manager.

  9i下没有,已经改为用SQLPLUS了

  sqlplus /nolog
  变为归档日志型的 

  9. 请问如何分辨某个用户是从哪台机器登陆ORACLE的?

  SELECT machine , terminal FROM V$SESSION;  

  10. 用什么语句查询字段呢? 

  desc table_name 可以查询表的结构
  select field_name,… from … 可以查询字段的值
  select * from all_tables where table_name like ‘%’
  select * from all_tab_columns where table_name=’??’  

  11. 怎样得到触发器、过程、函数的创建脚本? 

  desc user_source
  user_triggers   

  12. 怎样计算一个表占用的空间的大小? 

  select owner,table_name,
  NUM_ROWS,
  BLOCKS*AAA/1024/1024 “Size M”,
  EMPTY_BLOCKS,
  LAST_ANALYZED
  from dba_tables
  where table_name=’XXX’;
  Here: AAA is the value of db_block_size ;
  XXX is the table name you want to check 

14. 如何查看系统被锁的事务时间?
  select * from v$locked_object ;

  15. 如何以archivelog的方式运行oracle。
  init.ora
  log_archive_start = true
  RESTART DATABASE
  16. 怎么获取有哪些用户在使用数据库
  select username from v$session;

  17. 数据表中的字段最大数是多少?

  表或视图中的最大列数为 1000  

  18. 怎样查得数据库的SID ?

  select name from v$database;

  也可以直接查看 init.ora文件

  19. 如何在Oracle服务器上通过SQLPLUS查看本机IP地址 ?

  select sys_context(’userenv’,'ip_address’) from dual;

  如果是登陆本机数据库,只能返回127.0.0.1,呵呵  

  20. unix 下怎么调整数据库的时间?

  su -root

  date -u 08010000

如何高效率的查找一个月以内的数据?
进行时间比较要尽量避免用sysdate. 比如:如果使用select * from eventtable where eventdate>sysdate-30进行查找,当数据量小的时候看不出来,数据量大一些就会发现执行很慢,但日期型字段上也是有索引的,为什么会慢呢?原来是Oracle在进行查找的时候不断地去取sysdate这个不断变化的值,而不是我们想象中的一次产生一个条件语句然后进行查找。为了加快速度,我们可以先把当天的日期取出来,然后转成字符串后再用如下语句查,select * from eventtable where eventdate > to_date(’2001-12-1′,’yyyy-mm-dd’)。速度相差几十倍。

简要介绍一下Oracle快照(snapshot)
照是指表的或者表的行或者列的子集的副本, 快照在分布式的系统环境下很有用。 可以通过create snapshot语法来创建一个snapshot, 可以在创建快照的时候指定刷新频率
什么是Oracle的同义词(synonym)? 如何创建synonym?
同义词是相当于别名,是为了简化一些表名或者数据对象。 当我们以一个用户登陆而要去访问另一个用户创建的数据对象时,我们需要使用用户名.对象名的方法来使用,这样造成对象名难记,麻烦,使用同义词可以解决这个问题。

假定我们现在以system的身份的登陆进去,我们需要访问scott用户下面的一个表emp;

常规的写法是:select * from scott.emp;

现在我们可以先建立一个同义词:
create synonym my_syn for scott.emp;

然后我们这样来访问这个表了:
select * from my_syn;
什么是表空间(tablespace)和系统表空间(System tablespace)?
表空间(tablespace)是数据库的一个逻辑的存储单元,用来将相关的数据结构到组织到一起。

系统表空间是在数据库建立的时候自动创建的,它包含了整个数据库的数据字典

什么是数据库的约束?
数据库约束是防止非法记录的规则, 约束保存在数据字典(data dictionary)中, 约束可以被定义在列级或者表级。

Oracle中包括一下集中约束:

1. Not Null – 明确一列数据不能包含null值

2. Unique – 强制所有数据行不能有重复值

3. Primary Key – 每一行数据的唯一标示

4. Foreign Key – 强制一列数据与引用表的外键约束关系

5. Check – 检查,明确规定一个必须为true的condition
什么是数据库锁?Oracle中都有哪些类型的锁?
锁是用来在多个用户同时访问同一个表的时候保护数据的。 它是Oracle的一种并发控制技术。锁使数据库最大并发的情况下保证数据的完整性。 Oracle会在需要的时候自动的提供锁的功能。

锁的种类:

共享锁: 这个锁是数据在被viewed的时候放置的。

排他锁: 这种锁在Insert, Update, Delete命令执行的时候放置的,每一条记录同一时间只能有一个排他锁。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值