国家开放大学《Oracle数据库编程》形考任务1-6参考答案.docx

上传人:国**** 文档编号:12221845 上传时间:2023-06-04 格式:DOCX 页数:20 大小:41.59KB
下载 相关 举报
国家开放大学《Oracle数据库编程》形考任务1-6参考答案.docx_第1页
第1页 / 共20页
亲,该文档总共20页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

国家开放大学《Oracle数据库编程》形考任务1-6参考答案.docx

《国家开放大学《Oracle数据库编程》形考任务1-6参考答案.docx》由会员分享,可在线阅读,更多相关《国家开放大学《Oracle数据库编程》形考任务1-6参考答案.docx(20页珍藏版)》请在冰点文库上搜索。

国家开放大学《Oracle数据库编程》形考任务1-6参考答案.docx

国家开放大学《Oracle数据库编程》形考任务1-6参考答案

题目随机,下载后利用查找功能完成学习任务

形考任务1

1.参照教材中PL/SQL代码编写程序,检测视图clu$是否存在,并给出提示信息。

答:

PL/SQLDeveloper是一个集成开发环境,专门开发面向Oracle数据库的应用。

PL/SQL也是一种程序语言,叫做过程化SQL语言(ProceduralLanguage/SQL)。

PL/SQL是Oracle数据库对SQL语句的扩展。

在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。

PL/SQL只有Oracle数据库有。

MySQL目前不支持PL/SQL的。

(1)视图介绍

视图是一个逻辑表,也是一个非常重要的方案对象。

实际上,视图是查看表的一种方式。

视图是对根据预定义的选择标准由一个或多个行的集合建立起来的动态表的静态定义。

视图可以用来定义来自一个或多个表的行和列的多种连接。

通过视图,可以查看到表中的数据。

视图是查看数据库表中的数据的一种方法。

视图提供了存储预定义的查询语句作为数据库中的对象以备以后使用的能力。

视图只是一种逻辑对象,是一种虚拟表,并不是物理对象,因为视图不占物理存储空间。

在视图中被查询的表称为视图的基表。

通常通过它就像使用表一样访问数据。

要记住通过视图引用的数据通常来自它后面的基表。

视图应该使用一致的命名约定。

例如,给所有的视图增加一个前缀,如每一个视图都以v_、view_或vw_开头。

这样,可以使用户在看到名称时就立即知道它代表的对象是视图。

(2)视图好处

使用视图的优点,如集中用户使用的数据、掩码数据的复杂性、简化权限管理以及为向其他应用程序输出而重新组织数据等。

集中用户使用的数据:

视图创建了一种可以控制的环境,即表中的一部分数据允许访问,而另外一部分数据则不允许访问。

那些没有必要的,敏感的或不适合的数据都从视图中排除掉了。

掩盖数据库的复杂性:

视图把数据库设计的复杂性与用户屏蔽分开。

这样就为数据库开发人员提供了一种改变数据库的设计而不影响用户使用的能力。

用户只需要查询视图就可以得到所需的数据,而不用编写复杂的查询语句或者执行脚本。

简化用户权限的管理:

数据库所有者可以把视图的权限授予需要查询的用户,而不必将基表中某些列的查询权限授予用户。

(3)视图创建

可以使用3种方法创建视图,一种方法是使用createview语句,另一种方法是使用DBAstudio图形工具,还可以使用创建视图向导来创建。

使用createview语句创建视图

create[orreplace][force|noforce]view[user.]viewName

(column[,column2]...)

asquery

[withcheckoption[Constraintconstraint]]

[withreadonly]

orreplace表示如果同名的视图存在,则使用新视图替代已有的视图。

force强制创建视图,不考虑基表是否存在,是否具有使用基表数据的权限。

noforce只有基表存在且具有权限,才可以创建视图。

user表示创建视图的用户名。

viewName表示将要在数据库上创建的视图名称。

column指定视图中的列名。

query表示生成视图的select语句。

withcheckoption指定强制检查通过视图修改数据的操作。

constraint表示指定的约束名称。

withreadonly:

表示创建的视图只能检索数据,不能修改数据。

形考任务2

1.备份user_tables.table_name到表tab1,备份dba_tables.table_name到表tab2,使用一条select语句查询表tab1和tab2,其中tab1的数据全部输出,tab2数据仅输出和tab1重复部分。

答:

数据导出:

(1)将数据库orcl完全导出,用户名system密码manager导出到D:

\daochu.dmp中expsystem/manager@orclfile=d:

\daochu.dmpfull=y

(2)将数据库中system用户与sys用户的表导出expsystem/manager@orclfile=d:

\daochu.dmpowner=(system,sys)

(3)将数据库中的表table1、table2导出expsystem/manager@orclfile=d:

\daochu.dmptables=(table1,table2)

(4)将数据库中的表table1中的字段filed1以"00"打头的数据导出expsystem/manager@orclfile=d:

\daochu.dmptables=(table1)query=\"wherefiled1like'00%'\"

上面是常用的导出,对于压缩我不太在意,用winzip把dmp文件可以很好的压缩。

不过在上面命令后面加上compress=y就可以了

数据的导入:

(1)将D:

\daochu.dmp中的数据导入orcl数据库中。

impsystem/manager@orclfile=d:

\daochu.dmp

上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。

在后面加上ignore=y就可以了。

(2)将d:

\daochu.dmp中的表table1导入

impsystem/manager@orclfile=d:

\daochu.dmptables=(table1)

基本上上面的导入导出够用了。

不少情况我是将表彻底删除,然后导入。

注意:

你要有足够的权限,权限不够它会提示你。

数据库时可以连上的。

可以用tnspingorcl来获得数据库orcl能否连上

附录一:

给用户增加导入数据权限的操作

第一,启动sql*puls

第二,以system/manager登陆

第三,createuser用户名IDENTIFIEDBY密码(如果已经创建过用户,这步可以省略)

第四,GRANTCREATEUSER,DROPUSER,ALTERUSER,CREATEANYVIEW,DROPANYVIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,

DBA,CONNECT,RESOURCE,CREATESESSIONTO用户名字

第五,运行-cmd-进入dmp文件所在的目录,impuserid=system/managerfull=yfile=*.dmp或者impuserid=system/managerfull=yfile=filename.dmp

形考任务3

一、单项选择题

1.Oracle数据库的管理员是()。

A.SYS

B.root

C.admin

D.administration

2.“altertabletab1dropcolumncol1;”的作用是()。

A.删除了数据表tab1的字段col1

B.为数据表tab1增加了字段col1

C.修改数据表tab1的字段column名称为col1

D.以上都不对

3.count()的作用是()。

A.数据统计

B.计时器

C.累加器

D.以上都不对

4.desc的作用是()。

A.查看表/视图的结构

B.改变表/视图的结构

C.扩展表/视图的结构

D.删除表/视图

5.count()属于()。

A.单行函数

B.分组函数

C.数值函数

D.转换函数

6.substr()函数的作用是()。

A.取字符串子串

B.连接两个字符串

C.转换字符串

D.复制字符串

7.JOIN…ON子句的作用是()。

A.用于产生笛卡儿积

B.自动找到匹配的关联字段,消除笛卡儿积

C.指定一个可以消除笛卡儿积的关联字段

D.指定一个可以消除笛卡儿积的关联条件

8.“fromuser_tablesu”中的u是()。

A.user_tables的别名

B.user_tables的一个字段

C.数据表名

D.语法错误

9.DBMS目前采用的数据模型中最常用的是()模型。

A.面向对象

B.层次

C.网状

D.关系

ca命令作用是()

A.启动数据库配置程序

B.配置网络组件

C.网络CA认证工具

D.启动数据库监听程序

11.oracle数据库中的bin_to_num函数的作用是?

()

A.把二进制数值转换为对应的十进制数值

B.把二进制数值转换为对应的十六进制数值

C.把二进制数值转换为对应的八进制数值

D.把二进制数值转换为对应的浮点数

12.oracle数据库中的lower函数的作用是?

()

A.将字符转换成小写

B.将字符转换成大写

C.将字符转换成数值

D.将数值转换成字符

13.oracle数据库中的last_day函数的作用是?

()

A.返回当前月份的最后一天日期

B.返回当前周的最后一天日期

C.返回指定日期的当前月份的最后一天日期

D.返回指定日期的当前周的最后一天日期

14.orderby中desc的作用是()

A.查看表结构

B.降序

C.升序

D.以上都不对

15.sqlplus/nolog指令的意思是?

()

A.不进行sqlplus的登录

B.sqlplus登录时不进行日志记载

C.sqlplus登录时使用用户名密码

D.sqlplus登录时不使用用户名密码实现空连接

16.下列哪种不是DML语句是()。

A.insert

B.alter

C.update

D.delete

17.下面选项中有关连接描述错误的是()

A.Innerjoin内连接

B.leftjoin左连接

C.rightjoin右连接

D.outerjion外连接

18.在Oracle数据库中,删除一个表,那么对建立在该表上的索引产生的结果是()

A.没有影响

B.索引同时被删除

C.索引失效

D.索引中的值为空

19.删除表使用的语句是()。

A.deletetable

B.closetable

C.deltable

D.droptable

20.哪个是按照一定的数据模型组织的、长期存储在计算机内,可为多个用户共享的数据的集合。

()

A.数据库系统

B.数据库

C.关系数据库

D.数据库管理系统

21.在ORACLE中,TRUNCATE命令的作用是()

A.删除表

B.删除表中全部数据

C.删除表中全部列定义

D.删除表中全部外键定义

22.哪个不是多行子查询的运算符()

A.IN

B.ANY

C.>

D.ALL

23.数据库系统的基础是()。

A.数据结构

B.数据库管理系统

C.操作系统

D.数据模型

24.系统中有权利启动和关闭数据库的用户是:

()。

A.hr

B.user

C.system

D.scott

二、判断题

25.DML实现对数据的增、删、改、查等操作。

(√)

26.DML是数据定义语言。

(×)

27.数据表名可以修改。

(√)

28.数据表是一个二维的数据结构,由字段和对应数据构成数据存储的结构。

(√)

29.OracleSQL对标准SQL做了实现及扩展。

(√)

30.orderby默认情况下按升序排序。

(√)

31.sysdate()函数可以得到系统的当前时间。

(√)

32.to_char(x[,f])函数把字符串或时间类型x按格式f进行格式化转换为字符串类型。

(√)

33.SQL语句中有多个数据表时SQL引擎会按照自左向右的顺序处理from子句后面的数据表。

(×)

34.INITCAP(列名|表达式):

将每个单词的第一个字母转换成大写。

(√)

35.多个数据表时from子句后面表名顺序无所谓。

(×)

36.MONTHS_BETWEEN:

返回两个日期类型数据之间间隔的整月数。

(×)

37.Oracle支持5种类型的约束:

notnull、unique、check、primarykey、foreignkey。

(√)

38.Oracle数据库中可以对约束进行禁用,禁用约束可以在执行一些特殊操作时候保证操作能正常进行。

(×)

39.Oracle数据库中字符串和日期必须使用双引号标识。

(×)

40.oracle数据库系统中,启动数据库的第一步是启动一个数据库实例。

(√)

41.SUM和AVG函数分别返回每组的总和及平均值_____。

(√)

42.为了节省存储空间,定义表时应该将可能包含NULL值的字段放在字段列表的末尾。

(√)

43.修改表时,可以指定新添加列的位置。

(×)

44.单行函数对单行操作,每行返回一个或多个结果。

(×)

45.使用DELETE语句删除表中的行记录,不能rollback。

(×)

46.在连接操作中,如果左表和右表中不满足连接条件的数据都出现在结果中,那么这种连接是全外连接_____。

(√)

47.自然连接是根据两个表中同名的列而进行连接的,当列不同名时,自然连接将失去意义。

(√)

47.数据处理的经过4个阶段,即:

人工管理阶段、文件系统阶段、数据库系统阶段、大数据系统阶段。

(×)

48.使用集合运算时列的数据类型、列数可以不一致。

(×)

49.空值在升序排列中排在最开始,在降序排列中排在最后。

(×)

50.一个表可以有三个主键。

(×)

形考任务4

1.创建一个存储过程,实现在user_tables查询参数给出的表名是否存在,并从存储过程中返回结果。

答:

创建一个名称为sch的数据表,表结构如表1所示,将表2中的数据插入sch表中。

表1:

字段名

数据类型

主键

外键

非空

唯一

自增

id

int(10)

name

varchar(50)

glass

varchar(50)

表2:

id

name

glass

1

xiaoming

glass1

2

xiaojun

glass2

第一步:

创建一个sch表,并向sch表中插入表2中的数据,代码如下:

mysql>createtablesch

->(

->idint(10),

->namevarchar(50),

->glassvarchar(50)

->);

QueryOK,0rowsaffected(0.11sec)

mysql>insertintoschvalue(1,'xiaoming','glass1'),

->(2,'xiaojun','glass2');

QueryOK,2rowsaffected(0.05sec)

Records:

2Duplicates:

0Warnings:

0

mysql>descsch;

+-------+-------------+------+-----+---------+-------+

|Field|Type|Null|Key|Default|Extra|

+-------+-------------+------+-----+---------+-------+

|id|int(10)|YES||NULL||

|name|varchar(50)|YES||NULL||

|glass|varchar(50)|YES||NULL||

+-------+-------------+------+-----+---------+-------+

3rowsinset(0.00sec)

·1

·2

·3

·4

·5

·6

·7

·8

·9

·10

·11

·12

·13

·14

·15

·16

·17

·18

·19

·20

·21

·22

通过select*fromsch来查看插入表格的内容,SQL语句如下:

id

name

glass

1

xiaoming

glass1

2

xiaojun

glass2

第二步:

创建一个存储函数用来统计表sch中的记录数。

mysql>createfunctioncount_sch()

->returnsint

->return(selectcount(*)fromsch);

QueryOK,0rowsaffected(0.05sec)

mysql>selectcount_sch();

+-------------+

|count_sch()|

+-------------+

|2|

+-------------+

1rowinset(0.00sec)

·1

·2

·3

·4

·5

·6

·7

·8

·9

·10

·11

·12

创建的存储函数名称为count_sch,通过selectcount_sch()查看函数执行的情况,这个表中只有两条记录,得到的结果也是两条记录,说明函数成功执行。

第三步:

创建一个存储过程,通过调用存储函数的方法来获取表sch中的记录数和sch表中id的和。

创建一个存储过程add_id,同时使用前面创建的存储函数返回表sch中的记录数,计算出表中所有的id之和。

代码如下:

mysql>delimiter//

mysql>createprocedureadd_id(outcountint)

->begin

->declareitmpint;

->declarecur_idcursorforselectidfromsch;

->declareexithandlerfornotfoundclosecur_id;

->selectcount_sch()intocount;

->set@sum=0;

->opencur_id;

->repeat

->fetchcur_idintoitmp;

->ifitmp<10

->thenset@sum=@sum+itmp;

->endif;

->until0endrepeat;

->closecur_id;

->end//

QueryOK,0rowsaffected(0.06sec)

mysql>select@a,@sum//

+------+------+

|@a|@sum|

+------+------+

|NULL|NULL|

+------+------+

1rowinset(0.00sec)

mysql>delimiter;

·1

·2

·3

·4

·5

·6

·7

·8

·9

·10

·11

·12

·13

·14

·15

·16

·17

·18

·19

·20

·21

·22

·23

·24

·25

·26

·27

·28

表sch中只有两条记录,所有id的和为3,和预想的执行结果完全相同。

这个存储过程创建了一个cur_id的光标,使用这个光标来获取每条记录的id,使用repeat循环语句来实现所有id号相加。

几个小问题:

(1)MySQL存储过程和存储函数有什么区别?

本质上都是存储程序。

函数只能通过return语句返回单个值或表对象;存储过程不允许执行return,但可以通过out参数返回多个值。

函数限制比较多,不能用临时表,只能用表变量,还有一些函数都不可用。

存储过程的限制相对就比较少。

函数可以嵌sql语句中使用,可以在select语句中作为查询语句中的一个部分调用,而存储过程一般是作为一个独立的部分来执行。

(2)存储过程中的代码可以改变吗?

·MySQL还不提供对已存在的存储过程代码的修改。

如果必须修改存储过程,就必须使用drop语句删除之后再重新编写,或者创建一个新的存储过程。

(3)存储过程中可以调用其他存储过程吗?

存储过程包含用户定义的sql语句集合,可以使用call语句调用存储过程,当然在存储过程中也可以使用call语句调用其他存储程序,但是不能使用drop语句删除其他存储过程。

(4)存储过程的参数不能与数据表中的字段名相同。

在定义存储过程参数列表时,应注意把参数名与数据库表中的字段名区别开,否则将出现无法预期的结果。

(5)存储过程的参数可以使用中文吗?

一般情况下,可能会出现存储过程中传入中文参数的情况,例如,某个存储过程根据用户的名字查找该用户的信息,传入的参数值可能是中文。

这时需要在定义存储过程的时候,在后面加上charactersetgbk,不然调用存储过程中使用中文参数会出错,比如定义userInfo、存储过程,代码如下:

createprocedureuseInfo(Inu_namevarchar(50)charactersetgbk,outu_ageint)

形考任务5

一、单项选择题

1.使用()子句可以筛选分组后的各组数据。

A.where

B.groupby

C.orderby

D.having

2.“select*fromdba_data_fileswherebytes=max(bytes);”出错原因是()。

A.该语句语法正确

B.字段bytes不存在

C.拼写错误

D.分组函数不能使用在where子句中

3.子查询不能使用()语句。

A.orderby

B.groupby

C.where

D.in

4.删除存储过程sp_clu的语法是()。

A.dropproceduresp_clu;

B.deleteproceduresp_clu;

C.afterproceduresp_clu;

D.deletesp_clu;

5.“updatetab1setname='1234'whereid=1;”修改了()条记录。

A.1

B.0

C.>1

D.不确定

6.建立数据表的同时使用“check(id=10)”的作用是()。

A.建立了检查约束

B.指定了字段id的默认值

C.指定了字段id的大小

D.以上都不对

7.数据库约束状态默认是()。

A.enablevalidate

B.enablenovalidate

C.disablevalidate

D.disablenovalidate

8.事务中触发回滚后()操作会失效。

A.delete

B.update

C.insert

D.以上皆是

9.INTERSECT是()

A.交集

B.并集重复

C.并集不重复

D.补集

10.MINUS是()

A.交集

B.并集重复

C.并集不重复

D.补集

11.完全联合运算默认情况下输出()。

A.不排序

B.升序

C.降序

D.不确定

12.UNION是()

A.交集

B.并集重复

C.并集

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 成人教育 > 电大

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2