国开电大《Oracle数据库编程》形考任务16辅导资料.docx
《国开电大《Oracle数据库编程》形考任务16辅导资料.docx》由会员分享,可在线阅读,更多相关《国开电大《Oracle数据库编程》形考任务16辅导资料.docx(32页珍藏版)》请在冰点文库上搜索。
国开电大《Oracle数据库编程》形考任务16辅导资料
2021年国家开放大学电大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教学实践2
备份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
试题1
以下选项中,不属于PL/SQL异常的是()。
该题参考选项为:
系统异常
试题2
Oracle数据库的管理员是()。
该题参考选项为:
SYS
试题3
“altertabletab1dropcolumncol1;”的作用是()。
该题参考选项为:
删除了数据表tab1的字段col1
试题4
“altertabletab1modify(namechar(32));”的作用是()。
该题参考选项为:
修改了字段name的大小
试题5
count()的作用是()。
该题参考选项为:
数据统计
试题6
desc的作用是()。
该题参考选项为:
查看表/视图的结构
试题7
count()属于()。
该题参考选项为:
分组函数
试题8
substr()函数的作用是()。
该题参考选项为:
取字符串子串
试题9
JOIN…ON子句的作用是()。
该题参考选项为:
指定一个可以消除笛卡儿积的关联条件
试题10
“fromuser_tablesu”中的u是()。
该题参考选项为:
user_tables的别名
试题11
DBMS目前采用的数据模型中最常用的是()模型。
该题参考选项为:
关系
试题12
netca命令作用是()
该题参考选项为:
配置网络组件
试题13
oracle数据库中的bin_to_num函数的作用是?
()
该题参考选项为:
把二进制数值转换为对应的十进制数值
试题14
oracle数据库中的lower函数的作用是?
()
该题参考选项为:
将字符转换成小写
试题15
oracle数据库中的last_day函数的作用是?
()
该题参考选项为:
返回指定日期的当前月份的最后一天日期
试题16
orderby中desc的作用是( )
该题参考选项为:
降序
试题17
sqlplus/nolog指令的意思是?
()
该题参考选项为:
sqlplus登录时不进行日志记载
试题18
下列哪种不是DML语句是()。
该题参考选项为:
alter
试题19
下面选项中有关连接描述错误的是()
该题参考选项为:
outerjion外连接
试题20
不属于单行函数的特征的是:
( )
该题参考选项为:
单行函数不可以嵌套
试题21
删除表使用的语句是()。
该题参考选项为:
droptable
试题22
哪个是按照一定的数据模型组织的、长期存储在计算机内,可为多个用户共享的数据的集合。
()
该题参考选项为:
数据库
试题23
数据库系统的基础是()。
该题参考选项为:
数据模型
试题24
默认用户名scott的口令是()
该题参考选项为:
tiger
试题25
系统中有权利启动和关闭数据库的用户是:
()。
该题参考选项为:
system
试题26
DML实现对数据的增、删、改、查等操作。
该题参考选项为:
“对”。
试题27
DML是数据定义语言。
该题参考选项为:
“错”。
试题28
数据表名可以修改。
该题参考选项为:
“对”。
试题29
数据表是一个二维的数据结构,由字段和对应数据构成数据存储的结构。
该题参考选项为:
“对”。
试题30
OracleSQL对标准SQL做了实现及扩展。
该题参考选项为:
“对”。
试题31
orderby默认情况下按升序排序。
该题参考选项为:
“对”。
试题32
sysdate()函数可以得到系统的当前时间。
该题参考选项为:
“对”。
试题33
to_char(x[,f])函数把字符串或时间类型x按格式f进行格式化转换为字符串类型。
该题参考选项为:
“对”。
试题34
SQL语句中有多个数据表时SQL引擎会按照自左向右的顺序处理from子句后面的数据表。
该题参考选项为:
“错”。
试题35
INITCAP(列名|表达式):
将每个单词的第一个字母转换成大写
该题参考选项为:
“对”。
试题36
多个数据表时from子句后面表名顺序无所谓。
该题参考选项为:
“错”。
试题37
LAST_DAY:
返回指定日期每年最后一天的日期
该题参考选项为:
“错”。
试题38
MONTHS_BETWEEN:
返回两个日期类型数据之间间隔的整月数
该题参考选项为:
“错”。
试题39
Oracle支持5种类型的约束:
notnull、unique、check、primarykey、foreignkey
该题参考选项为:
“对”。
试题40
Oracle数据库中可以对约束进行禁用,禁用约束可以在执行一些特殊操作时候保证操作能正常进行
该题参考选项为:
“错”。
试题41
Oracle数据库中字符串和日期必须使用双引号标识
该题参考选项为:
“错”。
试题42
oracle数据库系统中,启动数据库的第一步是启动一个数据库实例
该题参考选项为:
“对”。
试题43
SUM和AVG函数分别返回每组的总和及平均值_____
该题参考选项为:
“对”。
试题44
为了节省存储空间,定义表时应该将可能包含NULL值的字段放在字段列表的末尾
该题参考选项为:
“对”。
试题45
修改表时,可以指定新添加列的位置
该题参考选项为:
“错”。
试题46
创建表时,default修饰的列,指定在插入或更新数据时,列的默认值
该题参考选项为:
“对”。
试题47
单行函数对单行操作,每行返回一个或多个结果
该题参考选项为:
“错”。
试题48
在连接操作中,如果左表和右表中不满足连接条件的数据都出现在结果中,那么这种连接是全外连接_____
自然连接是根据两个表中同名的列而进行连接的,当列不同名时,自然连接将失去意义{TRUE#回答错误#回答正确}
该题参考选项为:
“对”。
试题49
数据处理的经过4个阶段,即:
人工管理阶段、文件系统阶段、数据库系统阶段、大数据系统阶段
该题参考选项为:
“错”。
试题50
空值在升序排列中排在最开始,在降序排列中排在最后
该题参考选项为:
“错”。
形考任务4教学实践3
创建一个存储过程,实现在user_tables查询参数给出的表名是否存在,并从存储过程中返回结果。
创建一个名称为sch的数据表,表结构如表1所示,将表2中的数据插入sch表中。
字段名
数据类型
主键
外键
非空
唯一
自增
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阶段性测验2
试题1
使用()子句可以筛选分组后的各组数据。
该题参考选项为:
having
试题2
“select*fromdba_data_fileswherebytes=max(bytes);”出错原因是()。
该题参考选项为:
分组函数不能使用在where子句中
试题3
子查询不能使用()语句。
该题参考选项为:
orderby
试题4
删除存储过程sp_clu的语法是()。
该题参考选项为:
dropproceduresp_clu;
试题5
“updatetab1setname='1234'whereid=1;”修改了()条记录。
该题参考选项为:
不确定
试题6
建立数据表的同时使用“check(id=10)”的作用是()。
该题参考选项为:
建立了检查约束
试题7
数据库约束状态默认是()。
该题参考选项为:
enablevalidate
试题8
事务中触发回滚后()操作会失效。
该题参考选项为:
以上皆是
试题9
INTERSECT是()
该题参考选项为:
交集
试题10
MINUS是()
该题参考选项为:
补集
试题11
完全联合运算默认情况下输出()。
该题参考选项为:
不排序
试题12
UNION是()
该题参考选项为:
并集不重复
试题13
下列不属于Oracle数据库中的约束条件的是()。
该题参考选项为:
INDEX
试题14
下列关于提交事务的叙述哪一项是正确的?
()
该题参考选项为:
事务提交后,它对数据库所做的修改将永久保存到数据库中
试题15
关于ROWNUM的描述,下列正确的是( )
该题参考选项为:
ROWNUM经常用来做为分页查询。
试题16
函数avg的作用是()
该题