345 execs and answers.docx

上传人:b****4 文档编号:4177463 上传时间:2023-05-06 格式:DOCX 页数:14 大小:174.39KB
下载 相关 举报
345 execs and answers.docx_第1页
第1页 / 共14页
345 execs and answers.docx_第2页
第2页 / 共14页
345 execs and answers.docx_第3页
第3页 / 共14页
345 execs and answers.docx_第4页
第4页 / 共14页
345 execs and answers.docx_第5页
第5页 / 共14页
345 execs and answers.docx_第6页
第6页 / 共14页
345 execs and answers.docx_第7页
第7页 / 共14页
345 execs and answers.docx_第8页
第8页 / 共14页
345 execs and answers.docx_第9页
第9页 / 共14页
345 execs and answers.docx_第10页
第10页 / 共14页
345 execs and answers.docx_第11页
第11页 / 共14页
345 execs and answers.docx_第12页
第12页 / 共14页
345 execs and answers.docx_第13页
第13页 / 共14页
345 execs and answers.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

345 execs and answers.docx

《345 execs and answers.docx》由会员分享,可在线阅读,更多相关《345 execs and answers.docx(14页珍藏版)》请在冰点文库上搜索。

345 execs and answers.docx

345execsandanswers

第三章习题

一、填空题

1.数据库的存储结构就是数据库存储数据的方式,oracle数据库的存储结构分为()和(),()主要用于描述()的方式,而物理存储结构用于描述()。

2.()是oracle中可以使用的最大的逻辑存储结构,()是oracle逻辑存储结构中最小的I/O单元

3.表空间通过()来扩大,表空间的大小等于()。

4.表空间的类型(),(),();状态有:

(),(),()读写,只读,脱机;

二、问答题

1.在创建表空间时,其对应的物理数据文件需要提前创建吗?

2.在删除一个表空间时,如果没有删除对应的数据文件,那么该数据文件还可以使用吗?

3.表空间与数据文件的关系

三、语句练习

1、使用autoallocate方式创建表空间,数据文件为’e:

\t1_1.dbf’大小2M

2、修改上述表空间,增加一个2MB的文件t1_2.dbf

3、修改表空间t1,使其脱机

4、查询t1表空间空间名,状态,内容;

5、创建表student,包括id,name,address三个字段;

6、插入记录(’1’,’lisa’,’太原理工’)

7、创建student的同义词s1;

8、查询s1验证是否与student内容一样。

9、思考通过已经存在的表student直接创建另一张表student_copy,怎样弄?

并且能否实现创建表student_copy时不包含student的数据?

答案:

一、

1.逻辑存储结构,物理存储结构,逻辑存储结构,oracle内部组织和管理数据,oracle外部即操作系统中组织和管理数据的

2.表空间,数据块

3.数据文件,构成这些表空间的所有数据文件的大小之和

4、永久,临时,还原;读写,只读,脱机

二、

1、新建表空间时,不需要提前创建对应的数据文件,而且也不能单独创建不属于任何表空间的数据文件。

一个数据文件一旦创建成功,那么他必然对应一个表空间。

2、数据文件对应的表空间被删除后,如果其他表空间想要使用该数据文件,必须使用Reuse选项才可以。

3、表空间是oracle中可以使用的最大的逻辑存储结构,表空间在物理上与数据文件相对应,每一个表空间由一个或多个数据文件组成,一个数据文件只可以属于一个表空间,这是逻辑与物理的统一。

三、

1、Createtablespacet1

Datafile’e:

\t1_1.dbf’size2M

Autoallocate;

2、Altertablespacet1

Adddatafile’e:

\t1_1.dbf’size2M;

3、Altertablespacet1offline;

4、Selecttablespace_nametbs_name

Status,

Contents

Fromdba_tablespaces

Wheretablespace_name=’T1’;(注意表空间的名称必须全部用大写字母,否则查不到该表空间)

5.Createtablestudent

(idchar(5)primarykey,

Namevarchar(10),

Addressvarchar(50)

);

6、Insertintostudent

Values(’1’,’lisa’,’太原理工’);

7、Createsynonyms1forstudent;

8、Select*froms1;

9、Createtablestudent_copyasselect*fromstudent;

可以通过Createtablestudent_copyasselect*fromstudentwhere1=0;来实现,这样数据就不会复制到新建的表中;

第四章习题

一、填空

1.在检索数据时,如果使用()符号,表示检索所有的列。

2.在orderby子句中,()关键字表示升序排列,()关键字表示降序排列。

3.如果定义与组有关的搜索条件,可以把()子句添加到select语句中。

4.当进行模糊查询时,应该使用关键字()和通配符()或百分号“%”

5.where子句可以接受from子句输出的数据,而having子句则可以接受来自(),from或()子句的输出。

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

7.()函数返回某个字符的ASCII值,()函数返回某个ASCII值对应的字符。

8.子查询语句必须使用()括起来,否则无法判断子查询语句的开始和结束。

在子查询语句中,不能使用()子句。

二.选择题

1.下列那个子句在select语句中用于排序结果集?

()

A.having子句B.where子句C.from子句D.orderby子句

2.为了删除结果集中重复的行,可在select语句使用下列那个关键字?

()

A.allB.distinctC.spoolD.having

3.下列哪个关键字或子句用来限定查询结果集中的行?

A.selectB.whereC.updateD.insert

4.groupby子句作用是什么?

()

A.查询结果的分组条件B.组的筛选条件C.限定返回行的判定条件D.对结果集进行排序

5.having子句的作用是什么?

()

A.查询结果的分组条件B.组的筛选条件C.限定返回行的判定条件D.对结果集进行排序

6.有关子查询的描述,下列那一项是正确的?

()

A.子查询只允许在select语句中使用B.子查询没有必要使用括号括起来

C.子查询不允许嵌套D.子查询允许嵌套

7.当col_name取()值时,表达式col_name>any(5,10,13)为假

A.12B.11C.8D.2

三、查询练习

使用scott/tiger用户下的emp和dept表完成下列练习,表的结构说明如下:

Emp员工表(empno员工号/ename员工姓名/job工作/mgr上级编号/hiredate受雇日期/sal薪金/comm.佣金/deptno部门编号)

Dept部门表(deptno部门编号/dname部门名称/loc地点)

工资=薪金+佣金

1.列出至少有一个员工的所有部门。

(两个表联合查询,及groupby...having的用法)

2.列出薪金比“SMITH”多的所有员工。

(经典的自连接查询)

selectenamefromempwheresal>(selectsalfromempwhereenamelike'SMITH');

3.列出所有员工的姓名及其直接上级的姓名

selectename,(selectenamefromempwhereempnoin(a.mgr))fromempa;

4.列出受雇日期早于其直接上级的所有员工

selecte1.ename,e1.hiredate,e2.enamemgr,e2.hiredatefromempe1joinemp

e2one1.mgr=e2.empnoande1.hiredate

5列出所有“CLERK”(办事员)的姓名及其部门名称。

selecte.ename,d.dnamefromempejoindeptdone.deptno=d.deptnoande.joblike'CLERK';

6.列出最低薪金大于1500的各种工作

selectdistinctjobfromempwheresal>1500

7.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门(以emp表为主,左连接查询)

selectdname,emp.*fromdeptleftjoinempondept.deptno=emp.deptno;

8.列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。

(经典的两个表连接)

selectenamefromempwheredeptno=(selectdeptnofromdeptwherednamelike'SALES');

9.列出薪金高于公司平均薪金的所有员工。

(反复查自己)

selectenamefromempwheresal>(selectavg(sal)fromemp);

10.列出与“SCOTT”从事相同工作的所有员工。

(排除自己)

selectenamefromempwherejobin(selectjobfromempwhereenamelike'SCOTT')andename!

='SCOTT';

11.列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。

(any的用法,且排挤)

selectename,salfromempwheresal=any(selectsalfromempwheredeptno=30)anddeptno!

=30;

selectename,salfromempwheresalin(selectsalfromempwheredeptno=30)anddeptno!

=30;

12.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。

(max的用法)

selectsal,enamefromempwheresal>(selectmax(sal)fromempwheredeptno=30);

13.列出在每个(每个是关键字,对此groupby)部门工作的员工数量、平均工资和平均服务期限。

(经典的groupby用法)

**selectdeptno,count(*),avg(a.sal),avg(sysdate-HIREDATE)fromempagroupbydeptno;

selectdeptno,count(*),avg(a.sal),avg(to_number(to_char(sysdate,'yyyy'),'9999')-to_number(to_char(HIREDATE,'yyyy'),'9999'))fromempagroupbydeptno;

14.列出所有员工的姓名、部门名称和工资.(经典的两个表的连接查询,用具体的名称替换一个表中的主键的id(解决很多人在实际运用中会遇到的不能绑定多列的问题),也可用where来查询,与题5比较)

selectename,sal,(selectdnamefromdeptawherea.deptno=b.deptno)asdnamefromempb;

selectename,dname,salfromempjoindeptonemp.deptno=dept.deptno;

15.列出所有部门的详细信息和部门人数。

(因为是*,将显示dept和后面临时表b的全部字段(注意:

不只是dept的字段,注意*号))

select*fromdeptaleftjoin(selectdeptno,count(*)fromempgroupbydeptno)bona.deptno=b.deptno;

selectd.*,cfrom(select*fromdept)dleftjoin(selectcount(*)c,deptnofromempgroupbydeptno)eone.deptno=d.deptno;

16.列出各种(与每个同义(参看题13))工作的最低工资。

selectjob,min(sal)fromempgroupbyjob;

17.列出各个部门的MANAGER(经理,经理唯一,不用groupby)的最低薪金。

selectmin(sal)fromempwherejoblike'MANAGER';(因为MANAGER是值不是字段,所以不能用小写)

18.列出所有员工的年工资,按年薪从低到高排序。

(nvl:

空转化函数)

selectename,sal*12+nvl(comm,0)anuual_salfromemporderbyanuual_salasc;

19,列出经理人的名字(雇员的empno出现在mgr列中的是经理人)

SQL>selectenamefromempwhereempnoin(selectdistinctmgrfromemp);

20.不用组函数,求出薪水的最大值(此题猥琐)

SQL>selectename,salfromempwheresalnotin(selectdistincte1.salfromempe1joinempe2one1.sal

答案:

一、

1.*2.ascdesc3.groupby4.like下划线_5.wheregroupby6.外连接

7.ASCII()CHR()8.括号orderby

二、

DBBABDD

三、

1、selectdnamefromdeptwheredeptnoin(selectdeptnofromempgroupbydeptnohavingcount(*)>1);

2.selectenamefromempwheresal>(selectsalfromempwhereenamelike'SMITH');

3.selectename,(selectenamefromempwhereempnoin(a.mgr))fromempa;

4、

selecte1.ename,e1.hiredate,e2.enamemgr,e2.hiredatefromempe1joinemp

e2one1.mgr=e2.empnoande1.hiredate

5selecte.ename,d.dnamefromempejoindeptdone.deptno=d.deptnoande.joblike'CLERK';

6.selectdistinctjobfromempwheresal>1500

7.

selectdname,emp.*fromdeptleftjoinempondept.deptno=emp.deptno;

8.

selectenamefromempwheredeptno=(selectdeptnofromdeptwherednamelike'SALES');

9.selectenamefromempwheresal>(selectavg(sal)fromemp);

10.selectenamefromempwherejobin(selectjobfromempwhereenamelike'SCOTT')andename!

='SCOTT';

11.

selectename,salfromempwheresal=any(selectsalfromempwheredeptno=30)anddeptno!

=30;

selectename,salfromempwheresalin(selectsalfromempwheredeptno=30)anddeptno!

=30;

12.

selectsal,enamefromempwheresal>(selectmax(sal)fromempwheredeptno=30);

13.**selectdeptno,count(*),avg(a.sal),avg(sysdate-HIREDATE)fromempagroupbydeptno;

selectdeptno,count(*),avg(a.sal),avg(to_number(to_char(sysdate,'yyyy'),'9999')-to_number(to_char(HIREDATE,'yyyy'),'9999'))fromempagroupbydeptno;

14.

selectename,sal,(selectdnamefromdeptawherea.deptno=b.deptno)asdnamefromempb;

selectename,dname,salfromempjoindeptonemp.deptno=dept.deptno;

15.select*fromdeptaleftjoin(selectdeptno,count(*)fromempgroupbydeptno)bona.deptno=b.deptno;

selectd.*,cfrom(select*fromdept)dleftjoin(selectcount(*)c,deptnofromempgroupbydeptno)eone.deptno=d.deptno;

16.

selectjob,min(sal)fromempgroupbyjob;

17.selectmin(sal)fromempwherejoblike'MANAGER';(因为MANAGER是值不是字段,所以不能用小写)

18.selectename,sal*12+nvl(comm,0)anuual_salfromemporderbyanuual_salasc;

19,

SQL>selectenamefromempwhereempnoin(selectdistinctmgrfromemp);

20.

SQL>selectename,salfromempwheresalnotin(selectdistincte1.salfromempe1joinempe2one1.sal

 

第五章

一、选择题

1、DELETEFROMSWHERE年龄>60语句的功能是______。

A、从S表中彻底删除年龄大于60岁的记录

B、S表中年龄大于60岁的记录被加上删除标记

  C、删除S表D、删除S表的年龄列

2、设有图书管理数据库:

  图书(总编号C(6),分类号C(8),书名C(16),作者C(6),出版单位C(20),单价N(6,2))

  读者(借书证号C(4),单位C(8),姓名C(6),性别C

(2),职称C(6),地址C(20))

  借阅(借书证号C(4),总编号C(6),借书日期D(8))

  对于图书管理数据库,查询0001号借书证的读者姓名和所借图书的书名。

SQL语句正确的是_____。

SELECT姓名,书名FROM借阅,图书,读者WHERE;借阅.借书证号="0001"AND;______

______

  A、图书.总编号=借阅.总编号AND; 读者.借书证号=借阅.借书证号

  B、图书.分类号=借阅.分类号AND; 读者.借书证号=借阅.借书证号

  C、读者.总编号=借阅.总编号AND; 读者.借书证号=借阅.借书证号

D、图书.总编号=借阅.总编号AND;

3、设有图书管理数据库:

  图书(总编号C(6),分类号C(8),书名C(16),作者C(6),出版单位C(20),单价N(6,2))

  读者(借书证号C(4),单位C(8),姓名C(6),性别C

(2),职称C(6),地址C(20))

  借阅(借书证号C(4),总编号C(6),借书日期D(8))

对于图书管理数据库,分别求出各个单位当前借阅图书的读者人次。

下面的SQL语句正确的是______。

SELECT单位,______FROM借阅,读者WHERE;借阅.借书证号=读者.借书证号______

A、COUNT(借阅.借书证号)GROUPBY单位

B、SUM(借阅.借书证号)GROUPBY单位

C、COUNT(借阅.借书证号)ORDERBY单位

D、COUNT(借阅.借书证号)HAVING单位

4、设有图书管理数据库:

  图书(总编号C(6),分类号C(8),书名C(16),作者C(6),出版单位C(20),单价N(6,2))

  读者(借书证号C(4),单位C(8),姓名C(6),性别C

(2),职称C(6),地址C(20))

  借阅(借书证号C(4),总编号C(6),借书日期D(8))

  对于图书管理数据库,检索借阅了《现代网络技术基础》一书的借书证号。

下面SQL语句正确的是_____。

  SELECT借书证号FROM借阅WHERE总编号=;______

  A、(SELECT借书证号FROM图书WHERE书名="现代网络技术基础")

  B、(SELECT总编号FROM图书WHERE书名="现代网络技术基础")

  C、(SELECT借书证号FROM借阅WHERE书名="现代网络技术基础")

  D、(SELECT总编号FROM借阅WHERE书名="现代网络技术基础")

二简答题

1.简述数据完整性的分类并解释其含义。

2.在oracle中,完整性约束有几种状态

3.索引的特点与不足

答案:

一、

AAAB

1、

2.有四种状态。

(1)禁止的非校验状态,表示该约束是不起作用的,即使该约束定义依然储存在数据字典中;

(2)禁止的校验状态,表示对约束列的任何修改都是禁止的。

(3)允许的非校验状态或强制状态。

该状态可以向表中添加数据,但是与约束有冲突的数据不能添加,如果表中已存在的数据与约束有冲突,这些数据可以存在。

(4)允许的校验状态。

表示约束处于正常状态,这时,表中所有的数据,无论是已有的还是新添加的,都必须满足约束条件。

3.索引特点:

第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。

第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。

第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。

第四,在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。

第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

 

索引不足:

第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。

第二,索引需要占物理空间,除了数据表占数据空间之外,每

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

当前位置:首页 > 人文社科 > 法律资料

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

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