Oracle实验三、四答案
oracle实验报告及答案 用户、权限安全
实验三用户、权限安全班级:座号:姓名:时间:一、实验目的1.创建用户2.创建角色3.使用GRANT和REVOKE语句授予和撤销对象权限二、实验设备一台PC机,widows操作系统,oracle 10g三、实验内容1. 使用sys身份连接到数据库。
2.创建一个用户TEMPUSER,其口令为oracle,默认表空间为USERS,对表空间没有配额限制,临时表空间为TEMP。
3. 创建一个用户配置文件TEMPPROFILE,包含的资源及口令限制如下:该用户最多可以建立3个并发的会话连接用户执行语句使用的CPU最长时间为20分钟空闲时间超过15分钟后,断开与用户的连接限制用户每次调用SQL语句时,能够读取的数据库块数200限制用户在登录到Oracle数据库时允许失败的次数24. 为用户TEMPUSER指定配置文件5. 向用户授予连接数据库系统权限。
6.向用户授予对对象HR.JOBS的SELECT权限,并以用户TEMPUSER连接到数据库,以查询jobs表。
7.以sys身份登录,撤销向用户TEMPUSER授予的系统权限,向用户授予CONNECT,resource角色。
8. 以tempuser身份登录,在exer_tabspace表空间创建表customer(x number)。
四、实验步骤1.使用sys身份连接到数据库。
Connect sys/oracle as sysdba;(查看表空间信息SELECT TABLESPACE_NAME FROM DBA_TABLESPACES;)2. 创建一个用户TEMPUSERCreate user tempuser identified by oracle default tablespace USERS temporary tablespace temp quota unlimited on users;3.创建一个用户配置文件TEMPPROFILE4.为用户TEMPUSER指定配置文件Alter user tempuser profile tempprfile;5向用户授予连接数据库系统权限6、ALTER SYSTEM SET RESOURCE_LIMIT=TRUE SCOPE=BOTH;(启用资源限制,参数立即生效)(再开第二个窗口,第三个窗口,第四个窗口都用TEMPUSER/ORACLE登陆,看看会发生什么情况)7. 向用户授予对对象“HR.JOBS”的SELECT权限,并以用户TEMPUSER连接到数据库,以查询“JOBS”表。
oracle4级考试习题,带答案选择题3
PART A第1题:使用下列哪个数据字典可以查看因约束而创建的唯一性索引?(单选题)USER_INDEXESUSER_TAB_COLUMNSUSER_COLUMNSUSER_CONS_COLUMNS (正确答案)第2题:你运行了select 5+4 from DUAL的查询。
但你以前从未在DUAL表中插入过数据。
下列哪一条语句最好的描述了这一DUAL表?(单选题)包含了两个模式名的字典视图一行一列的广泛适用的表 (正确答案)含有两个索引名的字典试图两列无行的广泛适用的表第3题:DBA为什么要测试备份和恢复策略?(多选题)为验证备份和恢复过程 (正确答案)为熟悉崩溃的类型(正确答案)练习备份和恢复(正确答案)构造后备产品数据库来支持新版本第4题:你发出以下语句: SELECT DECODE(ACCTNO, 123456, 'CLOSED', 654321,'SEIZED', 590395, 'TRANSFER','ACTIVE') FROM BANK_ACCT; 如果ACCTNO的值是503952,这条语句将显示什么信息? (单选题)ACTIVE (正确答案)TRANSFERSEIZEDCLOSED第5题:哪种崩溃通常是最严重的?(单选题)非介质崩溃语句失败实例崩溃介质崩溃 (正确答案)第6题:哪两种数据库配置影响可恢复性?(多选题)ARCHIVELOG模式 (正确答案)NOARCHIVELOG模式 (正确答案)MOUNT模式NOMOUNT模式第7题:哪种数据库配置最容易在数据库崩溃时导致数据丢失?(单选题) ARCHIVELOG模式NOARCHIVELOG模式 (正确答案)第8题:选择数据库崩溃类型(多选题)语句 (正确答案)进程 (正确答案)实例 (正确答案)NOMOUNT模式第9题:哪种才是经受得起灾难性崩溃的高可靠性解决方案?(单选题) 并行服务器 (正确答案)独立数据库第10题:哪两种是Oracle数据库最通常的磁盘容错选项?(多选题)RAID 0RAID 10 (正确答案)RAID 5 (正确答案)RAID 0 + 1第11题:下列哪一功能不是having子句的?(单选题)将返回值按序排放排除规范的数据组包含不规范的数据组 (正确答案)包含规范的数据组第12题:下列关于笛卡尔集的定义哪个是正确的?(单选题)Oracle数据库的一个特性组函数模糊理论的结果没有where子句的连接语句的结果 (正确答案)第13题:你从一个表列里得到一组值,并想对其进行一组操作.下列哪一选项的函数在对所有行的数据进行操作时没有成为一组?(单选题)avg( )sqrt( ) (正确答案)count( )stddev( )第14题:选择防止对那些没有执行完全数据库恢复的数据库不正确修改的方法(多选题) 备份经常使用的表空间 (正确答案)备份控制文件 (正确答案)Exports多份重做日志 (正确答案)第15题:你正在写对数据库的查询。
Oracle实验报告及答案 数据库管理与工具使用
实验一 Oracle数据库管理与工具使用班级:座号:姓名:时间:一、【实验目的】1.掌握Oracle的启动、关闭、连接和管理初始化参数2.熟悉oem和SQL*Plus的使用3.了解用户和模式的概念,并查询hr模式表的数据二、【实验设备】一台PC机,widows xp操作系统,oracle 10g或11g三、【实验内容】1.启动和关闭window操作系统的Oracle服务2.通过三种方式访问数据库3.使用SQL*Plus启动和关闭Oracle数据库4.使用em和SQL*Plus解锁hr模式,并使用SQL*Plus编写查询该模式中表的SQL命令5.使用em和SQL*Plus显示和设置初始化参数文件四、【实验步骤】1 启动服务(开始,设置,控制面板,管理工具,服务)2通过三种方式连接数据库:方法一:在运行窗口中输入CMD命令,然后在窗口中输入SQLPlus命令以启动SQL*Plus工具方法二:开始/程序/Oracle - OraDb10g_home1/SQL Plus打开登录界面,然后输入相应的用户名称和登录密码。
方法三:打开IE,输入本机IP:5560/isqlplus 或者localhost:5560/isqlplus,启动Oracle Enterprise Manager(OEM),以图形话方式对数据库进行操作。
Select * from hr.employees;3 使用SQL*Plus用sys用户关闭Oracle数据库4通过三种方式启动数据库:1)startup nomount;2) alter database mount;3)ALTER DATABASE OPEN;5确认数据库状态:Select instance_name,status from v$instance;6 解锁hr用户7使用hr用户连接sqlplus,Select * from employees;8用SQL*Plus显示所有初始化参数SHOW PARAMETER;五、【实验小结】通过本次实验学会通过oem和SQL*Plus与数据库建立连接,启动、关闭数据库。
《Oracle数据库应用与实践》课后习题参考答案
第 5 章 Oracle 模式对象
一、填空题
1. 字段级约束 表约束
2. NOT NULL 约束 UNIQUE 约束 PRIMARY KEY 约束
束
3. CREATE TABLE
CREATE ANY TABLE
4. UNIQUE PRIMARY KEY CHECK
5. 合并索引 重建索引
6. user_updatable_columns
一、 填空题 1. 数据挖掘 隐含的 未知的 2. API-ODM Java API ODM DBMS_DM PL/SQL API
3. Clustering Association Feature Extraction
Oracle 数据库应用与实践
2、某 cc 表数据如下: c1 c2 -------------1西 1安 1的 2天 2气
Oracle 数据库应用与实践
3好 …… 转换为 1 西安的 2 天气 3好 要求:不能改变表结构及数据内容,仅在最后通过 SELECT 显示出这个查询结果
代码为: create or replace function x return varchar2 is type t_array is table of number index by binary_integer; type tarray is table of varchar2(10) index by binary_integer; ta t_array; tar tarray; re varchar2(10); n number; na varchar2(10); begin select id bulk collect into ta from (select id,name from xx order by id) group by id; for i in st loop dbms_output.put(ta(i)||' '); select name bulk collect into tar from xx where id=ta(i); for i in st loop dbms_output.put(tar(i)); end loop; dbms_output.put_line(' '); end loop; return re; end;
《Oracle技术》实验报告5(答案)1
《Oracle技术》实验报告实验名称PL/SQL编程(选作10题,程序另加附页)姓名学号日期专业班级实验目的(1)了解PL/SQL块的基本结构和分类。
(2)熟练掌握编写PL/SQL块的方法。
(3)了解PL/SQL存储过程、触发器、游标的作用。
(4)熟练掌握编写PL/SQL存储过工程的方法及维护过程。
(5)熟练掌握创建触发器的方法及维护过程。
(6)孰练掌握显式游标和隐式游标的使用。
实验内容(1)编写一个PL/SQL块,输出所有员工的员工名、员工号、工资和部门号。
BEGINFOR v_emp IN (SELECT * FROM EMP) LOOP DBMS_OUTPUT.PUT_LINE(v_emp.ename||’‘||v_emp.empno|| ’‘||v_emp.sal||’‘|| v_emp.deptno);END LOOP;END;/(2)编写一个PL/SQL块,查询名为“SMITH”的员工信息,并输出其员工号、工资、部门号。
如果该员工不存在,则插入一条新记录,员工号为2007,员工名为“SMITH”,工资为1500,部门号为10。
如果存在多个名为“SMITH”的员工,则输出所有名为“SMITH”的员工号、工资和部门号。
成绩DECLAREV_empno emp.empno%type;V_sal emp.sal%type;V_deptno emp.deptno%type;BEGINSELECT empno,sal,deptno INTOV_empno,v_sal,v_deptno FROM emp WHERE ename=’SMITH’;DBMS_OUTPUT.PUT_LINE(v_empno||’’||v_sal||’’||v_dept no);EXCEPTIONWHEN NO_DATA_FOUND THENINSERT INTO EMP(empno, ename,sal,deptno)V ALUES(2007,’SMITH’,1500,10);WHEN TOO_MANY_ROWS THENFOR v_emp IN (SELECT empno,sal,deptno FROM emp WHERE ename=’SMITH’) LOOPDBMS_OUTPUT.PUT_LINE(v_emp.empno||’‘||v_emp.sal|| ’‘||v_emp.deptno);END LOOP;END;/(3)创建一个存储过程,以员工号为参数,输出该员工的工资。
实验3-参考答案(3)
----实例启动时禁用自动归档,下次启动实例才有效
SQL> ALTER SYSTEM SET LOG_ARCHIVE_START=FALSE
----6) 更改归档模式
SQL> ALTER DATABASE ARCHIVELOG
----使用SYS账户登录“Enterprise Manager Console”,进行相关操作
SQL> show parameter UTL_FILE_DIR
------>加载并打开数据库
SQL> ALTER DATABASE OPEN
------>使用系统存储过程DBMS_LOGMNR_D.BUILD,创建LOGMINER字典文件
SQL> EXEC DBMS_LOGMNR_D.BUILD('dict.ora', 'd:\backup', DBMS_LOGMNR_D.STORE_IN_FLAT_FILE)
------>关闭数据库
SQL> shutdown immediate
------>启动实例,但不加载数据库
SQL> STARTUP NOMOUNT
------>将生成的数据字典文件放在“d:\backup”,修改初始化参数UTL_FILE_DIR
SQL> ALTER SYSTEM SET UTL_FILE_DIR='d:\backup' scope=spfile
SQL> DESC V$LOGMNR_CONTENTS
SQL> SELECT * FROM V$LOGMNR_CONTENTS WHERE USERNAME='SCOTT'
oracle课后习题答案
练习62.实训题(2)Create table exer_class(CNO number(2) primary key,CNAME varchar2(20),NUM number(3));Create table exer_student(SNO number(4) primary key,SNAME varchar2(10) unique,SAGE number,SEX char(2),CNO number(2));(3)Alter table exer_student add constraint ck_sage check (sage>0 and sage<=100);(4)Alter table exer_student add constraint ck_stu check(sex='M' or sex='F') modify sex default 'M';(5)Create unique index ind_cname on exer_class(cname);(6)Create view stu_class_view (e_sno,e_sname,e_cno,e_cname) ASselect sno,sname,cno,cnameFrom exer_student;(7)Create sequence exer_student_seqstart with 100000001nocyclenocache;(8)Create table exer_student_range(sno number(4) primary key,sname varchar2(10),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);(9)Create table exer_student_list(sno number(4) primary key,sname varchar2(10),sage number,sex char(2),cno number(2))partition by list(sex)(partition man values('M') tablespace orcltbs1,partition woman values('F') tablespace orcltbs2);(10)题目修改为“为exer_student_range表的SAGE列上创建本地分区索引。
oracle实验报告及答案 备份与恢复
实验四备份与恢复班级:座号:姓名:时间:一、实验目的1.了解备份的重要性2.对数据库进行物理备份、恢复与逻辑备份、恢复3.使用RMAN对数据库进行备份与恢复二、实验设备一台PC机,widows操作系统,oracle 10g三、实验内容1.本练习将使用EXPORT工具按用户方式对SCHOOL模式中的对象进行逻辑备份,并使用该备份恢复将被用户删除的表。
1)在命令提示符窗口中输入命令,启动EXP工具按用户方式备份SCHOOL模式中的对象。
2)删除表STUDENT中的所有数据库。
3)使用IMPORT工具按用户方式恢复STUDENT表中的数据。
2.本练习将对数据库进行物理备份(冷备份),并恢复被用户误删除的数据。
1)以SYSDBA身份连接数据库。
2)复制Oracle目录中的所有文件。
3)删除user01.dbf(模拟误删除)。
4)关闭数据库,启动数据库。
3.本练习将对数据库进行物理备份(热备份),并恢复被用户误删除的数据。
1)以SYSDBA身份连接数据库。
2)确定数据库运行在归档模式下。
3)切换表空间USER为脱机状态。
4)复制Oracle目录中的USERS01.DBF文件,然后设置表空间USERS为ONLINE状态。
5)删除数据文件users01.dbf,并归档当前的日志信息。
6)关闭数据库,切换数据库到MOUNT状态。
7)复制备份的文件到数据库目录,并使用RECOVER命令执行完全恢复。
8)打开数据库,并验证是否恢复被误删除的数据。
4.本练习将对数据库进行物理备份(热备份),并执行基于时间的不完全恢复,以恢复被用户误删除的数据。
1)以SYSDBA身份连接数据库。
2)确定数据库运行在归档模式下。
3)切换表空间USER为脱机状态。
4)复制Oracle目录中的USERS01.DBF文件,然后设置表空间USERS为ONLINE状态。
5)删除STUDENT表中存储的学生信息,并归档当前的日志信息。
6)关闭数据库,切换数据库到MOUNT状态。
数据库原理实验答案
3)向SC表中插入数据
Insert Into SC(Sno,Cno, Grade) Values(200215121,1,92);
Insert Into SC(Sno,Cno, Grade) Values(200215121,2,85);
Insert Into SC(Sno,Cno, Grade) Values(200215121,3,88);
Insert Into SC(Sno,Cno, Grade) Values(200215122,2,90);
Insert Into SC(Sno,Cno, Grade) Values(200215122,3,80);
Insert Into SC(Sno,Cno, Grade) Values(200215121,4,92);
Insert Into SC(Sno,Cno, Grade) Values(200215121,5,85);
Insert Into SC(Sno,Cno, Grade) Values(200215121,6,88);
Insert Into SC(Sno,Cno, Grade) Values(200215123,2,90);
select sno,grade from sc where cno='3' order by grade desc;
8)查询各个课程号与相应的选课人数。
select cno, count(sno) from sc group by cno;
2. 连接查询操作。该实验包括等值连接、自然连接、求笛卡儿积、一般连接、外连接、内连接、左连接、右连接和自连接等。
oracle课后题答案总
一、选择题1. 若关系的某一属性组的值能唯一地标识一个元组,我们称之为(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体系结构由内存结构、进程结构和存储结构组成。
oracle中Where子句的条件顺序对性能的影响
结果表明,SQL条件的执行顺序是从右到左的。
那么,根据这个结果来分析,把能使结果最少的条件放在最右边,是否会减少其它条件执行时所用的记录数量,从而提高性能呢?
例如:下面的SQL条件,是否应该调整SQL条件的顺序呢?
Where A.结帐id Is Not Null
实验三:证明了在10g上SQL条件的执行是从右到左的
Create Or Replace Function F1(v_In Varchar2) Return Varchar2 Is
Begin
Dbms_Output.Put_Line('exec F1');
And A.记录状态<>0
And A.记帐费用=1
And (Nvl(A.实收金额, 0)<>Nvl(A.结帐金额, 0) Or Nvl(A.结帐金额, 0)=0)
And A.病人ID=[1] And Instr([2],','||Nvl(A.主页ID,0)||',')>0
Return v_In;
End F2;
/
SQL> set serverout on;
SQL> select 1 from dual where f1('1')='1' and f2('1')='1';
1
----------
insert into temp values('sz','1');
insert into temp values('sz','2');
oracle的习题及答案
oracle的习题及答案1. 如何启动实例、如何装载数据库,如何打开数据库。
Startup nomount alter database mount alter database openStartup mountStartup2. 如何禁止用户的操作系统认证修改SQLNET.ora nts为none3. 如何控制用户不可以远程登陆。
Alter system set remote_login_passwordfile=noneScope=spfile;4. sys/sias@orcl as sysdba 中orcl的解析这里将用到sqlnet.ora文件,如果names.directory_path=(tnsnames,hostname),客户端首先会在tnsnames.ora文件中找到orcl的记录,如果没有相应的记录则尝试把orcl当做一个主机名,通过网络的途径去解析它的ip地址然后去连接这个ip,如果解析路径中没有hostname,客户端就只从tnsnames.ora查找orcl的记录。
5. 修改服务器端orcl 的监听端口。
可以用net manager修改或直接修改参数文件6. 创建密码文件。
host orapwd file=e:\orapwd.ora Password=nzg entries=30;7. 怎么样从spfile生成pfileCreate pfile=’d:\pfileorcl.ora’ from spfile;Create spfile=’e:\spfileorcl.or a’ from pfile=’d:\pfileorcl.ora’;8. 通过参数文件查看控制文件的位置Show parameter control_file; select name from v$controlfile;(在例程连接数据库后Mount可执行)。
可通过以下几个动态数据字典视图中获得有关控制文件的信息V$controlfile v$database V$controlfile_record_sectionSelect name from v$database; 显示数据库名称。
oracle实验以及答案
实验1SQL*Plus的使用和基本SELECT语句实验目的通过该实验使学员掌握简单查询语句的基本使用方法以及别名的指定方法,能够创建和执行SQL脚本。
实验要求(1)掌握SQL*Plus的基本使用(2)掌握SELECT语句的简单用法。
实验步骤(1)登录到SQL*Plus,初始用户名为:SCOTT,口令为TIGER。
答:打开sql plus,输入用户名和密码登陆;也可以从dos窗口输入命令sqlplus Scott/tiger 连接数据库(2)分别显示EMP、DETP、SALGRADE表结构,并察看表中的数据。
答:DESC emp;DESC dept;DESC salgrade;(3)创建一个查询显示每个雇员的姓名、工作、受雇日期及雇员编号,并且要将雇员编号作为第一列显示。
最后将该SQL语句保存成文件p1q1.sql,并执行该脚本文件。
答:SELECT empno,ename,job,hiredate FROM emp;(4)将脚本文件p1q1.sql调取到SQL缓冲区,并将列标题设置为Emp #,Employee,Job及Hire Date,将该SQL语句保存成文件p1q2.sql,最后返回查询结果。
答:SELECT empno "Emp #",ename "Employee",job "Job",hiredate "Hire Date" FROMemp;思考练习题1.SQL*Plus命令是用于访问数据库的吗?答:可以访问数据库。
2.下面的SELECT语句能成功执行吗?SQL>SELECT ename,job,sal Salary2FROM emp;答:可以成功执行。
3.下面的语句有3处错误,请纠正它们。
SQL>SELECT empno,ename2Salary x 12 ANNUAL SALARY3FROM emp;答:A.表中没有Salary项,改为sal;B.ename后缺少逗号。
Oracle实验三实验报告
实验三 oracle对象管理及使用一、实验目的及要求掌握Oracle的常用对象的操作方法。
会使用常用对象解决一些实际问题。
二、实验主要内容(1)表结构的建立、修改、查看、删除操作。
(2) 索引的建立、修改、查看、删除操作。
(3) 视图的建立、查询、修改、删除操作。
(4) 同义词的建立、查询、修改、删除操作,比较对同义词的操作与对原数据库对象的操作是否一致。
(5) 掌握序列的建立、查询、修改、删除操作,利用序列向数据库表中插入数据。
三、实验仪器设备在局域网环境下,有一台服务器和若干台客户机。
服务器成功安装Oracle 11g数据库服务器(企业版),客户机成功安装Oracle 11g客户端软件,网络服务配置正确,数据库和客户端正常工作。
四、实验步骤1.创建表结构利用命令行方式将下列各表建立到员工医疗保险系统数据库中。
表结构如附录员工医疗保险系统表1-表7所示。
2.查看表结构(2) 利用SQL*Plus或PL/SQL Developer从数据字典DBA_TAB _COLUMNS查看员工医疗保险系统所有表的字段信息。
(3) 利用SQL*Plus或PL/SQL Developer从数据字典DBA_ CONSTRAINTS查看员工医疗保险系统所有表的约束信息。
3.修改表结构(1) 利用SQL*Plus或PL/SQL Developer将表“staff_sql”重新命名为“staff_sql0”。
(2) 利用企业管理器为“staff_sql0”表添加“age INT”字段,利用DESC命令查看“staff_sql0”表的字段信息。
(3) 利用SQL*Plus或PL/SQL Developer为“staff_sql0”表添加“salary NUMBER(5,2)”、“salary_add NUMBER(3,1)”两个字段,利用DESC命令查看“staff_sql0”表的字段信息。
(4) 利用SQL*Plus或PL/SQL Developer向“staff_sql0”表添加“sname”字段惟一性约束,从数据字典DBA_CONSTRAINTS查看“staff_sql0”表的约束信息。
最新《Oracle技术》实验报告5(答案)1资料
《Oracle技术》实验报告实验名称PL/SQL编程(选作10题,程序另加附页)姓名学号日期专业班级实验目的(1)了解PL/SQL块的基本结构和分类。
(2)熟练掌握编写PL/SQL块的方法。
(3)了解PL/SQL存储过程、触发器、游标的作用。
(4)熟练掌握编写PL/SQL存储过工程的方法及维护过程。
(5)熟练掌握创建触发器的方法及维护过程。
(6)孰练掌握显式游标和隐式游标的使用。
实验内容(1)编写一个PL/SQL块,输出所有员工的员工名、员工号、工资和部门号。
BEGINFOR v_emp IN (SELECT * FROM EMP) LOOP DBMS_OUTPUT.PUT_LINE(v_emp.ename||’‘||v_emp.empno|| ’‘||v_emp.sal||’‘|| v_emp.deptno);END LOOP;END;/(2)编写一个PL/SQL块,查询名为“SMITH”的员工信息,并输出其员工号、工资、部门号。
如果该员工不存在,则插入一条新记录,员工号为2007,员工名为“SMITH”,工资为1500,部门号为10。
如果存在多个名为“SMITH”的员工,则输出所有名为“SMITH”的员工号、工资和部门号。
成绩DECLAREV_empno emp.empno%type;V_sal emp.sal%type;V_deptno emp.deptno%type;BEGINSELECT empno,sal,deptno INTOV_empno,v_sal,v_deptno FROM emp WHERE ename=’SMITH’;DBMS_OUTPUT.PUT_LINE(v_empno||’’||v_sal||’’||v_dept no);EXCEPTIONWHEN NO_DATA_FOUND THENINSERT INTO EMP(empno, ename,sal,deptno)V ALUES(2007,’SMITH’,1500,10);WHEN TOO_MANY_ROWS THENFOR v_emp IN (SELECT empno,sal,deptno FROM emp WHERE ename=’SMITH’) LOOPDBMS_OUTPUT.PUT_LINE(v_emp.empno||’‘||v_emp.sal|| ’‘||v_emp.deptno);END LOOP;END;/(3)创建一个存储过程,以员工号为参数,输出该员工的工资。
oracle课后习题答案
oracle课后习题答案Oracle课后习题答案在学习Oracle数据库时,完成课后习题是巩固知识的重要方式。
本文将为大家提供一些常见Oracle课后习题的答案,帮助读者更好地理解和应用数据库知识。
一、基本概念题1. 什么是数据库?答:数据库是一个组织和存储数据的系统。
它是一个结构化的集合,用于存储、管理和操纵数据,并提供对数据的安全性和完整性的保证。
2. 什么是表?答:表是数据库中的一个基本组成部分,用于存储数据。
它由行和列组成,行表示记录,列表示记录中的字段。
3. 什么是SQL?答:SQL(Structured Query Language)是一种用于访问和管理关系型数据库的语言。
它可以用于查询、插入、更新和删除数据,以及创建和管理数据库对象。
二、SQL查询题1. 查询员工表中所有员工的姓名和工资。
答:SELECT 姓名, 工资 FROM 员工表;2. 查询订单表中订单金额大于1000的订单号和金额。
答:SELECT 订单号, 订单金额 FROM 订单表 WHERE 订单金额 > 1000;3. 查询客户表中所有客户的姓名和地址,按照地址降序排列。
答:SELECT 姓名, 地址 FROM 客户表 ORDER BY 地址 DESC;三、SQL插入题1. 向员工表中插入一条记录,姓名为"张三",工资为5000。
答:INSERT INTO 员工表 (姓名, 工资) VALUES ('张三', 5000);2. 向订单表中插入一条记录,订单号为"2021001",金额为2000。
答:INSERT INTO 订单表 (订单号, 订单金额) VALUES ('2021001', 2000);四、SQL更新题1. 将员工表中工资低于3000的员工工资增加1000。
答:UPDATE 员工表 SET 工资 = 工资 + 1000 WHERE 工资 < 3000;2. 将客户表中地址为"北京市"的客户地址改为"上海市"。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上机练习三∙选择部门30中的所有员工Select * from emp where deptno=30∙列出所有办事员的姓名、编号和部门编号Select empno,ename,deptno from emp where job='CLERK';∙找出佣金高于薪金的员工Select * from emp where comm>sal;∙找出佣金高于薪金60%的员工Select * from emp where comm>sal*1.6;∙找出部门10中所有经理和部门20中所有办事员的详细资料Select * from empWhere (deptno=10 and job='MANAGER') or (deptno=20 and job='CLERK');∙找出部门10中所有经理、部门20中所有办事员、既不是经理又不是办事员但薪金大于或等于2000的所有员工的详细资料Select * from empWhere (deptno=10 and job=‟MANAGER‟) or (deptno=20 and job=‟CLERK‟)Or (job not in(‟MANAGER‟ ,‟CLERK‟) and sal>=2000)∙找出收取佣金的员工的不同工作Select distinct job from empWhere comm is not null;∙找出不收取佣金或收取的佣金低于100的员工Select * from empWhere comm is null or comm<100;∙找出各月倒数第三天受雇的所有员工。
Select * from empWhere last_day(hiredate)-2=hiredate;∙找出早于12年前受雇的员工Select * from empWhere months_between(sysdate,hiredate)/12>12;∙以首字母大写的方式显示所有员工的姓名Select initcap(ename) from emp;∙显示正好为5个字符的员工姓名Select ename from empWhere length(ename)=5;∙显示不带有R的员工姓名Select * from empWhere ename not like '%R%';∙显示所有员工的前三个字符Select substr(ename,0,3) from emp;∙显示所有员工的姓名,用a替换所有ASelect replace(ename, 'A', 'a') from emp;∙显示满10年服务年限的员工的姓名和受雇日期Select ename,hiredate from empWhere months_between(sysdate,hiredate)/12>10;∙显示员工的详细资料,按姓名排序Select * from emp order by ename;∙显示员工的姓名和受雇日期,根据其服务年限,将最老的员工排在最前面Select ename,hiredate from empOrder by hiredate;∙显示所有员工的姓名、工作和薪金,按工作的降序排序,若工作相同按薪金排序Select ename,job,sal from empOrder by job desc,sal;∙显示所有员工姓名、加入公司的年份和月份,按受雇日期所在月排序,若月份相同则将最早年份的员工排在最前面。
Select ename,to_char(hiredate, 'yyyy') year, to_char(hiredate, 'mm') monthsFrom empOrder by months,year;∙显示在一个月为30天的情况下所有员工的日薪金,忽略余数Select ename,sal,trunc(sal/30) from emp;∙找出在任何年份的2月受聘的所有员工Select * from emp where to_char(hiredate, 'mm')= 2;∙对于每个员工显示其加入公司的天数Select ename,trunc(sysdate-hiredate) from emp;∙以年月日的方式显示所有员工的服务年限Select ename,hiredate,trunc(months_between(sysdate,hiredate)/12) year,mod(trunc(months_between(sysdate,hiredate)),12) months,trunc(sysdate-add_months(hiredate,months_between(sysdate,hiredate))) day from emp;实验四∙列出所有员工的姓名、部门名称和工资Select e.ename,d.dname,e.salFrom emp e,dept dWhere e.deptno=d.deptno(+);∙列出所有部门的详细信息和部门人数Select d.deptno,d.dname, d.loc,count(e.empno)From emp e,dept dWhere e. deptno(+)=d.deptnoGroup by d.deptno,d.dname,d.loc;∙列出所有员工的年工资、所在部门名称,按年薪升序排序Select e.ename,e.sal*12 income,d.dnameFrom emp e,dept dWhere e.deptno=d.deptnoOrder by income;∙查出每个员工的上级主管及所在部门名称,并要求这些主管的薪水超过3000 Select distinct m.ename,d.dname,m.salFrom emp e,emp m,dept dWhere e.mgr=m.empno and m.deptno=d.deptno and m.sal>3000;∙求出部门名称中带…S‟字符的部门员工的工资合计、部门人数。
Select d.dname,sum(nvl(e.sal,0)),count(e.empno)From emp e,dept dWhere e.deptno(+)=d.deptno and d.dname like '%S%'Group by d.dname;∙列出部门名称和这些部门的员工信息(数量、平均工资),同时列出那些没有员工的部门。
Select d.deptno,d.dname,d.loc,count(e.empno),avg(e.sal)From emp e,dept dWhere e.deptno(+)=d.deptnoGroup by d.deptno, d.dname,d.loc;∙列出在部门“SALES”工作的员工姓名、基本工资、雇佣日期、部门名称,假定不知道销售部的部门编号。
Select e.ename,e.sal,e.hiredate,d.dnameFrom emp e,dept dWhere e.deptno=d.deptno and d.dname='SALES';∙列出公司各个工资等级雇员的数量、平均工资Select s.grade,s.losal,s.hisal,count(e.empno),avg(e.sal)From emp e,salgrade sWhere e.sal between s.losal and s.hisalGroup by s.grade,s.losal,s.hisal;∙列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金、部门名称Select e.empno,e.ename,d.dname,e.salFrom emp e,dept dWhere sal>all(Select sal from emp where deptno=30)And e.deptno=d.deptno;∙列出受雇日期早于直接上级的所有员工的编号、姓名、部门名称、部门位置、部门人数。
Select e.empno,e.ename,d.dname,d.loc,temp.countFrom emp e,emp m,dept d,(Select deptno dno,count(empno) countFrom empGroup by deptno) tempWhere e.mgr=m.empno(+) and e.hiredate<m.hiredateAnd e.deptno=d.deptno and e.deptno=temp.dno;∙列出所有“clerk”的姓名及其部门名称、部门人数、工资等级。
Select e.ename,d.dname,e.job,temp.count,s.gradeFrom emp e,dept d,(Select deptno dno,count(empno) countFrom empGroup by deptno) temp,salgrade sWhere e.job='CLERK' and e.deptno=d.deptnoAnd d.deptno=temp.dno and e.sal between s.losal and s.hisal;∙列出最低薪金大于1500的各种工作及从事此工作的全部雇员人数及所在部门名称、位置、平均工资。
Select temp.job,temp.count,d.dname,e.ename,res.avgFrom dept d,(Select e.job job,count(e.empno) countFrom emp eGroup by e.jobHaving min(e.sal)>1500) temp,emp e,(Select deptno dno,avg(sal) avgFrom empGroup by deptno) resWhere e.deptno=d.deptno and e.job=temp.jobAnd e.deptno=res.dno;∙列出薪金高于公司平均薪金的所有员工、所在部门、上级领导、公司的工资等级。
Select e.empno,e.ename,e.job,e.sal,d.dname,d.loc,m.ename,s.gradeFrom emp e,dept d,emp m,salgrade sWhere e.sal>(Select avg(sal) from emp)And e.deptno=d.deptno and e.mgr=m.empnoAnd e.sal between s.losal and s.hisal;∙列出与SCOTT从事相同工作的所有员工及部门名称、部门人数Select e.empno,e.ename,e.job,d.dname,temp.countFrom emp e,dept d,(Select deptno dno,count(empno) countFrom empGroup by deptno) tempWhere e.job=(Select jobFrom empWhere ename='SCOTT') and e.ename<>'SCOTT'And e.deptno=d.deptno and temp.dno= e.deptno;∙列出在每个部门工作的员工数量、平均工资和平均服务期限Selectd.deptno,d.dname,d.loc,count(e.empno),avg(sal),avg(months_between(sysdate,e.hiredate)/12) yearFrom emp e,dept dWhere e. deptno(+)=d.deptnoGroup by d.deptno,d.dname,d.loc;∙列出各种工作的最低工资及此雇员姓名Select e.ename,e.job,e.salFrom emp e,(Select job,min(sal) min from empGroup by job) tempWhere e.job=temp.job and e.sal=temp.min;∙列出各个部门的MANAGER的最低薪金、姓名、部门名称、部门人数Select e.ename,e.sal,d.dname,res.countFrom emp e,(Select deptno dno,min(sal) salFrom empWhere job='MANAGER'Group by deptno) temp, dept d,(Select deptno dno,count(empno) countFrom empGroup by deptno) resWhere e.deptno=temp.dno and e.sal=temp.sal and e.job='MANAGER'And e.deptno=d.deptno and res.dno=d.deptno;给任职日期超过30年或者在87年雇佣的雇员加薪,加薪原则:10部门增长10%,20部门增长20%,30部门增长30%。