oracle实验以及答案

合集下载

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”表。

Oracle实验报告及答案 数据库管理与工具使用

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测试试题及答案

oracle测试试题及答案

【例1】创建一个名为IT_EMPLOYEES的表,它由编号EMPLOYEE_ID、名FIRST_NAME、姓LAST_NAME、邮箱EMAIL、电话号码PHONE_NUMBER、部门编号JOB_ID、薪资SALARY和部门经理编号MANAGER_ID八个属性组成。

create table IT_EMPLOYEES(EMPLOYEE_ID NUMBER(6) not null unique,FIRST_NAME VARCHAR2(20),LAST_NAME VARCHAR2(25) not null,EMAIL VARCHAR2(25),PHONE_NUMBER VARCHAR(20),JOB_ID VARCHAR2(10),SALARY NUMBER(8,2),MANAGER_ID NUMBER(6));【例2】建立程序员的视图PROG_EMPLOYEES(JOB_ID=’IT_PROG’),其中隐含了视图的列名.create view prog_employeesasselect employee_id,first_name,last_name,email,phone_number,salary,manager_id from it_employeeswhere job_id = 'IT_PROG';【例3】执行下面的CREATE INDEX语句,创建索引:CREATE INDEX IT_LASTNAME ON IT_EMPLOYEES(LAST_NAME);【例4】将前文创建的视图PROG_EMPLOYEES删除.DROP VIEW PROG_EMPLOYEES;【例5】向IT_EMPLOYEES表中增加“雇员生日”列,其数据类型为日期型:ALTER TABLE IT_EMPLOYEES ADD BIRTHDATE DATE;【例6】将IT_EMPLOYEES表的MANAGER_ID字段改为8位:ALTER TABLE IT_EMPLOYEES MODIFY MANAGER_ID NUMBER(8);【例7】删除IT_EMPLOYEES表EMPLOYEE_ID字段的UNIQUE约束:ALTER TABLE IT_EMPLOYEES DROP UNIQUE(EMPLOYEE_ID);【例8】创建表COUNTRIES时的列顺序为:COUNTRY_ID、COUNTRY_NAME、REGION_ID。

《Oracle数据库应用与实践》课后习题参考答案

《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技术》实验报告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课后习题答案

练习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实验报告2标准答案

Oracle实验报告2标准答案
(5)创建一个查询显示工资大于2850美元的姓名及工资。将该查询保存成脚本文件p2q1.sql,并执行该文件。
(6)修改脚本文件p2q1.sqll文件重新保存该查询。
(7)修改文件p2q2.sql,显示在10和30部门工作并且工资大于1500美元的雇员的姓名和工资,列标题显示为Employee和MonthlySalary,最后以p2q3.sql重新保存该文件,返回查询结果。
《Oracle数据库技术》
实验指导书2
基本SELECT、WHERE和ORDERBY子句的使用ﻬ
实验要求
1)掌握SQL*PLUS的基本使用.
2)掌握SELECT语句的简单用法.
3)掌握WHERE子句的用法。
4)掌握ORDER BY子句的用法。
实验步骤
(1)登录到SQL*Plus,初始用户名:SCOTT,口令为TIGER。
6.显示在10号和30号部门工作的雇员的姓名及其部门编号,并以字母顺序排列。
7.显示所有受雇于1982年的雇员的姓名和受雇日期。
8.显示没有上级管理员的雇员的姓名及其工作。
9.显示能挣得奖金的雇员的姓名、工资、奖金,并以工资和奖金降序排列。
10.显示姓名中第三个字母为A的雇员的姓名。
11.显示姓名中两次出现字母L并且在30部门工作或者其管理员编号是7782的雇员的姓名。
12.显示工作为clerk或analyst并且工资不等于1000、3000、5000的雇员的姓名、工作及工资。
SQL>SELECT empno,ename
2salary*12ANNUALSLARY
3FROMemp;
3.创建一个查询EMP表中检索出不重复的工作名称
4.创建一个查询显示雇员编号为7566的雇员的姓名和部门编号。

oracle11g管理与应用实践教程(习题及答案)(2)剖析

oracle11g管理与应用实践教程(习题及答案)(2)剖析

1.6习题Oracle数据库基础一.填空题1、关系模型提供了3类完整性规则,分别是_______、_______、_______。

参考答案:实体完整性规则、参照完整性规则、用户定义的完整性规则2、RDBMS由两部分组成,即_______、_______两部分。

答案:数据库系统内核、数据字典3、关系数据库模型支持三种类型的表关联关系:_______、_______、_______。

答案:一对一、一对多以及多对多4、数据模型的种类有很多,例如_______、_______、_______和_______等。

目前理论最成熟、使用最普及的是_______。

答案:层次模型、网状模型、关系数据模型、面向对象模型。

关系数据模型二、选择题1、Oracle 11g版本号中字母“g”的含义是()A.产品类型的“代”( generation) B.网格(gridding)C.集成(integration)D.无含义答案:B2、设计性能较优的关系模式称为规范化,规范化主要的理论依据是()A.关系规范化理论B.关系运算理论C.关系代数理论D.数理逻辑答案:A3、消除了部分函数依赖的1NF的关系模式必定是()A.1NF B.2NF C.3NF D.4NF答案:B4、当B属于函数依赖于A属性时,属性B与A 的联系是()A.1对多B.多对1 C.多对多D.以上都不是答案:B5、根据关系数据库规范化理论,关系数据库中的关系要满足第一范式。

下面“部门”关系中,因哪个属性而使它不满足第一范式?部门(部门号,部门名,部门成员,部门总经理)A.部门总经理B.部门成员C.部门名D.部门号答案:B6、下列不属于Oracle数据库数据类型的是()A.NUMBER B.FLOAT C.CLOB D.BOOLEAN 答案:D三、简答题1、简述数据库与数据库管理系统的区别。

参考答案:数据库是用来存储信息或数据的机制,是按照数据结构来组织、存储和管理数据的仓库。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验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后缺少逗号。

C.别名中含有大写字母和空格,需加双引号,改为“ANNUAL SALARY”4.创建一个查询从EMP表中检索出不重复的工作名称。

答:SELECT DISTINCT job FROM emp;5.用一个逗号和一个空格将姓名和工作连接后作为一个整体输出,显示的列标题为Employee and Title。

答:SELECT ename||', '||job "Employee and Title" From emp;6.创建一个查询,用逗号将表中所有字段的信息连接作为一个整体输出,输出的列标题为THE_OUTPUT。

答:SELECT empno||ename||job||mgr||hiredate||sal||comm||deptno "THE_OUTPUT" FROM emp; 实验2使用WHERE和ORDER BY子句实验要求(1)掌握WHERE子句的用法。

(2)掌握ORDER BY子句的用法。

实验条件自我实践实验时间大约60分钟1.练习1FOLLOW ME●时间20分钟●实验步骤(1)观看第2章教学视频。

(2)实践视频中的实例。

2.练习2●时间40分钟●实验步骤(1)创建一个查询显示工资大于2850美元的雇员的姓名及工资。

将该查询保存成脚本文件p2q1.sql,并执行该文件。

答:SELECT ename,sal FROM emp WHERE sal>2850;(2)修改脚本文件p2q1.sql,显示工资不在1500到2850美元之间的雇员的姓名及工资,并以q2q2.sql文件重新保存该查询。

答:SELECT ename,sal FROM emp WHERE sal NOT BETWEEN 1500 AND 2850;(3)修改文件p2q2.sql,显示在10和30部门工作并且工资大于1500美元的雇员的姓名和工资,列标题显示为Employee和Monthly Salary,最后以p2p3.sql重新保存该文件,返回查询结果。

答:SELECT ename,sal FROM emp WHERE sal>1500 AND deptno IN(10,30);(4)修改脚本文件p2q3.sql显示奖金比工资多10%以上的雇员的姓名、工资及奖金。

将该查询保存成p2q4.sql脚本文件,并返回查询结果。

答:SELECT ename,sal,comm FROM emp WHERE sal*1.1<comm;思考练习题1.创建一个查询显示雇员编号为7566的雇员的姓名和部门编号。

答:SELECT ename,deptno FROM emp WHERE empno=7566;2.显示受雇时间在February 20,1981和May 1,1981之间的雇员的姓名、工资、及受雇时间,并以受雇时间升序排列。

答:SELECT ename,sal,hiredate FROM emp WHERE hiredate BETWEEN '20-2月-1981' AND '1-3月-1981' ORDER BY hiredate DESC;3.显示在10号和30号部门工作的雇员的姓名及其部门编号,并以字母顺序排列。

答:SELECT ename,deptno FROM emp WHERE deptno IN (10,30) ORDER BY ename; 4.显示所有受雇于1982年的雇员的姓名和受雇时间。

答:SELECT ename,hiredate FROM emp WHERE TO_CHAR(hiredate,'YYYY')=1982; 5.显示没有上级管理员的雇员的姓名及其工作。

答:SELECT ename,job FROM emp WHERE mgr IS NULL;6.显示能挣得奖金的雇员的姓名、工资、奖金,并以工资和奖金降序排列。

答:SELECT ename,sal,comm FROM emp WHERE comm>0 ORDER BY sal DESC, comm DESC;7.显示姓名中第三个字母为A的雇员的姓名。

答:SELECT ename FROM emp WHERE ename LIKE '__A%';8.显示姓名中两次出现字母L并且在30部门工作或者其管理员编号是7782的雇员的姓名。

答:SELECT ename FROM emp WHERE ename LIKE '%L%L%' AND (deptno=30 ORmgr=7782);9.显示工作为Clerk或Analyst并且工资不等于$1000、$3000、$5000的雇员的姓名、工资及工资。

答:SELECT ename,job,sal FROM emp WHERE LOWER(job) IN ('clerk','analyst') ANDsal NOT IN (1000,3000,5000);实验3在SELECT语句中使用单行函数实验要求掌握常用的单行函数的用法。

实验条件自我实践实验时间大约60分钟1.练习1FOLLOW ME●时间20分钟●实验步骤(1)观看第3章教学视频。

(2)实践视频中的实例。

2.练习2●时间40分钟●实验步骤(1)显示雇员的编号、姓名、工资以及工资增长15%后的整数值(以New Salary作为列标题),将该查询保存为脚本文件p3q1.sql,并执行该脚本文件。

答:SELECT empno,ename,sal,sal*1.15 "New Salary" FROM emp;(2)修改p3q1.sql,增加一个列Increase显示new salary和salary的差值,另存为p3q2.sql,并返回查询结果。

答:SELECT empno,ename,sal,sal*1.15 "New Salary",sal*0.15 "Increase" FROM emp; (3)创建一个脚本文件p3q3.sql,显示雇员姓名并以*为指示符代表工资数额(列标题为EMPLOYEE_AND_THEIR_SALARIES),一个指示符代表一百美元,并以工资数额降序排列。

答:SELECT ename||RPAD('*',TRUNC(sal/100),'*')AS "EMPLOYEE_AND_THEIR_SALARIES" FROM emp;思考练习题1.编写一个显示当期日期的查询,列标题为Date。

答:SELECT sysdate "Date" FROM dual;2.显示雇员姓名、受雇日期及工资复审日期(复审日期为受雇后6个月后的第一个星期一),复审日期以列标题REVIEW显示,并且显示的日期形式为“Sunday,the Seventh of September,1981.”。

答:SELECT ename,hiredate,TO_CHAR(NEXT_DAY(ADD_MONTHS(hiredate,6),'星期一') ,'DAY","DDSPTH" of "MONTH","YYYY','nls_date_language=american')AS "REVIEW" FROM emp;3.显示每个雇员的姓名并计算出从受雇日期起到目前一共工作了多少个月,以列标题MONTHS_WORKED显示月数(四舍五入),输出以月数升序排列。

答:SELECT ename,ROUND(MONTHS_BETWEEN(sysdate,hiredate) )"MONTHS_WORKED" FROM emp ORDER BY "MONTHS_WORKED";4.编写一个以下面的形式输出的查询:<employee name> earns <salary> monthly but wants <3 times salary>.列标题为Dream Salaries。

答:SELECT ename ||' earns '||sal||' monthly but wants '||sal*3 AS "Dream Salaries"FROM emp;5.创建一个查询显示每个雇员的姓名及工资(列标题为SALARY),工资的显示模式为:占15个字符的宽度,对于不够位数的以$填充。

相关文档
最新文档