文档库 最新最全的文档下载
当前位置:文档库 › Oracle基础查询关联查询练习题

Oracle基础查询关联查询练习题

Oracle基础查询关联查询练习题
Oracle基础查询关联查询练习题

1 Oracle基础查询综合示例

有职员表emp,表结构如表-1所示:表-1 职员表emp 信息

emp 表中的示例数据如图-1所示:

图-1

有部门表dept,表结构如表-2所示:表-2 部门表dept 信息

dept表中的示例数据如图-2所示:

图-2

需要完成如下查询:

1、查询职员表中,在20和30号部门工作的员工姓名和部门号。

select ename,deptno from emp

where deptno in(20,30);

2、查询职员表中,没有管理者的员工姓名及职位,并按职位排序。

select ename,job from emp

where mgr is null

order by job;

3、查询职员表中,有绩效的员工姓名、薪资和绩效,并按工资倒序排列。select ename,sal,comm from emp

order by sal desc;

4、查询职员表中,员工姓名的第三个字母是A的员工姓名。

select ename from emp

where ename like'__a%';

5、查询职员表中的职员名字、职位、薪资,并显示为如图-3所示效果:select ename||','||job||','||sal out_put from emp;

图-3

提示:列之间用逗号连接,列头显示成OUT_PUT。

6、查询职员表中员工号、姓名、工资,以及工资提高百分之20%后的结果。select empno,ename,sal,sal*1.2from emp;

7、查询员工的姓名和工资,条件限定为:工资必须大于1200,并对查询结果按入职时间进行排列,早入职排在前面,晚入职排在后面。

select ename,sal from emp

where sal>1200

order by hiredate asc;

8、查询ACCOUNT部门以外的其他部门的编号、名称以及所在地。

select deptno,dname,loc from dept

where dname not in'accounting';

2 Oracle分组查询综合示例

对于如前所示的职员表emp,需要完成如下查询:

1、查询每个部门中每个职位的最高薪水。

select max(sal),deptno,job from emp

group by deptno,job;

2、有SQL语句如下所示:

SELECT a.ename, a.sal, a.deptno, b.maxsal

FROM emp a,

(SELECT deptno, max(sal) maxsal

FROM emp

GROUP BY deptno) b

WHERE a.deptno = b.deptno

AND a. sal < b.maxsal;

此SQL 语句的功能是什么?写出其查询结果。

查询小于每个部门工资最高的员工的姓名,工资。

3、假设员工表中,员工和管理者中间只有一个层级,也就是说,每个员工最多只有一个上级,作为管理者的员工不再有上级管理者,并且,上级管理者相同的员工,他们属于同一个部门。找出EMP 中那些工资高于他们所在部门的管理者工资的员工。

select e1.ename from emp e1 join emp e2

on e1.mgr = e2.empno

where e1.sal>any(e2.sal)

and e1.mgr = e2.empno;

4、找出EMP 中那些工资高于他们所在部门普通员工平均工资的员工。select e.ename,e.sal,e.deptno,d.avgsal from emp e,(

select deptno ,avg(sal) avgsal

from emp

group by deptno

) d

where e.sal>d.avgsal

and e.deptno= d.deptno;

3 Oracle分组查询综合示例(提高题,选做)

1、下列SQL语句出错的原因是(B)。

SELECT classid, AVG(MONTHS_BETWEEN(SYSDATE,entertime))

FROM student

WHERE AVG( MONTHS_BETWEEN (SYSDATE, entertime))>12

GROUP BY classid

ORDER BY AVG(MONTHS_BETWEEN (SYSDATE, entertime));

A) select短语中不能出现组函数。

B) where短语中不能限制分组结果。

C) order by子句中不能包含组函数。

D) 组函数中不能包含单行函数。

2、有学员表Student,该表的结构如表-3所示:

表- 3 学员表Student 信息

编写SQL 语句,查询每班中每个科目的最高成绩。

select classid,subject,max(score)from student group by classid,subject;

3、针对表-3所示的Student 表,执行下述SQL语句:

1) SELECT https://www.wendangku.net/doc/af17461009.html,, a.score, a.classid, b.avgscore

2) FROM student a,

3) (SELECT classid, avg(score) avgscore

4) FROM student

5) GROUP BY classid) b

6) WHERE a.classid = b.classid

7) AND a.score > b. avgscore;

关于运行结果,下列描述正确的是(D)。

A) 第一行出现错误

B) 第三行出现错误

C) 第六行出现错误

D) 语句正常执行

4 Oracle关联查询综合示例

1、有职员表emp,若需列出所有薪水高于平均薪水值的员工信息,则有SQL

语句如下:

SELECT ename, job FROM emp WHERE sal > avg(sal);

上述语句是否正确?如果有错,写出正确的SQL语句。

select a.ename,a.job from emp a,(select avg(sal)sal from emp) b

where a.sal>b.sal;

2、有学员分数表,如图-5所示:

图-5

编写一条SQL 语句,查询出每门课都大于80 分的学生姓名。

select name count(*)from student

where fenshu >80

group by name

having count(*)=3

;

select distinct Sname from S where Sname not in (select distinct Sname from S where grade<=80)

3、有USERLIST 表如图-6所示:

图-6

有CHAEGE 表如图-7所示:

图-7

请用最少的SQL 语句,产生如表-4所示的查询结果:

表-4 查询结果

其中,数据是经过USERLIST、CHAEGE 表进行合适的连接,并以ACCOUNT 字段为关键字分组求和得到。

特别注意:电话号码421004 在USERLIST 表中有一条记录,在CHARGE 表中并没有记录。但是,在查询结果中,合同CCCC 具有一条记录。

4、有两个表emp和taxgrade,其字段分别为:

emp(员工)表: empname,empno,sal

taxgrade(税别)表:taxmin,taxmax,grade

上述字段中,除字段empname外,其他字段均为数值类型。

emp 表的数据如表-5所示:

表-5 emp表示例数据

taxgrade 表的数据如表-6所示:

表-6 taxgrade表示例数据

编写SQL语句,查询编号为1的员工的税别。

select grade from taxgrade

where taxmax<(select sal from emp

where empno =1;

)

and taxmin>(select sal from emp

where empno =1;

);

5、有学员表student,用于记录:学号,姓名,性别,年龄,组织部门;有课程表course,用于记录:课程编号,课程名称;还有选课表sc,用于记录:学号,课程编号,成绩。三表的结构以及关联如图-8所示:

图-8

完成如下要求的SQL 语句:

1)写一个SQL语句,查询选修了’计算机原理’的学生学号和姓名

select Sno,Sname from student

where Sno in(select Sno from SC

where cno =(select cno from Course

where cname ='计算机原理'

)

);

2)写一个SQL语句,查询’周星驰’同学选修了的课程名字

select cname from Course

where cno in(

select cno from Sc

where Sno =(

select Sno from Student

where Sname ='周星驰'

)

);

6、有表test ,表结构如表-7所示:

表-7 test表

编写SQL 语句,查询所有年龄比所属主管年龄大的人的ID和NAME。select a.ID,https://www.wendangku.net/doc/af17461009.html, from test a join test b on a.MANAGER = b.ID

where a.AGE > b.AGE;

7、有表city 记载城市信息,如表-8所示:

表-8 city表

有表state,记载省份信息,如表-9所示:

表-9 state表

欲得到如表-10所示的查询结果:

表-10 查询结果

请编写相应的SQL语句。

select CityNo,CityName,StateNo,StateName from city c full join state s

where c.StateNo = s.StateNo;

5 Oracle关联查询综合示例(提高题,选做)

有科目表,记载学员的学习科目数据,如表-11所示:

表-11 t_subject表(科目表)

有学员表,记载学员的信息,如表-12所示:

表-12 t_student表(学员表)

有考核规则表,记载考核规则,如表-13所示:

表-13 t_assess_rule表(考核规则表)

有学员成绩表,如表-14所示(注,各科的成绩计算方法根据考核规则中占有的比率计算):

表-14 t_performance表(成绩表)

1、如何算出一班(class_id=1)每个学生各科的成绩?

2、请对一班(class_id=1)每个学生各科成绩的总分进行排序。

Oracle练习题讲解

一、填空 1.在多进程Oracle实例系统中,进程分为用户进程、后台进程和服务进程。 2.标准的SQL语言语句类型可以分为:数据定义语句(DDL)、数据操纵语句(DML)和数据控制语句(DCL)。 3.在需要滤除查询结果中重复的行时,必须使用关键字Distinct; 在需要返回查询结果中的所有行时,可以使用关键字ALL。 4.当进行模糊查询时,应使用关键字like和通配符问号(?)或百分号"%"。 5.Where子句可以接收From子句输出的数据,而HA VING子句则可以接收来自WHERE、FROM或GROUP BY子句的输入。 6.在SQL语句中,用于向表中插入数据的语句是Insert。 7.如果需要向表中插入一批已经存在的数据,可以在INSERT语句中使用Select 语句。 8.使用Describe命令可以显示表的结构信息。 9.使用SQL*Plus的Get命令可以将文件检索到缓冲区,并且不执行。 10.使用Save命令可以将缓冲区中的SQL命令保存到一个文件中,并且可以使用Run命令运行该文件。 11.一个模式只能够被一个数据库对象所拥有,其创建的所有模式对象都保存在自己的模式中。 12.根据约束的作用域,约束可以分为表级约束和列级约束两种。列级约束是字段定义的一部分,只能够应用在一个列上;而表级约束的定义独立于列的定义,它可以应用于一个表中的多个列。 13.填写下面的语句,使其可以为Class表的ID列添加一个名为PK_CLASS_ID 的主键约束。 ALTER TABLE Class Add ____________ PK_LASS_ID (Constraint) PRIMARY KEY ________ (ID) 14. 每个Oracle 10g数据库在创建后都有4个默认的数据库用户:system、sys、sysman和DBcnmp

Oracle基础练习题及答案(子查询)

子查询 1.查询和scott相同部门的员工姓名ename和雇用日期hiredate select ename,hiredate from emp where deptno=(select b.deptno from emp a,dept b where a.deptno=b.deptno and ename='SCOTT'); 2.查询工资比公司平均工资高的所有员工的员工号empno,姓名 ename和工资sal。 select empno,ename,sal from emp where sal>(select avg(sal) from emp ); 3.查询和姓名中包含字母u的员工在相同部门的员工的员工号 empno和姓名ename select empno,ename from emp a,dept b where a.deptno(+)=b.deptno and a.deptno=(select deptno from emp where ename like'%U%'); 4.查询在部门的loc为newYork的部门工作的员工的员工姓名 ename,部门名称dname和岗位名称job select ename,dname,job from emp a,dept b where a.deptno=b.deptno and loc='NEW YORK'; 5.查询管理者是king的员工姓名ename和工资sal select a.ename,a.sal from emp a,emp b where a.mgr=b.empno and b.ename='KING';

Oracle基础练习题及答案(表约束)

练习作业 创建表emp1,字段如下 eno char(3), ename char(6) sex char(2) age number(2) dno char(3) 并插入如下数据 1 ,TOM ,男,21 ,’001’ 2 ,JERRY ,男,21 ,’002’ 3 ,KATE ,女,21 ,’003’ 4 ,MARY ,女,21 ,’004’ 5 ,JACK ,男,21 ,’005’ i.在eno字段上创建主键约束 ii.在ename字段上创建非空约束 iii.创建检查约束判断age在18到60岁之间的男性或者age在18到55岁之间的女性iv.在dno字段上创建唯一性约束 create table emp1( eno char(3) primary key, ename char(6) not null, sex char(2), age number(2), dno char(3) unique, constraint sex_age check( ((age between18and60) and sex='男') or ((age between18and55) and sex='女')) ) insert into emp1 values('1','TOM','男',21,'001') insert into emp1 values('2','JERRY','男',21,'002');

insert into emp1 values('3','KATE','女',21,'003'); insert into emp1 values('4','MARY','女',21,'004'); insert into emp1 values('5','JACK','男',21,'005'); v.创建和emp1表字段相同的emp_bak表,将emp_bak表的eno字段与emp表的eno字段创建外键约束 create table emp_bak as select * from emp1 where1=2 alter table emp_bak add constraint v foreign key(eno) references emp1(eno); 1、请创建一个表,表名为phone,表结构如下 电话号码(PHONENUM VARCHAR2(8)) 电话费(PAY number(8,2)) 号码等级(NUMLEVEL VARCHAR2(4)) 费用日期(PAYDATE varchar2(12) create table phone ( phonenum varchar2(8), pay number(8,2), numlevel varchar2(4), paydate varchar2(12) ) 1)插入以下两条数据. 123456, 600, pt04, 20051220 888888, 900, pt05, 20051019. insert into phone values('123456',600,'pt04', '20051220'); insert into phone values('888888',900,'pt05', '20050919');

Oracle基础练习题及答案(多表查询1)

利用scott用户自带的四张表完成如下作业: 1.列出至少有一个员工的所有部门 selectb.deptno,b.dnamefromemp a,dept bwherea.deptno=b.deptnogroupbyb.deptno,b.dnamehavingcount(*)>=1; 2.列出薪金比SMITH高的所有员工 select*fromempwheresal>(selectsalfromempwhereename='SMITH'); 3.列出所有员工的姓名及其直接上级领导的姓名 selecta.ename,b.ename "leader"fromemp a,emp bwherea.mgr=b.empno; 4.列出受雇日期早于其直接上级的所有员工的编号,姓名,部门名称 selecta.empno,a.ename,a.hiredate,c.dnamefromempa,empb,deptcwherea.mgr= b.empnoanda.deptno=c.deptnoanda.hiredate

oracle两表查询练习附答案

Sutdent表的定义 字段名字段描述数据类型主键外键非空唯一自增Id学号INT(10)是否是是是Name姓名VARCHAR(20)否否是否否Sex性别VARCHAR(4)否否否否否Birth出生年份YEAR否否否否否Department院系VARCHAR(20)否否是否否Address家庭住址VARCHAR(50)否否否否否 Score表的定义 字段名字段描述数据类型主键外键非空唯一自增Id编号INT(10)是否是是是Stu_id学号INT(10)否否是否否C_name课程名VARCHAR(20)否否否否否Grade分数INT(10)否否否否否 1.创建student和score表 create table student( id number(10)not null primary key, name varchar2(20)not null, sex varchar2(4), birth number, department varchar2(20)not null, address varchar2(50) ); create table score( id number(10)not null primary key, stu_id number(10)not null, c_name varchar2(20), grade number(10) ); 2.为student表和score表增加记录 向student表插入记录的INSERT语句如下: Insert into student values(100101,'张三','男',23,'计算机系','北京市朝阳区'); Insert into student values(100102,'李四','男',21,'英语系','北京市海淀区'); Insert into student values(100103,'王五','女',19,'建工系','北京市昌平区'); Insert into student values(100104,'孙六','女',21,'化学系','北京市苏州桥'); Insert into student values(100105,'齐七','男',23,'英语系','北京市海淀区'); 向score表插入记录的INSERT语句如下: Insert into score values(001,100101,'计算机基础',89); Insert into score values(002,100101,'英语',93); Insert into score values(003,100101,'数学',87);

Oracle数据库查询练习及答案

1 找出佣金高于薪金60%的雇员。 SELECT * FROM emp WHERE comm>sal*; 2 找出部门10中所有经理和部门20中所有办事员的详细资料。 SELECT * FROM emp WHERE deptno=10 AND JOB='MANAGER' OR deptno=20 AND job='CLERK'; 3 找出部门10中所有经理,部门20中所有办事员以及既不是经理又不是办事员但其薪金大于或等2000的所有雇员的详细资料。 SELECT * FROM emp WHERE deptno=10 AND JOB='MANAGER' OR deptno=20 AND job='CLERK' OR JOB NOT IN('MANAGER','CLERK') AND SAL>=2000; SELECT * FROM emp WHERE deptno=10 AND JOB='MANAGER' OR deptno=20 AND job='CLERK' OR (JOB<>'MANAGER' AND JOB<>'MANAGER' AND SAL>=2000); 4 找出收取佣金的雇员的不同工作。 SELECT DISTINCT JOB FROM EMP WHERE COMM IS NOT NULL; 5 找出不收取佣金或收取的佣金低于300的雇员。 SELECT * FROM EMP WHERE COMM IS NULL OR COMM<300; 6 找出各月最后一天受雇的所有雇员。 SELECT * FROM EMP WHERE HIREDATE=LAST_DAY(HIREDATE); --找出各月最后受雇的所有雇员 SELECT * FROM emp WHERE hiredate IN (SELECT maxh FROM (SELECT MAX(HIREDATE) maxh,EXTRACT(MONTH FROM hiredate)FROM EMP GROUP BY EXTRACT(MONTH FROM hiredate))); 7 找出晚于26年之前受雇的雇员。 SELECT * FROM emp WHERE months_between(SYSDATE,hiredate)<=26*12; 8 显示只有首字母大写的的所有雇员的姓名。 SELECT * FROM emp WHERE ename=initcap(ename); 9 显示正好为5个字符的雇员的姓名。 SELECT * FROM emp WHERE length(ename)=5; 10显示不带有“R”的雇员姓名。 SELECT * FROM emp WHERE instr(ename,'R')=0; SELECT * FROM emp WHERE ename NOT LIKE '%R%'; 11显示所有雇员的姓名的前三个字符。 SELECT substr(ename,1,3) AS en3 FROM emp; 12显所有雇员的姓名,用a替换所有“A”。

oracle数据库练习题参考答案

第1章Oracle 11g简介 软件122班王平安 一、选择题 1.D 2.D 3.C 4.A 5.D 6.D 7.B 二、填空题 1.视图2.索引3.簇4.DB_BLOCK_SIZE 5.SYSTEM 6.数据文件7.日志文件8.控制文件 9.系统全局区(System Global Area,SGA) 10.程序全局区(Program Global Area,PGA) 11.数据库管理员12.安全官员 13.网络管理员14.应用程序开发员 15.应用程序管理员16.数据库用户。 三、简答题 1.答: 数据库由若干个表空间组成,表空间由表、索引、视图等逻辑对象组成,表由段组成,段由区组成,区则由数据块组成。 2.答: 物理结构由构成数据库的操作系统文件所决定。每个Oracle数据库都由3种类型的文件组成:数据文件、日志文件和控制文件。 Oracle数据库有一个或多个物理的数据文件。数据库的数据文件包含全部数据库数据。逻辑数据物理地存储在数据文件中。 每个数据库有两个或多个日志文件组,日志文件组用于收集数据库日志。日志的主要功能是记录对数据所作的修改,所以对数据库作的全部修改记录在日志中。在出现故障时,如果不能将修改数据永久地写入数据文件,则可利用日志得到修改记录,从而保证已经发生的操作成果不会丢失。 每个Oracle数据库有一个控制文件,记录数据库的物理结构。控制文件包含数据库名、数据库数据文件和日志文件的名字、位置和数据库建立日期等信息。 3.答: SGA是一组共享内存结构,其中包含一个Oracle数据库例程数据及控制信息。如果有多个用户同时连接到同一个例程,则此例程的SGA数据由这些用户共享。因此,SGA也称为共享全局区(Shared Global Area)。 SGA包含以下数据结构。

Oracle基础查询关联查询练习题

1 Oracle基础查询综合示例 有职员表emp,表结构如表-1所示:表-1 职员表emp 信息 emp 表中的示例数据如图-1所示: 图-1 有部门表dept,表结构如表-2所示:表-2 部门表dept 信息

dept表中的示例数据如图-2所示: 图-2 需要完成如下查询: 1、查询职员表中,在20和30号部门工作的员工姓名和部门号。 select ename,deptno from emp where deptno in(20,30); 2、查询职员表中,没有管理者的员工姓名及职位,并按职位排序。 select ename,job from emp where mgr is null order by job; 3、查询职员表中,有绩效的员工姓名、薪资和绩效,并按工资倒序排列。select ename,sal,comm from emp order by sal desc; 4、查询职员表中,员工姓名的第三个字母是A的员工姓名。 select ename from emp where ename like'__a%'; 5、查询职员表中的职员名字、职位、薪资,并显示为如图-3所示效果:select ename||','||job||','||sal out_put from emp;

图-3 提示:列之间用逗号连接,列头显示成OUT_PUT。 6、查询职员表中员工号、姓名、工资,以及工资提高百分之20%后的结果。select empno,ename,sal,sal*1.2from emp; 7、查询员工的姓名和工资,条件限定为:工资必须大于1200,并对查询结果按入职时间进行排列,早入职排在前面,晚入职排在后面。 select ename,sal from emp where sal>1200 order by hiredate asc; 8、查询ACCOUNT部门以外的其他部门的编号、名称以及所在地。 select deptno,dname,loc from dept where dname not in'accounting';

oracle 查看用户、权限、角色

查看用户、权限、角色的命令和视图 a 1.查看所有用户: select * from dba_users; select * from all_users; select * from user_users; 2.查看用户系统权限: select * from dba_sys_privs; select * from session_privs; select * from user_sys_privs; 3.查看用户对象权限: select * from dba_tab_privs; select * from all_tab_privs; select * from user_tab_privs; 4.查看所有角色: select * from dba_roles; 5.查看用户所拥有的角色: select * from dba_role_privs; select * from user_role_privs; b 概述 与权限,角色相关的视图大概有下面这些: DBA_SYS_PRIVS: 查询某个用户所拥有的系统权限 USER_SYS_PRIVS: 查询当前用户所拥有的系统权限 SESSION_PRIVS: 查询当前用户所拥有的全部权限 ROLE_SYS_PRIVS:查询某个角色所拥有的系统权限 注意: 要以SYS用户登陆查询这个视图,否则返回空. ROLE_ROLE_PRIVS: 当前角色被赋予的角色 SESSION_ROLES: 当前用户被激活的角色 USER_ROLE_PRIVS: 当前用户被授予的角色 另外还有针对表的访问权限的视图: TABLE_PRIVILEGES ALL_TAB_PRIVS ROLE_TAB_PRIVS: 某个角色被赋予的相关表的权限 oracle与用户角色权限相关的视图 Oracle 本身的数据字典设计我个人觉得很合理, 因为DBA_xxx, ALL_xxx,USER_xxx 让人一看大概就知道这个视图是干什么用的. 本文简要总结了一下与权限,角色相关的视图. 一. 概述 与权限,角色相关的视图大概有下面这些: 1、DBA_SYS_PRIVS: 查询某个用户所拥有的系统权限。 2、USER_SYS_PRIVS: 查询当前用户所拥有的系统权限。

oracle练习题之单表查询

1.查询dept表的全部记录 select * from dept; 2.查询出每个雇员的编号、姓名、基本工资。 select empno,ename,sal from emp; 3.查询每个雇员的职位。 select job from emp; 4.使用DISTINCT关键字删除重复行。 select distinct job from emp; 5.要求显示每一位雇员的姓名、职位、基本年薪 select ename,job,sal*12 from emp; 6.由于公司的福利很高,每个月都有200的饭食补贴以及100元的车费补助,并且年底每 个月都会多发一个月的基本工资,查询此时的年薪。 select ename,(sal+200+100)*12+sal from emp; 7.将【例4-6】中的年薪列,改为income显示 select ename,(sal+200+100)*12+sal income from emp; 8.观察“||”的使用 select '雇员姓名:' || ename || ',职位:' || job info from emp; 9.查询编号为7521的职工的姓名、职位、雇用日期和基本工资。 select ename,job,hiredate,sal from emp where empno=7521; 10.要求查询出基本工资高于1500的所有雇员信息 select * from emp where sal>1500; 11.要求查询出职位是办事员的所有雇员信息。 select * from emp where job='CLERK'; 12.查询工资在1500~3000之间的全部雇员信息。 select * from emp where sal between 1500 and 3000; select * from emp where sal>=1500 and sal<=3000; 13.查询出职位是办事员或销售人员的全部信息。 select * from emp where job='CLERK' or job='SALESMAN'; 14.查询出职位是办事员或销售人员的全部信息,并且要求这些雇员的工资大于1200。 select * from emp where (job='CLERK' or job='SALESMAN') and sal>1200;

Oracle11g数据库基础教程-参考答案资料

第1章Oracle 11g数据库安装与配置 1.简答题 (1) 企业版数据库服务器包含所有的数据库组件,主要针对高端的应用环境,适用于安全性和性能要求较高的联机事务处理(OLTP)、查询密集型的数据仓库和要求较高的Internet应用程序:标准版数据库服务器提供大部分核心的数据库功能和特性,适合于工作组或部门级的应用程序:个人版数据库服务器只提供基本数据库管理功能和特性,适合单用户的开发环境,为用户提供开发测试平台。 (2) 常用数据库类型包括事务处理类、数据仓库类以通用类型。其中事务处理类型主要针对 具有大量并发用户连接,并且用户主要执行简单事务处理的应用环境。事务处理数据库的典型应用有银行系统数据库、Internet电子商务数据库、证券交易系统数据库等。对于需要较 高的可用性和事务处理性能、存在大量用户并行访问相同数据以及需要较高恢复性能的数据 库环境,事务处理类型的配置可以提供最佳性能;数据仓库类型的数据库主要针对有大量的 对某个主题进行复杂查询的应用环境。数据仓库的典型应用有客户订单研究、支持呼叫、销售预测、采购模式以及其他战略性业务问题的历史数据研究。对于需要对大量数据进行快速 访问,以及复杂查询的数据库环境,数据仓库类型配置是最佳选择;通用类型配置的数据库是事务处理数据库与数据仓库配置的折衷方案。既可以支持大量并发用户的事务处理,又可以快速对大量历史数据进行复杂的数据扫描和处理。 (3) 数据库名可以由字母、数字、下划线(_)、#和美元符号($)组成,且必须以字母开头,长度不超过30个字符。在单机环境中,可以不设置域名,域名长度不能超过128个字符。Oracle服务标识符(SID)是一个Oracle实例的唯一名称标识,长度不能超过12个字符。(4) OracleServiceORCL:数据库服务(数据库实例),是Oracle核心服务,是数据库启 动的基础,只有该服务启动,Oracle数据库才能正常启动。(必须启动) OracleOraDb11g_home1TNSListener:监听器服务,该服务只有在远程访问数据库时 才需要(无论远程计算机还是本地计算机,凡是通过Oracle Net网络协议连接数据 库都属于远程访问)。(必须启动) OracleOraDb11g_home1ConfigurationManager:配置Oracle启动时的参数的服务。(非必须启动) OracleOraDb11g_home1ClrAgent:提供对.NET支持的Oracle数据库扩展服务。(非必须启动) OracleJobSchedulerORCL:数据库作业调度服务。(非必须启动) OracleDBConsoleorcl:Oracle控制台服务,即企业管理器服务。只有该服务启动了, 才可以使用Web方式的企业管理器管理数据库。(非必须启动) OracleVssWriterORCL:是Oracle对VSS提供支持的服务。(非必须启动) OracleMTSRecoveryService:是允许数据库充当一个微软事务服务器、COM/COM+对象和分布式环境下的事务资源管理器的服务。

Oracle练习题附答案

练习1、请查询表DEPT中所有部门的情况。 select * from dept; 练习2、查询表DEPT中的部门号、部门名称两个字段的所有信息。 select deptno,dname from dept; 练习3、请从表EMP中查询10号部门工作的雇员姓名和工资。 select ename,sal from emp where deptno=10; 练习4、请从表EMP中查找工种是职员CLERK或经理MANAGER的雇员姓名、工资。select ename,sal from emp where job='CLERK' or job='MANAGER'; 练习5、请在EMP表中查找部门号在10-30之间的雇员的姓名、部门号、工资、工作。select ename,deptno,sal,job from emp where deptno between 10 and 30; 练习6、请从表EMP中查找姓名以J开头所有雇员的姓名、工资、职位。 select ename,sal,job from emp where ename like 'J%'; 练习7、请从表EMP中查找工资低于2000的雇员的姓名、工作、工资,并按工资降序排列。 select ename,job,sal from emp where sal<=2000 order by sal desc; 练习8、请从表中查询工作是CLERK的所有人的姓名、工资、部门号、部门名称以及部门地址的信息。 select ename,sal,emp.deptno,dname,loc from emp,dept where emp.deptno=dept.deptno and job=?CLERK?; 练习9、查询表EMP中所有的工资大于等于2000的雇员姓名和他的经理的名字。 select a.ename,b.ename from emp a,emp b where a.mgr=b.empno(+) and a.sal>=2000; select a.ename 员工,b.ename 经理 from emp a left join emp b on a.mgr=b.empno where a.sal>=2000; 练习10、在表EMP中查询所有工资高于JONES的所有雇员姓名、工作和工资。 select ename,job,sal f rom emp where sal>(select sal from emp where ename=?JONES?); 练习11、列出没有对应部门表信息的所有雇员的姓名、工作以及部门号。 select ename,job,deptno from emp where deptno not in (select deptno from dept); 练习12、查找工资在1000~3000之间的雇员所在部门的所有人员信息 select * from emp where deptno in (select distinct deptno from emp where sal between 1000 and 3000);

oracle 创建create user 及授权grant 查看登陆的用户

oracle 创建create user 及授权grant 查看登陆的用户: 以下都可以: show user; select sys_context('userenv','session_user') from dual; select user from dual; 查看所有登录的用户必须为DBA 用户: select username from v$session; sys、system等DBA 用户查看其他用户(test)中的对象(表): SQL> select * from test.student; 创建一个普通用户都把该用户用起来的流程: 1、创建用户 SQL>create user test indentified by test; 这样就创建了一个用户名密码都为test的用户 但这个时候test还是不能登陆成功的,我们需要赋予相应的权限 2、赋予create session的权限 SQL>grant create session to test; 这样test用户就能成功登陆进去 但是此时用户还是不能创建表我们需要赋予用户创建表的权限: SQL>grant create table to test; 但是用户此时还不能创建表因为需要有使用表空间的权限(相当于用户有了进房间的钥匙但是没有进大门的钥匙。。。) 所以也应该赋予相应的权限 SQL>grant unlimited tablespace to test; 这个时候用户就拥有了创建表的权限由于表是用户test的相应的他就拥有了对创建的表的增删查改的权限了 3、查看用户拥有什么权限可以通过查询一个系统的视图(数字字典) SQL>select * from user_sys_privs; 这样就可以知道当前用户的权限 4、撤销权限 SQL> revoke create table from test; ----------------------------- 一些常用视图的区分 dba_tables dba_all_tables user_tables user_all_tables all_tables

oracle练习题及答案[1](20210217074255)

试题一一、填空题(每小题4分,共20分) 1、数据库管理技术经历了 ______________________________________________ 三_个阶段 2、数据库三级数据结构是 3、O racle 数据库中,SGA由_______________________________________________ 组成 4、在Oracle 数据库中,完正性约束类型有 5、P L/SQL中游标操作包括 二、正误判断题(每小题 2 分,共20 分) 1、数据库中存储的基本对象是数据() 2、数据库系统的核心是DBM(S ) 3、关系操作的特点是集合操作() 4、关系代数中五种基本运算是并、差、选择、投影、连接() 5、O racle 进程就是服务器进程() 6 oraclet系统中SGA所有用户进程和服务器进程所共享() 7、o racle 数据库系统中数据块的大小与操作系统有关() 8、o racle 数据库系统中,启动数据库和第一步是启动一个数据库实例() 9、P L/SQL中游标的数据是可以改变的() 10、数据库概念模型主要用于数据库概念结构设计() 三、简答题(每小题7分,共35分) 1、何谓数据与程序的逻辑独立性和物理独立性?

2、试述关系代数中等值连接与自然连接的区别与联系? 3、何谓数据库,数据库设计一般分为哪些阶段? 4、简述Oracle逻辑数据库的组成? 5、试任举一例说明游标的使用方法? 五、设有雇员表emp(empno,ename,age,sal,tel,deptno), 其中:empno——编号,name ------ 姓名,age --------- 年齡,sal——工资, tel——电话 deptno——咅部门号。 请按下列要求分别晨SQL*PLUS下编程。(每小题3分,共15分) ?1、查询家有电话的职工信息。 *2、查询工资在500至800元之间的雇员信息 *3、按年龄递增顺序显示雇员编号、姓名、年龄、工资 ?4、求部门号为D_01的平均工资 ?5、查找部门号为D_01的40岁以上而工资在400元以下的雇员名单。 试题一答案 一、填空题 1、人工管理、文件系统、数据库系统 2、外模式、模式、内模式 3、数据库缓冲区,重做日志缓冲区,共享池 4、Primay key 约束。Foreign key 约束,Unique 约束,check 约束,notneed 约束 5、声明游标,打开游标,提取游标,关闭游标 二、正误判断题 1、T 2、T 3、T 4、F 5、F 6、T 7、T 8、T 9、F 三、(略) 五、 1、SQL>SELECT * FROM emp WHERE tel NOT NULL; 2、SQL>SELECT * FROM emp WHERE BETWEEN 500 AND 800; 3、SQL>SELECT emp no,e name,age,sal FROM emp ORDER BY age ASC; 4、SQL>SELECT AVG(sal) FROM emp WHERE dept no='D_01'; 5、SQL>SELECT en ame FROM emp WHERE dept no='D_01' AND age>40 AND - Sal<400; 试题二 一、单项选择题(每小题 3 分,共15 分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填在题后的括号内。错选、多选或未选均无分。

如何查看oracle用户具有的权限和角色

如何查看oracle用户具有的权限和角色 上次有同学问我,如何查看一个oracle用户具有的权限和角色,我一时没答上来,回头好好研究了一下,记录一下,备查: 1.查看所有用户: select * from dba_users; select * from all_users; select * from user_users; 2.查看用户或角色系统权限(直接赋值给用户或角色的系统权限): select * from dba_sys_privs; select * from user_sys_privs; 3.查看角色(只能查看登陆用户拥有的角色)所包含的权限 sql>select * from role_sys_privs; 4.查看用户对象权限: select * from dba_tab_privs; select * from all_tab_privs; select * from user_tab_privs; 5.查看所有角色: select * from dba_roles; 6.查看用户或角色所拥有的角色: select * from dba_role_privs; select * from user_role_privs; 7.查看哪些用户有sysdba或sysoper系统权限(查询时需要相应权限) select * from V$PWFILE_USERS 比如我要查看用户wzsb的拥有的权限: SQL> select * from dba_sys_privs where grantee='WZSB';

GRANTEE PRIVILEGE ADMIN_OPTION ------------------------------ ---------------------------------------- ------------ WZSB CREATE TRIGGER NO WZSB UNLIMITED TABLESPACE NO 比如我要查看用户wzsb的拥有的角色: SQL> select * from dba_role_privs where grantee='WZSB'; GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE ------------------------------ ------------------------------ ------------ ------------ WZSB DBA NO YES 查看一个用户所有的权限及角色 select privilege from dba_sys_privs where grantee='WZSB' union select privilege from dba_sys_privs where grantee in (select granted_role from dba_role_privs where grantee='WZSB' );

Oracle期末复习题

一、选择题 1.SQL*PLUS在ORACLE数据库系统中的作用,以下叙述正确的是( ) A.是ORACLE数据库服务器的主要组成部分,是服务器运行的基础构件。B.是ORACLE数据库系统底层网络通信协议,为所有的ORACLE应用程序提供一个公共的通信平台。 C.是ORACLE客户端访问服务器的一个工具,通过它可以向服务器发送SQL命令。 D.是ORACLE客户端到客户端的点对点的通信工具,用来传递各个客户端的数据。 2.命令sqlplus /nolog的作用是( ) A.仅创建一个ORACLE实例,但并不打开数据库. B.仅创建一个ORACLE实例,但并不登录数据库. C.启动sqlplus,但并不登录数据库 D.以nolog用户身份启动sqlplus 3.在SQL*PLUS中显示EMP表结构的命令是( ) A.LIST EMP B.DESC EMP C.SHOW DESC EMP D.STRUCTURE EMP 4.在SQL*PLUS环境中可以利用DBMS_OUTPUT包中的PUT_LINE方法来回显服务器端变量的值 但在此之前要利用一个命令打开服务器的回显功能,这一命令是( ) A.set server on B.set serverecho on C.set servershow on D.set serveroutput on 5.在SQL*PLUS中执行刚输入的一条命令用( ) (A) 正斜杠(/) (B) 反斜杠(\) (C) 感叹号(!) (D) 句号(.) 6.在SQL*PLUS中显示当前用户的命令是( ) (A) show account (B) show accountname (C) show user

Oracle测试题

一、选择题(40分) 1.Oracle发出下列select语句: SQL> select , , 2 from emp e, dept d 3 where = 4 and substr, 1, 1) = ‘S’; 下列哪个语句是Oracle数据库中可用的ANSI兼容等价语句 A.select empno, ename, loc from emp join dept on = where substr, 1, 1) = ‘S’; B.select empno, ename, loc from emp, dept on = where substr, 1, 1) = ‘S’; C.select empno, ename, loc from emp join dept where = and substr, 1, 1) = ‘S’; D.select empno, ename, loc from emp left join dept on = and substr, 1, 1) = ‘S’; 2.下列哪个选项表示Oracle中select语句的功能 A.可以用select语句改变Oracle中的数据 B.可以用select语句删除Oracle 中的数据 C.可以用select语句和另一个表的内容生成一个表 D.可以用select语句对表截断 3.你要操纵Oracle数据,下列哪个不是SQL命令 A.select * from dual; B.set define C.update emp set ename = 6543 where ename = ‘SMITHERS’; D.create table employees(empid varchar2(10) primary key); 4.你要在Oracle中定义SQL查询。下列哪个数据库对象不能直接从select语句中引用A.表B.序列 C.索引 D.视图 5.你要根据PRODUCT_NAME列从PROFITS表查询中过滤返回的数据。下列哪个子句包含相 应过滤条件的引用 A.select B.from C.where D.having 用下列代码所示的内容回答后面五个问题: EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ------ ---------- --------- ---- --------- ---- ---- ------7369 SIMTH CLERK 7902 17-DEC-80 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 7566 JONES MANAGER 7839 02-APR-81 2975 20 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30 7698 BLAKE MANAGER 7839 01-MAY-81 2850 30 7782 CLARK MANAGER 7839 09-JUN-81 2450 10

相关文档