SQL作业与答案.docx
《SQL作业与答案.docx》由会员分享,可在线阅读,更多相关《SQL作业与答案.docx(11页珍藏版)》请在冰豆网上搜索。
SQL作业与答案
第一部分背景知识
1、请描述当代数据库技术的主流模型有哪些
关系、关系对象、XML以及现代基于key-value为特点基于列的非关系模型的海量数据处理等
2、数据库查询语言SQL的标准的体系组成及其发展状况
SQL标准其完整的框架包含了14个部分内容分别为part1-part14,但是随着版本的变化,其中有些部分进行了调整(合并或者取消)。
主要内容包括:
3、罗列当代最为关键的数据库服务器系统产品名称>=6
oracle、sqlserver、db2、sybase、postgreSQL、mysql
4、数据库中触发器对象有什么价值?
用户自定义完整性
帮助实现特定的事件记录或者业务处理的目的
主动数据库的基础技术之一
5、请说明现代数据库管理系统产品所基于的主流模型是什么,如sqlserver/oracle/db2
主要是以关系模型为基础上,增加了关系对象的支持,具体反映在对SQL99版本的支持
包括目前最新的Oracle11g/SQLServer2008和DB9都支持了关系-对象模型。
6、什么是嵌入式数据库?
有两重含义
1)可以直接内嵌到其他软件中的小型数据库,例如word软件中内嵌的spell
2)能在嵌入式类的小型计算机系统上运行的数据库产品,例如手机中的字典
7、什么是数据库的容灾技术
容灾主要分为哪几种级别,分别代表什么含义
无备份
定期备份,介质本地存储
介质异地存储
备份介质电子传送
8、为什么说数据库的事务日志的工作机理是什么
数据库的日志通常用于数据库的恢复使用,是事务不一致情况下主要的修复依据,工作机理是数据库日志通常记录数据修改的具体行为,必需要先于对应日志行为所涉及的数据缓冲区修改部分的数据写入数据文件的,简称WAL
第二部分oracle基本概念
1、oracle—RDBMS产品的公司?
2、oracle10g和11g中的g代表什么?
网格技术
3、在windows环境安装完成oracle数据库管理系统后,如何进入sqlplus,并且以dba的角色登陆
4、oracle服务器工作所需启动的基本服务有哪几个?
5、Oracle服务器的组成
1.Oracle实例(instance)
2.Oracle数据库(database)
6、Oracle实例由哪些部分组成,每一部分的组成。
7、Oracle数据库由哪几种文件组成。
8、如何使用命令启动数据库服务器,几种命令的不同。
9、如何使用命令关闭数据库服务器
10、查看当前使用的参数文件(二进制还是文本),参数文件的位置、名称。
pfile是文本,spfile是二进制文件
showparameterspfile命令,显示spfile的位置,如果显示的位置为空,则表示的是pfile.
altersystemsetremote_login_passwordfile=nonescope=spfilescope表示应用范围scope=memory修改只对内存有效,即对当前实例有效,且立即生效,但不会保存到spfile文件中,数据库重启后此配置丢失scope=spfile修改只对spfile有效,不影响当前实例,需要重启数据库后才能生效scope=both包含memory和spfile两种,修改后立即有效,并且永久有效。
11、如何由当前的二进制参数文件生成文本的参数文件。
(了解一下)
12、参数文件中参数的种类,如何修改这些不同的参数
13、系统管理员的验证方法有哪两种?
操作系统认证和口令文件认证
14、如何创建口令文件?
在未连接时
Orapwdfile=c:
\oracle\product\10.2.0\db_2\database\pwdorcl.orapassword=newzhengentries=4(14,15,16了解)
15、如何禁用操作系统认证,而使用口令文件验证。
将sqlnet.ora中的设置Sqlnet.authentication.services=nts表示使用操作系统认证
将sqlnet.authentication.services=none表示禁用操作系统认证
Showparameterremote_login_passwordfile;(exclusive)
16、如何禁用口令文件认证,而使用操作系统认证。
1.首先设定操作系统验证Sqlnet.authentication.services=nts
2.altersystemsetremote_login_passwordfile=nonescope=spfile;
设定该参数后,必须将实例关闭,然后启动,才会有效
17、熟悉sql*plus的命令,重点执行外部文件中的命令。
Setsqlblanklineson
Select*fromtestwhereaa=&m;
“/”表示执行缓冲区中的内容
L1列出第一行
Append追加在上一个命令的当前行追加
Change命令可以替换当前行的一部分,也可以全部替换c/aa=2/aa=3
?
Input简写为I该命令可以在当前行的后面插入一个新行
Delete简写delDelete用来删除一行,如果不加参数,删除当前行
Del3
Save命令
编辑好的sql命令,可以将命令存盘,以备以后使用或进一步编辑
Savec:
\aa.sql
Get命令
与save命令正好相反,将文件中的内容放到缓冲区中,以便执行或进一步编辑getc:
\aa.sql
Start命令(也可以用@)
Start命令为执行命令文件,可以是SAVE保存的文件,也可以是其他的编辑器编写的文件@c:
\aa.sql;
Editc:
\aa.sql
column(简写col)
给列一个标签ColnameHEADING姓名
Colnameformata10格式化,显示10个字符
指定数值类型的格式
colsalformat999.99
colbytesformat999,999,999
取消格式Colaaclear
设计报表
?
Setlinesize50
?
Ttitlecenter‘我的报表’skip1–
?
Left“测试报表”right“页”–
?
Format999sql.pnoskip2
?
查询语句
?
去掉标签:
ttitleoff
Sqlplus环境参数
?
环境参数的设置用set
例如:
屏幕的宽度默认为100,若改为1000,则
Setlinesize1000
?
默认情况下,屏幕不会暂停,若要设置为等待按下enter键才会继续显示下一页,执行如下语句
?
Setpauseon
?
当对环境进行设置后,在本次使用中一直保存该设置,但退出再进入,则环境设置又回到了默认值,则用简单的命令store来保存环境参数
?
Storesete:
\myset.sqlcreate
?
然后
?
@e:
\myset.sql
假脱机输出
?
所谓假脱机输出,就是将输出信息保存在一个文件中
Spoolc:
\ss.sqlspooloff关闭并输出文件spoolout关闭并打印输出文件
Help命令helplist
Describedesctest
18、Oracle逻辑空间的层次结构。
Oracle的逻辑结构是一种层次结构。
主要由:
表空间、段、区和数据块等概念组成
19、创建表空间,包括一个数据文件,文件大小指定,能够自动扩展,并且限制文件的最大大小,盘区使用本地管理,段的空间使用自动管理。
Createtablespacemywzu
datafile'd:
\wzu.dbf'size10m
autoextendonnext20mmaxsize30m
extentmanagementlocal
segmentspacemanagementauto;
20、查看当前的日志文件。
Selectgroup#,memberfromv$logfile;
21、向文件组1添加日志文件。
Alterdatabaseaddlogfilemember‘c:
\newlog.log’togroup1;
22、查看当前的控制文件。
Showparametercontrol_files;(selectnamefromv$controlfile;)
23、如何查看控制文件的内容。
Alterdatabasebackupcontrolfiletotrace;
Showparameteruser_dump_dest;
24、修改数据库的归档模式为归档模式。
查看Selectname,log_modefromv$database;
Archiveloglist;
改变数据库归档模式数据库在open状态下不能够进行归档模式的修改shutdownimmediate;startupmount;alterdatabasearchivelog;
Archiveloglist
25、创建客户端的数据库的连接串tnsnames,了解客户端的sqlnet.ora和服务器端的listener.ora,了解客户端和服务器端通讯的过程。
(sqlnet.ora文件和listener.ora文件要能够读懂)。
26、创建用户,默认的表空间为users,默认的临时表空间为temp,能够使用2m的users表空间的空间。
Createuserzhengidentifiedbyzhengdefaulttablespaceusers
Quota2monusers
Alteruserzhengtemporarytablespacetemp
27、创建配置文件newprofile,限制用户尝试登陆的失败次数为3.
Createprofilenewprofilelimitfailed_login_attempts3;
28、启动配置文件。
Altersystemsetresource_limit=true;
29、为用户指定配置(概要)文件。
Createusermyuseridentifiedbymypasswdprofilenewprofile;
Alterusermyuserprofilenewprofile;
30、以sys身份创建表test,创建角色r1,授予角色r1查看和修改test的权限
Createtabletest
(aaint,
bbint);
createroler1identifiedbymypass;
grantselectonsys.testtor1;
grantupdateonsys.testtor2;
31、创建用户testuser,授权该用户角色r1。
Createusertestuseridentifiedbytestpass;
Grantr1totestuser;
32、启动审计功能。
33、审计对sys模式下表test的插入数据的动作。
Auditinsertontestbyaccess
34、创建表,输入重复数据,如何实现只留一行,而将重复数据删除。
Createtablenew(aaint,bbint);
Insertintotestvalues(1,3)
Insertintotestvalues(1,3)
Insertintotestvalues(1,3)
Selectrowid,aa,bbfromtest
Deletefromtestwhererowid<>(selectmin(rowid)fromtest);Deletefromtestawhererowid<>(selectmax(rowid)fromnewbwherea.aa=b.aaanda.bb=b.bb)35、创建分区表
36、通过闪回恢复删除的数据。
Createuserkkidentifiedbykk
Defaulttablespaceusers
Quota2monusers;
Grantconnect,createtabletokk;
Connectkk/kk
Createtabletest(aaint.bbint);
Insertintotestvalues(1,23);
Droptabletest;
Flashbacktabletesttobeforedrop;
37、创建表,包含date和interval数据类型,输入输入。
Createtabletest(aadate,bbintervalyear(3)tomonth,ccintervalday
(2)tosecond);
Insertintotestvalues(to_date(‘6/3/2009’,’dd/mm/yyyy’),interval‘3’month,interval‘2’day);
使用scott/tiger用户下的emp表和dept表完成下列练习,表的结构说明如下
emp员工表(empno员工号/ename员工姓名/job工作/mgr上级编号/hiredate受雇日期/sal薪金/comm佣金/deptno部门编号)
dept部门表(deptno部门编号/dname部门名称/loc地点)
工资=薪金+佣金
简单查询
1.列出至少有一个员工的所有部门
select*fromdept
wheredeptnoin
(selectdeptnofromempgroupbydeptnohavingcount(*)>1);
2.列出薪金比“SMITH”多的所有员工。
select*fromemp
wheresal>(selectsalfromempwhereename='SMITH');
3.列出所有员工的姓名及其直接上级的姓名。
selectename,(selectenamefromempwhereempno=a.mgr)fromempa;
或
selectename,(selectenamefromempwhereempno=a.mgr)asmgrnamefromempa;
自连接
selecta.ename,b.enamefromempa,empb
wherea.mgr=b.empno(+);外连接
4.列出受雇日期晚于其直接上级的所有员工。
selectenamefromempa
wherehiredate>(selecthiredatefromempwhereempno=a.mgr);
列出受雇日期早于其直接上级的所有员工。
selectenamefromempawhere
hiredate<(selecthiredatefromempwhereempno=a.mgr);
5.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。
selectdname,enamefromdeptleftouterjoinemp
ondept.deptno=emp.deptno;
selectdname,enamefromdepta,empb
wherea.deptno=b.deptno(+);
6.列出所有“CLERK”(办事员)的姓名及其部门名称。
selectdname,enamefromdepta,empb
wherea.deptno=b.deptnoandjob='CLERK';
select(selectdnamefromdeptwheredeptno=a.deptno)asdname,ename
fromempa
wherejob='CLERK';
7.列出最低薪金大于1500的各种工作。
selectjob,min(sal)msalfromemp
groupbyjobhavingmin(sal)>1500;
8.列出在部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号。
selectenamefromempwheredeptno=(selectdeptnofromdeptwheredname='SALES');
9.列出薪金高于公司平均薪金的所有员工。
selectenamefromempwheresal>(selectavg(sal)fromemp);
10.列出与“SCOTT”从事相同工作的所有员工。
select*fromempwherejob=(selectjobfromempwhereename='SCOTT');
11.列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。
select*fromempwheresalin
(selectsalfromempwheredeptno=30);
或
select*fromempwheresal=any
(selectsalfromempwheredeptno=30);
12.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金。
--最大值>all
select*fromempwheresal>all
(selectsalfromempwheredeptno=30);
--最小值selectdeptno,count(*),trunc(avg(sal+nvl(comm,0)))avgsal,to_char(to_date('0001-01-01','yyyy-mm-dd')+avg(sysdate-hiredate)-366-31,'yy"年"mm"月"dd')avgdayfromempgroupbydeptno;14.列出所有员工的姓名、部门名称和工资。
selectename,dname,sal+nvl(comm,0)fromemp,deptwhereemp.deptno=dept.deptno;15.列出从事同一种工作但属于不同部门的员工的一种组合。
selectemp.ename,emp.job,emp.deptnofromemp,(selectdistincta.job,a.deptnofromempa,empbwhere(a.job=b.job)and(a.deptno!
=b.deptno)orderbya.job)cwhereempno=(selectmax(empno)fromempwherejob=c.jobanddeptno=c.deptno)andemp.job=c.jobandemp.deptno=c.deptnoselectemp.ename,emp.job,emp.deptnofromemp,(selectdistincta.job,a.deptnofromempa,empbwhere(a.job=b.job)and(a.deptno!
=b.deptno)orderbya.job)cwhereempno=(selectmin(empno)fromempwherejob=c.jobanddeptno=c.deptno)andemp.job=c.jobandemp.deptno=c.deptnoselect*from(selectdistincta.*fromempa,empbwherea.deptno<>b.deptnoanda.job=b.job)cwhereempnoin(selectmin(empno)from(selectdistincta.*fromempa,empbwherea.deptno<>b.deptnoanda.job=b.job)groupbydeptno,job);16.列出所有部门的详细信息和部门人数。
selecta.*,(selectcount(*)fromempwheredeptno=a.deptno)totfromdepta;17.列出各种工作的最低工资。
selectjob,min(sal+nvl(comm,0))fromempgroupbyjob;这样写有问题selectjob,min(nvl(sal+comm,0))fromempgroupbyjob;18.列出MANAGER(经理)的最低薪金。
selectmin(sal)fromempwherejob='MANAGER';19.列出所有员工的年工资,按年薪从低到高排序。
selectename,(sal+nvl(comm,0))*12totfromemporderbytot;-----orcle的等连接SELECTd.*FROMEMPE,DEPTDWHEREE.DEPTNO=D.DEPTNO;-----orcla的外连接SELECTd.*FROMEMPE,DEPTDWHEREE.DEPTNO(+)=D.DEPTNO;+放在没有匹配行的表一侧,所以dept表的记录完全显示--标准等联结selectdept.*fromempjoindeptonemp.deptno=dept.deptno;--标准的右外联结selectdept.*fromemprightouterjoindeptonemp.deptno=dept.deptno;selectdept.*fromdeptleftouterjoinemponemp.deptno=dept.deptno;现代数据库技术复习和考试提要(chapter1)4、oracle数据库的物理结构包括哪些内容?
5、请描述oracle数据库的逻辑结构,它和oracle的物理结构有什么关系6、oracle的总体的内存包括哪几个部分?
7、Oracle实例(instance)的组成和含义8、Oracle的SGA有哪几个部分组成,分别说出其大致的作用9、Oracle实例的主要后台进程有哪些,说出其作用10、oracle的数据库的块11、查看数据库的各种层次的结构和数据库系统运行状态等信息的12、数