搜档网
当前位置:搜档网 › oracle数据库实用教程第二版答案

oracle数据库实用教程第二版答案

oracle数据库实用教程第二版答案

【篇一:oracle 11g(钱慎一)课后习题答案】

若关系的某一属性组的值能唯一地标识一个元组,我们称之为

( b )。

a、主码

b、候选码

c、外码

d、联系

2. 以下不属于数据库模型的三要素的是( c )。

a、数据结构

b、数据操作

c、数据控制

d、完整性约束

3. 以下对关系性质的描述中,哪个是错误的?( b )

a、关系中每个属性值都是不可分解的

b、关系中允许出现相同的元组

c、定义关系模式时可随意指定属性的排列次序

d、关系中元组的排列次序可以任意交换

二、填空题

1. 数据管理发展的三个阶段是人工管理、文件管理和数据库管理。

2. 数据库系统的三级模式包括逻辑数据模型(逻辑模型)、逻辑数据模型(概念模型)、物理数据模型(物理模型)。

三、思考题

1. 数据库管理系统的主要功能有哪些?

1)数据定义功能。dbms提供相应数据语言来定义(ddl)数据库

结构,它们是刻画数据库框架,并被保存在数据字典中。

2)数据存取功能。dbms提供数据操纵语言(dml),实现对数据

库数据的基本存取操作:检索,插入,修改和删除。

3)数据库运行管理功能。dbms提供数据控制功能,即是数据的安

全性、完整性和并发控制等对数据库运行进行有效地控制和管理,

以确保数据正确有效。

4)数据库的建立和维护功能。包括数据库初始数据的装入,数据库

的转储、恢复、重组织,系统性能监视、分析等功能。

5)数据库的传输。dbms提供处理数据的传输,实现用户程序与dbms之间的通信,通常与操作系统协调完成。

2. 思考关系规范化的过程。

答:对于存在数据冗余、插入异常、删除异常问题的关系模式,应

采取将一个关系模式分解为多个关系模式的方法进行处理。一个低

一级范式的关系模式,通过模式分解可以转换为若干个高一级范式

的关系模式,这就是所谓的规范化过程。

3. 思考数据库设计的步骤。

答:1需求分析、2概念设计阶段、3逻辑结构设计阶段、4数据库

物理结构设计阶段、5数据库实施阶段、6数据库运行和维护阶段。

一、选择题

1、oracle 11g不具备的版本是(c)

a.个人版

b.标准版

c. 扩展板

d.企业版

2、oracle 数据库的数据字典不能做的工作有(b)

a. 查找oracle数据库用户信息

b. 查找oracle数据库表中的信息

c. 查找oracle数据库模式对象的信息

d. 查找oracle数据库存储结构的信息

二、填空题

1、 oracle体系结构由内存结构、进程结构和存储结构组成。

2、 oracle数据库中,段包括数据段、牵引段、回滚段和临时段四种。

3、 oracle物理存储结构包含三种数据文件:控制文件、数据文件

和日志文件。

三.思考题

1. 名词解释:

数据块:是数据块使用的i/o最小单元,也是最基础的存储单位,又称逻辑块或oracle块。数据块包括块头和存储区。

区:是数据存储空间分配的逻辑单元,,在一个段中可以存在多个

区间,区间是数据一次性预留的一个较大的存储空间。

段:是对象在数据库中占用的空间。段和数据库对象是一一对应的,但段是从数据库存储的角度来看。一个段只能属于一个表空间,一

个表空间可以有多个段。表空间。

2. oracle的物理结构主

要包括那些类型的文件?

答:控制文件、数据文件、日志文件。(还包括参数文件)

第三章

一:选择题

1.下列操作系统中,不能运行oracle 11g的是( c )。

a.windows

b.linux

c.macintosh

d.unix 2.以下不属于oracle安装

前的准备工作的是( c )。

a.对服务器进行正确的网络配置,并且记录ip地址、域名的网络配置信息,如果采用动态ip,需先将microsoft loopback adapter配置为系统的主网络适配

b.卸载其他的数据库管理系统

c.如果服务器上运行有其他oracle服务,必须在安装前将他们全部停止

d.关闭windows防火墙和某些杀毒软件

二:填空题

1.卸载oracle需要经过停止oracle服务、卸载oracle组件和删除遗留

成分三个步骤。

2.oracle数据库监听器的启用有3种方法:利用enterprise manager、用监听器控制实用程序和利用net manager提供的“监听程序”。

第四章

一、选择题

1、sql语言中不属于数据定义的命令动词是(c)。

a、create

b、drop

c、grant

d、alter

2、在同样的条件下,下面的哪个操作得到的结果集有可能最多?(d)

a、内连接

b、左外连接

c、右外连接

d、完全外连接

3、下列操作权限中,在视图上不具备的是(c)。

a、select

b、alter

c、delete

d、insert

二、填空题

1、sql语言的功能主要包括、和三类。

2、希望删除查询结果集中重复的行,需要使用关键字。

3、常用的统计函数有、min、max、和avg。

三、实训题

1、登陆oracle,进入hr方案,使用desc和select命令查看各个表的结构以及现有的数据。

代码如下:

(1)a.查看jobs表的结构:desc jobs;

b.查看jobs 表的部分数据:select * from jobs;

(2)a.查看employees表的结构:desc employees;

b.查看employees表的部分数据:select * from employees ;

(3)a.查看表的结构:desc departments;

b.查看departments表的部分数据:select * from departments;(4)a.查看regions表的结构:desc regions;

b.查看regions表的部分数据:select * from regions;

(5)a.查看locations表的结构:desc locations;

b.查看locations表的部分数据:select * from locations;

(6)a.查看countries表的结构:desc countries;

b.查看countries表的部分数据:select * from countries;

(7)a.查看job_jistory表的结构:desc job_jistory;

b.查看job_jistory表的部分数据:select * from job_jistory;

2、在hr方案中进行表的创建、修改和删除(create、drop、alter 命令)。

创建表:create table manager(

manager_id number2(6) not null unique,

first_name varchar2(20),

last_name varchar2(25),

dept_id varchar2(10));

修改:alter table manager add sex varchar2(2);

alter table manager modify manager_id number(8); 删除:alter table manager drop unique(manager_id) ;

drop table manager;

3. 在hr方案中完成对employees表以及相关各表的各种查询操作(where子句

group by子句以及各种连接等)。

代码如下:

查询: select * from hr.countries,hr.departments,hr.employees; group by 语句:select department_id,count(*),avg(salary)

from employees

group by rollup(department_id);

各种连接:

(1)简单连接:select employees.*,jobs.* from

employees,departments;(连接employees和

departments)

(2)内链接:select https://www.sodocs.net/doc/6812001295.html,st_name,jobs.job_title

from employees inner join jobs on

employees.job_id=jobs.job_id

(3)自然连接:select employees

https://www.sodocs.net/doc/6812001295.html,st_name,em.first_name,em.employee_id,dep.depa

rtment_name

from employees em natural join departments dep

where dep.department_name=”sales”

(4)外连接:select em.employee_id,https://www.sodocs.net/doc/6812001295.html,st_name,

dep.department_name

from employees em left outer join departments dep

on em.department_id = dep. department

where em.job_id=’it_prog’; (左连接)

(5)自身连接:select employees_id ,last_name,job_id

from empoyees

order by employee_id

4. 在hr方案中,针对employees表进行数据的创建、修改和删除操作(insert、

update、delete命令)。

代码如下:

insert: insert into employees

values(‘2001’,’tom’,’king’,’sking’,516.123.3456,1999.12.12,’it_pr og’,20006,103,60)

update:update employees

set salary=salay+100

where job_id=”it_prog”;(it_prog部门的薪水涨100$)delete:delete from employeeswhere first_name=’tom’;(删除真名叫tom的人的信息)

第五章

一、选择题

1、下列属于oracle pl/sql的数据类型是(a)。

a.date

b.time

c.datetime

d.smalldatetim

e.

2、下面不属于oracle pl/sql 的参数类型是(d)。

a.in

b.out

c.inout

d.null

二、填空题

1、显式游标的处理包括、、和4个步骤。

2、包有两个独立的部分:和。

3、触发器的类型包括和

三、实训题

1、实现一个游标,完成对emplouees表的遍历;

sql create or replace procedure show_all_employees

2 as

3 emp_row employees%rowtype;

4 cursor emp_cur is select * from employees;--声明游标

5 begin

6 open emp_cur;--打开游标

7 loop

8fetch emp_cur into emp_row;--提取行

9exit when emp_cur%notfound;

10dbms_output.put_line(雇员id是:||emp_row.employee_id|| 姓名是:||emp_row.first_name|| ||emp_https://www.sodocs.net/doc/6812001295.html,st_name);

11end loop;

12close emp_cur;--关闭游标

13 end;

14 /

procedure created

sql execute show_all_employees();

2、实现一个过程,完成对emplouees表中job_id为it_prog的员工salary的增加,增

加额度为800;

create or replace procedure salary_add(jobid in

employees.job_id%type,adds in employees.salary%type)

2 as

3 begin

4 update employees set salary=salary+adds where

job_id=jobid;

【篇二:oracle数据库管理与应用实例教程(刘志成)课

后习题及答案】

情况oem的url地址是https://sd04:1158/em(其中sd04为机器名)

2.oracle9i发布于2001,i代表internet,11g发布于2007,g

代表grid(网格)

3.在oracle内存结构中,保存正在执行或可能执行的代码的区是代码区

4.在oracle进程结构中,用于实现进程监控功能的进程是pmon 1.oracle数据库系统的物理存储结构主要由3类文件组成,分别为数据文件、重做日志文件、控制文件。

2.一个表空间物理上对应一个或多数据文件

3.在oracle的逻辑存储结构中,根据存储数据的类型,可以将段分成为数据段、索引段、回滚段、lob段和临时段。

1.在设计表时,对于邮政编码最适合的数据类型是char

2.在alter table语句中,如果要删除列,可以通过指定drop column关键字来实现。

3.如果需要在表中插入一批已经存在的数据,可以在insert语句中使用select语句。 4创建一个update语句来修改goods表中的数据,并且把每一行的t-id值都改成15,应该使用的sql语句是update scott.goods set t_id=’15’

5.使用desc命令可以显示表的结构信息

6.两个表的主关键字和外关键字的数据应该对应一致,这是属于引用完整性,通常可以通过主键和外键来实现。

7.unique约束通过确保在列中不输入重复值保证一列或多列的实体完整性。

1.在select语句中选择满足条件的记录使用where关键字,分组之后进行选择使用having关键字

2.用来返回特定字段中所有值得总和的聚合函数是sum

3.编写查询语句时,使用%通配符可以匹配多个字符。

18.集合运算符union实现集合的并运算,操作符intersect实现了对集合的交运算,而minus则实现了减运算

19.如果要定义只读的视图,可以在创建视图时使用read only关键字

20.删除视图的pl\sql语句是drop view [用户方案.]视图名

21.在使用create index创建索引时,使用bitmap关键字可以创建位图索引

22.聚集(cluster)是存储表数据的可选择的方法。一个聚集是一组表,将具有同一公共列值的行存储在一起,并且它们经常一起使用,表中相关的列称为聚集键

23.在为表中某个列定义primary key约束pk_id后,则系统默认

创建的索引名为pk_id

24.如果表中某列的基数比较低,则应该在该列上创建反向索引

25.如果要获知索引的使用情况,可以通过查询dba_indexes视图,而要获知索引的当前状态,可以查询index_stats视图。

26. 在oracle的pl/sql程序中,除了可以使用oracle规定的数据类型外,还可以使用%type类型的变量,由系统根据检索的数据表列

的数据类型决定该变量的类型,也可以使用%rowtype类型的变量用来一次存储从数据表中检索的一行数据。

27. sysdate函数可以获得当前系统的日期,substr(s,start,len)函

数可以实现从指定的字符串中取指定长度的字符串。

28. 用来变异存储过程的pl/sql语句是alter procedure,create function语句可以用来创建函数。

29. 要从服务器游标中检索特定的一行,可以使用fetch 游标名 into

语句,使用 close 游标名可以关闭指定的游标。

30. 一个事务所做的修改必须能够与其他事务所做的修改隔离开来,这是事务的隔离性isolation特性。

31. 可以使用commit语句进行显式事务的提交。

32. 根据服务器或数据库中调用触发器的操作不同,oracle的触发

器分为dml触发器、替代触发器系统事件触发器和用户事件触发器。

33. :old变量表用于存储delete和update语句所影响的行的值。

34. 查询user_triggers数据字典可以查看触发器的类型等信息。

35. before和after制定了触发器的出发时间。当为一个表配置了约束时,它们将会特别有用,before可以规定oracle在应用约束前调

用触发器,而after规定在应用约束后调用触发器。

36. 在oracle数据库中将全线分为两类,即系统权限和用户权限。

系统权限是指在系统级控制数据库的存取和使用机制,用户权限是

指在模式对象上存取和使用的机制。

37. 角色是具有名称的一组相关权限的组合。

38. 在用户连接到数据库后,可以查询数据字典user_users了解用

户所具有的的系统权限。

39. 在执行完全数据库备份之前,应该确定备份哪些文件,通过查询v$datafile视图可以获取数据文件的列表。

40. 为了使用oracle提供的exp命令,必须为exp命令分配

imp_full_database角色需要的所有特权。

41. oracle提供recover命令用于执行数据恢复操作,提供了imp 实现数据的导入。

42. 在exp命令中通过parfile选项可以指定包含导出参数列表的文件名,即参数文件。

43.在3层或多层系统中业务逻辑层可以实现数据库的存取及应用程序的商业逻辑计算功能。

44. 在jdbc的api中statement接口提供了3种执行sql语句的方法,其中用于产生单个结果集的方法是executequery ()

【选择题】

1.系统全局区是oracle系统为实现分配的共享内存结构

2.在oracle进程结构中,检查点进程是ckpt

3.下列用于启动listener服务的命令是lsctl start listener

4.在安装oracle时,自动开启了的账号是system。

1.下列选项不是oracle实例组成部分的是控制文件

2.当数据库在归档模式下时,如果发生日志切换,为了保证arch 3.oracle数据库中最小的存储分配单元是数据块

数据块组成。

1. update语句可以修改数据表中的一行或者多行数据

2. delete语句中用where语句或子句来指明表中所要删除的行。4.能正确描述oracle 数据库的逻辑存储结构:表空间由段组成、段由盘区组成、盘区由

3.使用什么命令可以去除表中所有的内容 truncate

4.如果要保证商品数量在1-100,可以通过check约束来实现

5.如果要保证在goods表中添加记录时,自动填写商品类别编号t-id为01,可以通过default约束来实现。

1.要查询goods表中商品中含有“电冰箱”的商品情况,可用(select*from goods where g_name like ‘%电冰箱%’)命令。

2.如果要判断某一指定值不在某一查询结果中,可以使用(int子查询)。

3.连接有内连接、外连接和交叉连接,其中外连接只能对(无数)表进行。

4.使用关键字(distinct)可以把查询结果中的重复行屏蔽。

5.如果只需要返回匹配的列,则应当使用哪种连接(内连接)

6.如果使用逗号分隔连接查询2个表,其中一个表有20行,而另外一个有50,如果没有使用where子句,则返回多少行(1000)

20.对于视图的描述错误的是通过视图看到的数据是真正物理存储的数据

21.属于视图的优点的是视点集中、简化操作、增强安全性(简化用户权限的管理)、从异构源组织数据;不是视图的优点的是数据物理独立

22.索引的描述正确的有表是否具有索引不会影响到所使用的sql 的编写形式;为表创建索引后,可以提高查询的执行速度;在为表创建索引后,oracle优化器将根据具体情况决定是否采用索引

23.下面的语句创建了全局分区索引 create index test index on student (stuno, sname) tablespace users

storage (initial 64k,next 32k);

24.关于约束与索引的说法正确的有在字段上定义primary key约束时会自动创建b树唯一索引;在字段上定义unique约束时自动创建一个b树唯一索引;默认情况下,禁用约束会删除对应的索引,而激活约束会自动重建的索引。

25. 下面关于存储过程的描述正确的是存储过程实际上是一组pl/sql 语句;存储过程预先被编译存放在服务器的系统表中;存储过程可以完成某一特定的业务逻辑。

26. 下面的函数不能进行数据类型转换的是ltrim能转换的是convert、to_number、cast

27. 下列哪个语句可以在sql plus中直接调用一个过程exec

28. 下面哪些不是过程中参数的悠闲模式out 是in、in out、out in

29. 如果创建了一个句为pkg_user的程序包,并在程序包中包含了名为test的过程。下列哪一个是对这个过程的合法调用?

pkg_user.test(10)

30. 可以引用下列哪个数据字典视图来查看软件包中包含的代码user package text

31. 以下与事务控制无关的关键字是declare有关的是rollback、commit、savepoint

32. oracle 11g中的锁不包括插入锁包括:共享锁、行级排他锁、排他锁

33. 下列关于避免死锁的描述不正确的是每个事务的执行时间尽可能的长正确的是:尽量避免并发地执行涉及修改数据的语句;要求每个事务一次就将所有要使用的数据全部加锁,否则就不予执行;预先规定一个锁定顺序,所有的事务都必须按这个顺序对数据进行锁定

34. 下列不可能在游标使用过程中使用的关键字是drop 可能的是open、close、fetch

35. 在定义游标时使用的for update子句的作用是执行sql语句的update语句

36. 对于游标for循环,一下哪一种说法是不正确的游标for循环不

需要定义游标正确的是循环隐含使用fetch获取数据;循环隐含使

用open打开记录集;终止循环操作也就关闭了游标

37. 下列哪个语句会终止事务end transaction

38. 删除触发器tr_user的正确命令是drop trigger tr_user

39. 关于触发器的描述不正确的是数据库管理员可以通过语句执行触发器正确的是它是一种特殊的存储过程;可以实现复杂的商业逻辑;触发器可以用来实现数据完整性

40. 下列哪些操作会同时影响到:new变量和:old变量? update

操作

41. 下列哪个数据库对象可以用来实现标间的数据完整性?触发器

42. 在创建触发器时,哪一个语句决定了触发器是正对每一行执行一次,还是针对一个语句执行一次? for each row

43. 下列哪个语句用于删除触发器? drop trigger

44. 下面哪一个不是系统权限system是系统权限的select table、alter table、create index。

45. 想在另一个模式中创建表,用户最少应该具有什么系统权限?create any table

46. 用户查询下列哪一个数据字典视图可以查看他向其他用户授予的对象权限? user tab privs

47. 下面哪个系统预定义角色允许一个用户创建其他用户? dba

48. 如果要启用所有角色,则应该使用哪一个命令? set role

enable all

49. 当数据库已经正常关闭时使用脱机备份,下列文件中不一定需要备份的文件是init_ora文件需要备份的是所有数据文件、所有控制

文件、所有联机重做日志

50. 数据库实例的用户、服务器或者后台进程出现链接不正常、用户会话被异常中断等情况,这些异常属于进程故障

51. 下列语句中用来标记联机表空间备份结束的是alter tablespace users end backup

52. 语句“recover database until cancel”;实现的是基于cancel

的恢复类型的恢复。

53.jdbc的api中用来获取结果集的对象是resultset

54. 下面关于b/s模式描述错误的是b/s一般面向相对固定的用户群,对信息安全的控制能力很强正确的是b/s建立在internet之上的;

b/s一般采用多重结构,要求构建相对独立的功能;b/s属于胖客户型

55. 在.net平台中,如果要使用odbc数据源的方式访问oracle数

据库,应使用的连接类是odbcconnection

56. 在https://www.sodocs.net/doc/6812001295.html,中,a、dataadapter对象提供连接dataset对象和

数据源的桥梁。

57. 下面关于https://www.sodocs.net/doc/6812001295.html,中dataset对象的描述错误的是对dataset操作就是对数据库的操作。正确的是dataset表示数据在内存中的缓存;dataset是https://www.sodocs.net/doc/6812001295.html,结构的主要组件;dataset是从数据源中检

索到的数据在内存中的缓存。

【篇三:oracle 10g数据库基础教程(第2版)孙风栋主

编课后实训答案】

03.dbf,大小为50mb。

alter tablespace users add datafile d:\users03.dbf size 50m;

2.为example表空间添加一个数据文件,文件名为example02.dbf,大小为20mb。alter tablespace example add datafile

d:\example02.dbf size 20m;

3.修改users表空间中的userdata03.dbf为自动扩展方式,每次扩

展5mb,最大为100mb。 alter database datafile

d:\userdata03.dbf autoextend on next 5m maxsize 100m;

4.修改example表空间中的example02.dbf文件的大小为40mb。 alter database datafile d:\example02.dbf resize 40m;

5.将表空间users中的数据文件users03.dbf更名为

userdata04.dbf,将表空间example中的数据文件example03.dbf

更名为example04.dbf。

alter tablespace users offline;

在磁盘d:\手动更改users03.dbf为userdata04.dbf

alter tablespace users rename datafile d:\users03.dbf to

d:\userdata04.dbf;

alter tablespace example offline;

在磁盘d:\手动更改example03.dbf为example04.dbf

alter tablespace example rename datafile d:\example03.dbf to d:\example04.dbf;

7.为数据库添加一个重做日志文件组,组内包含两个成员文件,分

别为redo4a.log和redo4b.log,大小分别为5mb。

alter database add logfile group 4

(d:\redo4a.log,d:\redo4b.log)size 5m;

8.为新建的重做日志文件组添加一个成员文件,名称为redo4c.log。 alter database add logfile member d:\redo4c.log to group 4;

9.将数据库设置为归档模式,并采用自动归档方式。

shutdown immediate

startup mount

alter database archivelog;

alter database open;

10.设置数据库归档路径为d:\oracle\backup。

alter system set log_archive_dest=d:\oracle\backup;

实验五

1.创建一个口令认证的数据库用户usera_exer,口令为usera,默

认表空间为users,配额为10mb,初始账户为锁定状态。

create user usera_exer identified by usera

default tablespace users quota 10m on users

account lock;

2.创建一个口令认证的数据库用户userb_exer,口令为userb。

create user userb_exer identified by userb;

3.为usera_exer用户授予cerate session 权限、scott.emp的select权限和update权限。同时允许该用户将获得的权限授予其他

用户。

grant create session to usera_exer with admin option;

grant select,update on scott.emp to usera_exer with grant option;

4.将用户usera_exer的账户解锁。

alter user usera_exer account unlock;

5.用usera_exer登录数据库,查询和更新scott.emp中的数据。同时,将scott.emp的select和updata权限授予用户userb_exer。 conn usera_exer/usera;

grant select,update on scott.emp to userb_exer;

6.禁止用户usera_exer将获得的create session权限再授予其他

用户。

revoke create session from usera_exer;

grant create session to usera_exer;

7.禁止用户usera_exer将获得的scott.emp的select权限和updata权限再授予其他用户。 revoke select,update on

scott.emp from usera_exer;

grant select,update on scott.emp to usera_exer;

8.创建角色rolea和roleb,将create table权限、scott.emp的insert权限和delete权限授予rolea;将connect,resource角色授

予roleb。

create role rolea;

create role roleb;

grant create table to rolea;

grant insert,delete on scott.emp to rolea;

grant connect,resource to roleb;

9.将角色rolea,roleb授予用户usera_exer。

grant rolea,roleb to usera_exer;

实验三

(1)使用sql命令创建一个本地管理方式下自动分区管理的表空间usertbs1,其对应的文件大小为20mb。

create tablespace usertbs1 datafile d:\data1.dbf size 20m;

(2)使用sql命令创建一个本地管理方式下的表空间usertbs2,

要求每个分区大小为512k。

create tablespace usertbs2 datafile d:\data2.dbf size 20m

extent management local uniform size 512k

(3)修改usertbs1表空间的大小,将表空间的数据文件改为自动

扩展方式,最大值为100mb。

alter database datafile d:\data1.dbf autoextend on maxsize

100m;

(4)为usertbs2表空间添加一个数据文件,以改变表空间的大小。 alter tablespace usertbs2 add datafile d:\data2-2.dbf size 20m;(5)使用sql命令创建一个本地管理方式下的临时表空间temptbs,并将表空间作为当前数据库实例的默认临时表空间。

create temporary tablespace temptbs tempfile d:\temp1.dbf

size 20m;

alter database default temporary tablespace temptbs;

(6)使用sql命令对usertbs1表空间进行联机和脱机状态转换。

alter tablespace usertbs1 offline;

alter tablespace usertbs1 online;

(7)创建一个回滚表空间undotbs,并作为数据库的撤销表空间。

create undo tablespace undotbs datafile d:\undo1.dbf size

20m;

(8)删除表空间usertbs2,同时删除该表空间的内容以及对应的操作文件系统。drop tablespace usertbs2 including contents and datafiles;

(9)查询当前数据库所有的表空间及其对应的数据文件信息。

select tablespace_name,file_name from dba_data_files;

实验四

(1)按下表结构利用sql语句创建class、student俩个表。

create table class(cno number(2) primary key,

cname varchar2(20),

num number(3));

(2)为student表添加一个延迟的外键约束,其cno列参照class 表的cno列。create table student(sno number(4) primary key,

sname varchar2(10) unique,

sage number,

sex char(2),

cno number(2));

(3)为student表的sage列添加一个检查约束,保证该列取值在0~100之间。

alter table student

add constraint s_fk

foreign key(cno) references class(cno)

on delete cascade

deferrable initially immediate;

(4)为student表的sex列添加一个检查约束,保证该列取值为“m”或“f”,且默认值为m。

alter table student

add constraint s_ck check(sage between 0 and 100);

(5)在class表的cname列上创建一个唯一性索引。

alter table student

add constraint s_ck2 check(sex in(m , f)) modify sex default m;(6)利用子查询分别创建一个事务级的临时表和会话级的临时表,其结构与student表的结构相同。

create global temporary table temp1

on commit delete rows

as

select * from student;

create global temporary table temp2

on commit preserve rows

as

select * from student;

(7)创建一个student_range表,按学生年龄分别为3个区

create table student_range(

sno number(4) primary key,

sname varchar2(10) unique,

sage number,

sex char(2),

cno number(2))

partition by range(sage)

(partition part1 values less than(20) tablespace example,

partition part2 values less than(30) tablespace orcltbs1,

partition part3 values less than(maxvalue) tablespace

orcltbs2);

(8)创建一个student_list表,按学生性别分为2个区。

create table student_list(

sno number(4) primary key,

sname varchar2(20) unique,

sage number,

sex char(2),

cno number(2))

partition by list(sex)

(partition man values(m) tablespace orcltbs1,

partition woman values(f) tablespace orcltbs2);

(9)创建一个起始值为1000的序列,步长为2,最大值为100000,不可循环。

create sequence sequ1 increment by 2 start with 10000 maxvalue 100000 nocycle;

(297)实训题:

(1)编写一个pl/sql块,输出所有员工的员工姓名,员工号,工资和部门号。

declare

cursor c_emp is select * from scott.emp;

v_emp c_emp%rowtype;

begin

open c_emp;

loop

fetch c_emp into v_emp;

exit when c_emp%notfound;

dbms_output.put_line(v_emp.ename|| ||v_emp.empno||

||v_emp.sal|| ||v_emp.deptno);

end loop;

close c_emp;

end;

.

(2)编写一个pl/sql块,输出所有比部门平均工资高的与员工信息。

declare

cursor c_emp is select * from emp where sal(select avg(sal) from scott.emp);

v_emp c_emp%rowtype;

begin

open c_emp;

loop

fetch c_emp into v_emp;

exit when c_emp%notfound;

dbms_output.put_line(v_emp.ename|| ||v_emp.sal);

end loop;

close c_emp;

end;

.

(3)编写一个pl/sql块,输出所有员工及部门领导的姓名,员工号及部门号。 declare

cursor c_emp is select e.ename,e.empno,e.deptno,m.ename mname

from emp e inner join emp m on e.empno=m.mgr;

v_emp c_emp%rowtype;

begin

dbms_output.put_line(empno||||deptno||||ename||||mname); for v_emp in c_emp

loop

dbms_output.put_line(v_emp.empno||||v_emp.deptno||||v_emp. ename|| ||v_emp.mname);

end loop;

end;

(4)查询姓为“smith”的员工信息,并输出其员工号、姓名、工资、部门号。如果该员工不存在,则插入一条新记录,员工号为2012,

员工姓名为“smith”,工资为7500,入职日期为“2002年3月5日”,部门号为50.如果存多个名为“smith”的员工,则输出所有名为“smith”的员工号、姓名、工资、入职日期、部门号l。

declare

v_emp emp%rowtype;

begin

select * into v_emp from scott.emp where ename=smith;

dbms_output.put_line(v_emp.empno||||v_emp.ename|| ||

v_emp.sal||||v_emp.hiredate||||v_emp.deptno);

exception

when no_data_found then

insert into scott.emp(empno,ename,sal,hiredate,deptno)

values(2012,smith,7500,5-3月-2002,50);

when too_many_rows then

for v_emp in (select * from scott.emp where ename=smith)

loop

dbms_output.put_line(v_emp.empno||||v_emp.ename||||

v_emp.sal||||v_emp.hiredate||||v_emp.deptno);

end loop;

end;

(182)实训题:

相关主题