Oracle基础练习题及答案(多表查询2)
史上最全Oracle数据库基本操作练习题(含答案)
史上最全Oracle数据库基本操作练习题(含答案)oracle基本操作练习题使用表格:员工表(emp):部:(deptnonumber(2)notnull,--部门编号dnamevarchar2(14),--部门名称locvarchar2(13)―部门地址)注:添加、删除和修改相对简单。
这些练习旨在进行数据查询。
查询主要使用函数、运算符、模糊查询、排序、分组、变量关联、子查询、分页查询等。
建表脚本(根据需要使用):创建表脚本1练习:2.找出部门10中所有经理(manager)和部门20中所有办事员(clerk)的详细资料。
从empwhere(job='manager'和deptno=10)或(job='clerk'和deptno=20)中选择*;3.统计各部门的薪水总和。
按deptno从empgroup中选择deptno,sum(sal);4.找出部门10中所有理(manager),部门20中所有办事员(clerk)以及既不是经理又不是办事员但其薪水大于或等2000的所有员工的详细资料。
从empwhere(job='manager'和deptno=10)或(job='clerk'和deptno=20)或(jobnotin('manager','clerk')和sal>2000)中选择*;5.列出各种工作的最低工资。
从empgroupbyjob中选择job,min(sal);26.列出每个部门经理的最低工资。
selectdeptno,min(sal)fromempwherejob='manager'groupbydeptno;7.了解领取奖金的员工的不同工作。
9.找出各月最后一天受雇的所有员工。
选择*fromempwherehiredate=最后一天(hiredate);10.显示所有员工的姓名,首字母大写。
Oracle经典练习题及标准答案
Oracle经典练习题及标准答案oracle经典练习sql/*1、选择在部门30中员工的所有信息*/select * from scott.emp where deptno = '30'/*2、列出职位为(MANAGER)的员工的编号,姓名*/select empno, ename from scott.emp where job = 'MANAGER'/*3、找出奖金高于工资的员工*/select * from scott.emp where comm > sal/*4、找出每个员工奖金和工资的总和*/select ename, sal + nvl(comm, 0) from scott.emp/*5、找出部门10中的经理(MANAGER)和部门20中的普通员工(CLERK) */select *from scott.empwhere deptno = '10'and job = 'MANAGER'unionselect *from scott.empwhere job = 'CLERK'and deptno = '20'/*6、找出部门10中既不是经理也不是普通员工,而且工资大于等于2000的员工*/ select *from scott.empwhere job != 'MANAGER'and job != 'CLERK'and sal > 2000/*7、找出有奖金的员工的不同工作*/select distinct(job) from scott.emp where comm is not null /*8、找出没有奖金或者奖金低于500的员工*/select *from scott.empwhere comm is not nulland comm > 500/*9、显示雇员姓名,根据其服务年限,将最老的雇员排在最前面*/select enamefrom scott.emporder by (months_between(sysdate, hiredate) / 12) descselect ename,hiredate from scott.emp order by hiredate/*10、找出每个月倒数第三天受雇的员工*/select * from scott.emp where hiredate = last_day(hiredate) - 2/*11、分别用case和decode函数列出员工所在的部门,deptno=10显示'部门10',deptno=20显示'部门20'deptno=30显示'部门30'deptno=40显示'部门40'否则为'其他部门'*/select ename,case deptnowhen 10 then'部门10'when 20 then'部门20'when 30 then'部门30'when 40 then'部门40'else'其他部门'end 工资情况from scott.empselect ename,decode(deptno,10,'部门10',20,'部门20',30,'部门30',40,'部门40','其他部门') 工资情况from scott.emp/*12、分组统计各部门下工资>500的员工的平均工资*/select avg(sal) from scott.emp where sal > 500 group by deptno/*13、统计各部门下平均工资大于500的部门*/select deptno from scott.emp group by deptno having avg(sal) > 500 /*14、算出部门30中得到最多奖金的员工奖金*/ select max(comm) from scott.emp where deptno = 30/*15、算出部门30中得到最多奖金的员工姓名*/select enamefrom scott.empwhere deptno = 30and comm = (select max(comm) from scott.emp where deptno = 30) /*16、算出每个职位的员工数和最低工资*/select count(ename), min(sal), job from scott.emp group by job/*17、列出员工表中每个部门的员工数,和部门no */select count(ename), deptno from scott.emp group by deptno/*18、得到工资大于自己部门平均工资的员工信息*/select *from scott.emp ewhere sal > (select avg(sal) from scott.emp where e.deptno = deptno)select *from scott.emp e1,(select avg(sal) sals, deptno from scott.emp group by deptno) e2where sal > salsand e1.deptno = e2.deptno/*19、分组统计每个部门下,每种职位的平均奖金(也要算没奖金的人)和总工资(包括奖金) */select avg(nvl(comm,0)), sum(sal + nvl(comm, 0))from scott.empgroup by deptno,job/*20、笛卡尔集*/select * from scott.emp, scott.dept/*21、显示员工ID,名字,直属主管ID,名字*/select empno,ename,mgr,(select ename from scott.emp e1 where e1.empno = e2.mgr) 直属主管名字from scott.emp e2/*22、DEPT表按照部门跟EMP表左关联*/select *fromscott.dept, scott.empwherescott.dept.deptno = scott.emp.deptno(+)/*23、使用此语句重复的内容不再显示了*/select distinct (job) from scott.emp/*24、重复的内容依然显示*/select *from scott.empUNION ALLselect * from scott.emp/*23和24题和22题是一样的*//*25、只显示了两个表中彼此重复的记录。
oracle练习题及答案
oracle练习题及答案1. 找出各月倒数第3 天受雇的所有员工select ename from emp where last_day(hiredate)-2=hiredate;2. 找出早于12 年前受雇的员工select ename from emp where months_between(sysdate,hiredate)>=144;3. 以首字母大写的方式显示所有员工的姓名select initcap(ename) from emp;4. 显示正好为5 个字符的员工的姓名select ename from emp where length(ename)=5;5. 显示不带有“R”的员工姓名select ename from emp where instr(ename,'R',1,1) =0;6. 显示所有员工姓名的前三个字符select substr(ename,1,3) from emp;7. 显示所有员工的姓名,用“a”替换所有的“A”select ename,replace(ename,'A','a') from emp;8. 显示满10 年服务年限的员工的姓名和受雇日期select ename,hiredate from emp where months_between(sysdate,hiredate)>=120;9. 显示员工的详细资料,按姓名排序select * from emp order by ename desc;10. 显示员工的姓名和受雇日期,根据其服务年限,将最老的员工排在最前面select ename,hiredate from emp order by hiredate;11. 显示所有员工的姓名、工作和薪金,按照工作的降序排序,若工作相同则按薪金排序select ename,job,sal from emp order by job desc, sal;12. 显示所有员工的姓名、加入公司的年份和月份,按受雇日期所在月排序,若月份相同则将最早年份的员工排在最前面select ename, to_char(hiredate,'yyyy') h, to_char(hiredate,'mm') m from emp order by m,h; 13. 显示在一个月为30 天的情况所有员工的日薪金,忽略余数select trunc(sal/30) from emp;14. 找出在(任何年份的)2 月受聘的所有员工select ename from emp where to_char(hiredate,'mm')=2;15. 对于每个员工显示其加入公司的天数select ename, sysdate-hiredate from emp;16. 显示姓名字段的任何位置包含“A”的所有员工姓名select ename from emp where instr(ename,'A',1,1) <>0;select ename from emp where ename like '%A%';。
Oracle查询练习及答案
Oracle查询练习及答案分类:技术文档2012-09-16 15:30 383人阅读评论(0) 收藏举报oracletableinsertdelete工作null--1 显示所有部门名select dnamefrom dept--2 显示所有雇员名及其全年收入(工资+补助),并指定列别名"年收入"select ename,nvl2(comm,sal+comm,sal) as 年收入from emp--3 显示存在雇员的所有部门号select distinct deptnofrom emp--4 显示工资超过2850的雇员名和工资select ename,salfrom empwhere sal > 2850--5 显示工资不在1500到2850之间的所有雇员名及工资select ename,salfrom empwhere sal not between 1500 and 2850--6 显示雇员代码为7566的雇员名及所在部门号select ename,deptnofrom empwhere empno = 7566--7 显示部门代码为10和30中工资超过1500的雇员名及工资select ename,salfrom empwhere sal > 1500 and deptno in (10,30)--8 显示无管理者的雇员名及岗位select ename,jobfrom empwhere mgr is null--9 显示所有雇员的平均工资、总计工资、最高工资、最低工资select avg(sal) as 平均工资,sum(sal) as 总计工资max(sal) as 最高工资min(sal) as 最低工资from emp--10 显示每种岗位的雇员总数、平均工资select job,count(*),avg(sal)from empgroup by job--11 显示雇员总数,以及获得补助的雇员数select count(*),count(comm)from emp--12 显示管理者的总人数select count(distinct mgr)from emp--13 显示雇员工资的最大差额select max(sal) - min(sal)from emp--14 显示部门代码为20的部门号,以及该部门的所有雇员名、雇员工资及岗位select ename,sal,jobfrom empwhere deptno = 20--15 显示获得补助的所有雇员名、补助额以及所在部门号select deptno,ename,commfrom empwhere comm is not null--16 显示所有雇员的姓名、部门编号、工资,并且列名要显示为中文select ename as 姓名,deptno as 部门编号,sal as 工资from emp--17 显示每个部门每个岗位的平均工资、每个部门的平均工资、每个岗位的平均工资select deptno,job,avg(sal)from empgroup by cube(deptno,job)--18 显示工资大于1500的雇员名和工资,并且按照工资的降序排列select ename,salfrom empwhere sal > 1500order by sal desc--19 显示雇员部门编号为10或20的信息(要求使用IN关键字)select *from empwhere deptno in (10,20)--20 显示雇员名的第二个字母为A的信息select enamefrom empwhere ename like '_A%'--21 显示没有发放补助的雇员信息select *from empwhere comm is null--22 显示雇员表中记录总数select count(*)from emp以scott/tiger登录数据库,完成以下题目--1 显示所有雇员名、雇员工资及所在部门名select d.dname,e.ename,e.salfrom dept d,emp ewhere d.deptno = e.deptno--2 显示部门代码为20的部门名,以及该部门的所有雇员名、雇员工资及岗位select d.dname,e.ename,e.salfrom dept d,emp ewhere d.deptno = e.deptnoand d.deptno = 20--3 显示所有雇员名、雇员工资及工资级别select e.ename,e.sal,s.gradefrom emp e,salgrade swhere e.sal >= s.losal and e.sal <= s.hisal--4 显示雇员"SCOTT"的管理者名select m.enamefrom emp e,emp mwhere e.mgr = m.empnoand e.ename = 'SCOTT'--5 显示获得补助的所有雇员名、补助额以及所在部门名select d.dname,e.ename,mfrom dept d,emp ewhere d.deptno = e.deptnoand m is not null--6 查询EMP表和SALGRADE表,显示部门代码为20的雇员名、工资及其工资级别select e.ename,e.sal,s.gradefrom emp e,salgrade swhere e.sal >= s.losal and e.sal <= s.hisaland e.deptno = 20--7 显示部门代码为10的所有雇员名、部门名,以及其他部门名select e.ename,d.dnamefrom dept d,emp ewhere d.deptno = e.deptno(+)and e.deptno(+) = 10--8 显示部门代码为10的所有雇员名、部门名,以及其他雇员名select e.ename,d.dnamefrom dept d,emp ewhere d.deptno(+) = e.deptnoand d.deptno(+) = 10--9 显示部门代码为10的所有雇员名、部门名,以及其他部门名和雇员名select e.ename,d.dnamefrom dept d full join emp eon d.deptno = e.deptnoand d.deptno = 10--10显示"BLAKE"同部门的所有雇员,但不显示"BLAKE"select e.ename,e.deptnofrom emp e,emp bwhere e.deptno = b.deptnoand e.ename <> 'BLAKE'and b.ename = 'BLAKE'--01 按以下格式显示下面的信息,条件是工资大于1500的。
Oracle基础练习题及答案(基本查询)
Oracle基础练习题及答案(基本查询)练习题使用SQL PLUS工具登陆,用户名用scott。
1.1 在emp表中查询出所有记录的姓名、部门编号、薪水,并且列名要显示为中文。
select empno"员工编号",ename"员工姓名",job"职位",mgr"上级领导",hiredate"入职日期",sal"薪资",comm"奖金",deptno"部门编号" from emp;1.2 在emp表中查询出薪水大于1500的记录,并且按照薪水的降序排列。
select * from emp where sal>1500order by sal desc;1.3 在emp表中查询出comm字段为空值的记录。
select * from emp where comm is null;1.4 查询出emp表中含有几个部门的记录。
(用DISTINCT去除重复记录)select distinct deptno from emp;1.5 在emp表中查询出部门编号为10或20的记录(要求使用IN 关键字)select * from emp where deptno in(10,20);1.6 在emp表中查询出姓名的第二个字母为A的记录。
select ename from emp where ename like'_A%';1.7 查询出emp表中总共有多少条记录。
select count(*) from emp;1.8 查询emp表中出每个部门的部门代码、薪水之和、平均薪水。
select deptno,sum(sal),avg(sal) from emp group by deptno;使用scott用户登录,利用原有的四张表完成如下作业1.选择部门30的所有员工select * from emp where deptno=30;2.列出所有办事员(CLERK)的姓名,编号和部门编号select ename,empno,deptno from emp where job='CLERK';3.找出佣金高于薪金的所有员工select * from emp where comm>sal;4.找出佣金高于薪金30%的所有员工select * from emp where comm>(sal*0.3);5.找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料select* from emp where(deptno=10and job='MANAGER')or(deptno=20and job='CLERK');6.找出部门10中所有经理(MANAGER),部门20 中所有办事员(CLERK),既不是经理又不是办事员(CLERK)但其薪金大于或等于2000的所有员工的详细资料。
Oracle 考试试题(带答案)
session2 ---------------------------------------
T2 delete from t where rownum <=100;
T3
begin
delete from t where rownum <=100;
commit;
end;
/
T4 truncate table t;
select seq.ROWNUM from dual; select seq.ROWID from dual; select seq.CURRVAL from dual; select seq.NEXTVAL from dual;
c
14) 在Oracle中,游标都具有下列属性,除了()。
a) b) c) d) e) 参考答案
SELECT name FROM teacher WHERE email = NULL;
SELECT name FROM teacher WHERE email <> NULL;
SELECT name FROM teacher WHERE email IS NULL;
SELECT name FROM teacher WHERE email IS NOT NULL;
a) b) c) d) 参考答案
归档日志运行模式 RECOVER命令 恢复管理器(RMAN) Export和Import工具
d
18 有表一的查询结果如下,该表为学生成绩表
select id,grade from student_grade
ID
GRADE
--------
-----------
1
Oracle基础练习题及答案(多表查询1)(共5篇)
Oracle基础练习题及答案(多表查询1)(共5篇)第一篇:Oracle基础练习题及答案(多表查询1)利用scott用户自带的四张表完成如下作业:1.列出至少有一个员工的所有部门select b.deptno,b.dname from emp a,dept b where a.deptno=b.deptno group by b.deptno,b.dname having count(*)>=1;2.列出薪金比SMITH高的所有员工select * from emp where sal>(select sal from emp where ename='SMITH');3.列出所有员工的姓名及其直接上级领导的姓名select a.ename,b.ename “leader” from emp a,emp b wherea.mgr=b.empno;4.列出受雇日期早于其直接上级的所有员工的编号,姓名,部门名称select a.empno,a.ename,a.hiredate,c.dname from emp a,emp b,dept c where a.mgr=b.empno and a.deptno=c.deptno anda.hiredate5.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门select b.dname,a.* from emp a,dept b wherea.deptno(+)=b.deptno;6.列出所有CLERK(办事员)的姓名,及其部门名称,部门人数select aa.ename,aa.job,bb.dname,(select count(a.deptno)from emp a,dept b where a.deptno=b.deptno and b.dname=bb.dname group by a.deptno)from emp aa,dept bb where aa.deptno(+)=bb.deptno and aa.job='CLERK';7.列出最低薪金大于1500的各种工作及从事此工作的全部雇员人数select a.job,min(sal),count(ename)from emp a,dept b wherea.deptno=b.deptno having min(sal)>1500 group by a.job;8.列出在部门SALES(销售部)工作的员工的姓名,假定不知道销售部的部门编号。
oracle习题答案
oracle习题答案Oracle习题答案Oracle数据库是全球领先的企业级关系型数据库管理系统,被广泛应用于各种企业和组织中。
学习Oracle数据库管理是IT从业人员必备的技能之一,因此掌握Oracle习题答案对于提升自己的技能水平至关重要。
在学习Oracle数据库管理的过程中,经常会遇到各种习题和练习题,通过解答这些习题可以加深对Oracle数据库的理解和掌握。
下面我们就来看一些常见的Oracle习题以及它们的答案。
1. 什么是Oracle数据库?答:Oracle数据库是由美国Oracle公司开发的一款关系型数据库管理系统,它是一种高性能、可靠性强的数据库系统,被广泛应用于企业级应用中。
2. 如何创建一个新的数据库用户?答:可以使用CREATE USER语句来创建一个新的数据库用户,例如:CREATE USER new_user IDENTIFIED BY password;3. 如何查询表中的数据?答:可以使用SELECT语句来查询表中的数据,例如:SELECT * FROM table_name;4. 如何删除数据库中的数据表?答:可以使用DROP TABLE语句来删除数据库中的数据表,例如:DROP TABLE table_name;5. 如何备份Oracle数据库?答:可以使用RMAN工具来备份Oracle数据库,例如:RMAN> BACKUP DATABASE;通过解答这些习题,我们可以加深对Oracle数据库管理的理解和掌握,提升自己的技能水平。
希望以上Oracle习题答案对大家有所帮助,也希望大家在学习Oracle数据库管理的过程中能够不断提升自己的技能,成为一名优秀的数据库管理人员。
oracle上机试题及答案
oracle上机试题及答案Oracle上机试题及答案1. 查询当前数据库版本- 请写出SQL语句来查询当前数据库的版本。
答案:```sqlSELECT * FROM V$INSTANCE;```2. 创建表- 编写SQL语句创建一个名为`employees`的表,包含字段`id`(主键,自动增长),`name`(姓名),`department`(部门),`salary`(薪资)。
答案:```sqlCREATE TABLE employees (id NUMBER GENERATED ALWAYS AS IDENTITY,name VARCHAR2(100),department VARCHAR2(50),salary NUMBER(10, 2),PRIMARY KEY (id));```3. 插入数据- 向`employees`表中插入一行数据,姓名为"John Doe",部门为"IT",薪资为5000。
答案:```sqlINSERT INTO employees (name, department, salary) VALUES('John Doe', 'IT', 5000);```4. 更新数据- 更新`employees`表中姓名为"John Doe"的员工的薪资为6000。
答案:```sqlUPDATE employees SET salary = 6000 WHERE name = 'John Doe'; ```5. 删除数据- 删除`employees`表中所有薪资低于3000的员工记录。
答案:```sqlDELETE FROM employees WHERE salary < 3000;```6. 查询数据- 查询`employees`表中所有员工的姓名和薪资,并按薪资从高到低排序。
史上最全Oracle数据库基本操作练习题(含答案)
Oracle基本操作练习题使用表:员工表(emp):(empno NUMBER (4)notnull,--员工编号,表示唯一ename VARCHAR2 (10),--员工姓名job VARCHAR2 (9),--员工工作职位mgr NUMBER (4),--员工上级领导编号hiredate DATE,--员工入职日期salNUMBER (7,2),--员工薪水comm NUMBER (7,2),--员工奖金dept no NUMBER (2)—员工部门编号)部门表(dept):(deptno NUMBER (2)notnull,--部门编号dname VARCHAR2 (14),--部门名称locVARCHAR2 (13)—部门地址)说明:增删改较简单,这些练习都是针对数据查询,查询主要用到函数、运算符、模糊查询、排序、分组、多变关联、子查询、分页查询等。
建表脚本(根据需要使用): 建表脚本.txt练习题:1. 找出奖金高于薪水60%的员工信息。
SELECT * FROM emp WHERE comm>sal*0.6;2. 找出部门10中所有经理(MANAGER )和部门20中所有办事员(CLERK)的详细资料。
SELECT * FROM emp WHERE (JOB二'MANAGER' AND DEPTNO=10) OR (JOB二'CLERK' AND DEPTNO=20);3. 统计各部门的薪水总和。
SELECT dept no,SUM(sal) FROM emp GROUP BY dept no;4. 找出部门10中所有理(MANAGER ),部门20中所有办事员(CLERK)以及既不是经理又不是办事员但其薪水大于或等 2000的所有员工的详细资料。
SELECT * FROM emp WHERE (JOB二'MANAGER' AND DEPTNO=10) OR (JOB 二'CLERK' AND DEPTNO=20) OR (JOB NOT IN('MANAGER','CLERK') ANDSAL>2000);5. 列出各种工作的最低工资。
最新Oracle测试题+答案
1) PL/SQL块中可以使用下列()命令。
(选择两项)a) TRUNCATEb) DELETEc) SA VEPOINTd) ALTER TABLE2) 授予sa用户在SCOTT.EMP表中SAL列的更新权限的语句是(B)〔选择一项〕a) GRANT CHANGE ON SCOTT.EMP TO SAb) GRANT UPDA TE ON SCOTT.EMP(SAL) TO SAc) GRANT UPDA TE (SAL) ON SCOTT.EMP TO SAd) GRANT MODIFY ON SCOTT.EMP(SAL) TO SA3) EMP表有14条记录,则语句SELECT ‘Aptech’FROM EMP 的执行结果是(C)〔选择一项〕a) Aptechb) 无输出c) 14行Aptechd) 编译出错4) PL/SQL块中哪几部分是可选的()〔选择二项〕a) Declareb) Beginc) Exceptiond) Constant5) 在创建序列的过程中,下列()选项指定序列在达到最大值或最小值后,将继续从头开始生成值。
(选择一项)a) Cycleb) Nocyclec) Cached) Nocache6) 同义词有以下()用途。
(选择三项)a) 简化SQL 语句b) 隐藏对象的名称和所有者c) 提供对对象的公共访问d) 显示对象的名称和所有者7) Oracle中用来释放锁的语句有()〔选择二项〕a) commitb) Drop lockc) rollbackd) unlock8) 关于类型定义Number(9,2)说法正确的有()〔选择一项〕a) 整数部分9位,小数部分2位,共11位b) 整数部分7位,小数部分2位,共9位c) 整数部分6位,小数点一位,小数部分2位,共9位d) 以上说法均不正确9) 下列哪种Lob类型用来存储数据库以外的操作系统文件()〔选择一项〕a) CLOBb) BLOBc) CFILEd) BFILE10) Oracle中的三种系统文件分别是()〔选择三项〕a) 数据文件b) 归档文件c) 日志文件d) 控制文件11) 下列哪项不是Oracle中常用的分区方法?()〔选择一项〕a) 范围分区b) 散列分区c) 列表分区d) 条件分区12) 查看Test中名称为P1的分区中的记录的查询语句为()〔选择一项〕a) Select * from Test Where PartitionName=’p1’b) Select * from Test(p1)c) Select * from Test Partition(p1);d) 以上均正确13) 创建序列时,若未指定Cycle选项,则当当前值大于MaxValue时将()〔选择一项〕a) 从MinValue重新开始循环b) 重复使用MaxValue 值c) 执行出错d) 使用随机值14) 下列哪项是创建索引组织表所必需的()〔选一项〕a) Primary Keyb) Order Byc) Group Byd) 以上均不是15) 若表的某字段值存在大量的重复,则基于该字段适合创建哪种索引?()〔选一项〕a) 标准索引b) 唯一索引c) 位图索引d) 分区索引16) 在PL/SQL块中定义一个名为PI值为3.14的Real型常量的语法是()〔选一项〕a) A.Pi Const Real=3.14;b) B.Pi Real Const =3.14;c) C.Constant Pi Real:=3.14d) D.Pi Constant Real:=3.1417) 22.当Select语句没有返回行时,将引发下列哪个异常?()[选择一项]a) A.No_rows_foundb) B.No_data_foundc) C.No_Data_rows_foundd) D.Invalid_Number18) Oracle中提供的两种游标是()〔选择二项〕a) A.隐式游标b) B.静态游标c) C.REF游标d) D.显式游标19) 若Emp表中有14条记录,则用户执行了以下操作,结果是:()〔选择一项〕Cursor mycur is Select * From emp;。
史上最全Oracle数据库基本操作练习题(含答案)
Oracle基本操作练习题使用表:员工表(emp):(empnoN UMBER(4)notnul l,--员工编号,表示唯一enameV ARCHA R2(10),--员工姓名job VARCHA R2(9),--员工工作职位mgrNUM BER(4),--员工上级领导编号hireda teDAT E,--员工入职日期salNUM BER(7,2),--员工薪水commNU MBER(7,2),--员工奖金deptno NUMBE R(2)—员工部门编号)部门表(dept):(deptno NUMBE R(2)notnul l,--部门编号dnameV ARCHA R2(14),--部门名称locVAR CHAR2(13)—部门地址)说明:增删改较简单,这些练习都是针对数据查询,查询主要用到函数、运算符、模糊查询、排序、分组、多变关联、子查询、分页查询等。
建表脚本.txt建表脚本(根据需要使用):练习题:1.找出奖金高于薪水60%的员工信息。
SELECT * FROM emp WHEREcomm>sal*0.6;2.找出部门10中所有经理(MANAGE R)和部门20中所有办事员(CLERK )的详细资料。
SELECT* FROM emp WHERE(JOB='MANAGE R' AND DEPTNO=10) OR (JOB='CLERK' AND DEPTNO=20);3.统计各部门的薪水总和。
SELECT deptno,SUM(sal) FROM emp GROUPBY deptno;4.找出部门10中所有理(M ANAGE R),部门20中所有办事员(C LERK 以及既不是经理又不是办事员但其薪水大于或等2000的所有员工的)详细资料。
oracle练习题及答案
o r a c l e练习题及答案(总7页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--试题一一、填空题(每小题4分,共20分)1、数据库管理技术经历了___人工管理、文件系统、数据库系统__三个阶段2、数据库三级数据结构是:外模式、模式、内模式3、Oracle数据库中,SGA由_数据库缓冲区,重做日志缓冲区,共享池组成4、在Oracle数据库中,完正性约束类型有:Primay key约束。
Foreign key约束,Unique约束,check约束,not need约束5、PL/SQL中游标操作包括:声明游标,打开游标,提取游标,关闭游标二、正误判断题(每小题2分,共20分)1、数据库中存储的基本对象是数据(T)2、数据库系统的核心是DBMS(T)3、关系操作的特点是集合操作(T)4、关系代数中五种基本运算是并、差、选择、投影、连接(F)5、Oracle进程就是服务器进程(F)6、oraclet系统中SGA所有用户进程和服务器进程所共享(T)7、oracle数据库系统中数据块的大小与操作系统有关(T)8、oracle数据库系统中,启动数据库和第一步是启动一个数据库实例(T)9、PL/SQL中游标的数据是可以改变的(F)10、数据库概念模型主要用于数据库概念结构设计(T)三、简答题(每小题7分,共35分)1、何谓数据与程序的逻辑独立性和物理独立性2、试述关系代数中等值连接与自然连接的区别与联系3、何谓数据库,数据库设计一般分为哪些阶段4、简述Oracle逻辑数据库的组成5、试任举一例说明游标的使用方法五、设有雇员表emp(empno,ename,age,sal,tel,deptno),其中:empno-----编号,name------姓名,age -------年齡,sal-----工资,tel-----电话deptno-----部门号。
请按下列要求分别晨SQL*PLUS下编程。
oracle练习题及答案
oracle练习题及答案Oracle练习题及答案Oracle数据库是全球最受欢迎的关系型数据库管理系统之一,广泛应用于企业级应用程序开发和数据管理。
为了提高对Oracle数据库的理解和应用能力,下面将提供一些常见的Oracle练习题及其答案。
1. 查询表中的所有数据答案:使用SELECT语句可以查询表中的所有数据,例如:SELECT * FROM 表名;2. 查询表中的特定列数据答案:使用SELECT语句并指定需要查询的列名,例如:SELECT 列名1, 列名2 FROM 表名;3. 查询表中满足特定条件的数据答案:使用SELECT语句并使用WHERE子句来指定条件,例如:SELECT * FROM 表名 WHERE 列名 = 值;4. 对查询结果进行排序答案:使用SELECT语句并使用ORDER BY子句来指定排序的列和排序方式,例如:SELECT * FROM 表名 ORDER BY 列名 ASC/DESC;5. 对查询结果进行分组答案:使用SELECT语句并使用GROUP BY子句来指定分组的列,例如:SELECT 列名1, 列名2 FROM 表名 GROUP BY 列名1;6. 查询表中的唯一数据答案:使用SELECT DISTINCT语句可以查询表中的唯一数据,例如:SELECT DISTINCT 列名 FROM 表名;7. 查询表中的前N条数据答案:使用SELECT语句并使用ROWNUM关键字来限制查询结果的行数,例如:SELECT * FROM 表名 WHERE ROWNUM <= N;8. 使用聚合函数进行数据统计答案:使用聚合函数如SUM、AVG、COUNT等可以对数据进行统计,例如:SELECT COUNT(*) FROM 表名;9. 进行多表查询答案:使用SELECT语句并使用JOIN关键字来连接多个表,例如:SELECT * FROM 表名1 JOIN 表名2 ON 表名1.列名 = 表名2.列名;10. 更新表中的数据答案:使用UPDATE语句可以更新表中的数据,例如:UPDATE 表名 SET 列名 = 值 WHERE 条件;11. 删除表中的数据答案:使用DELETE语句可以删除表中的数据,例如:DELETE FROM 表名 WHERE 条件;12. 创建新表答案:使用CREATE TABLE语句可以创建新表,例如:CREATE TABLE 表名 (列名1 数据类型, 列名2 数据类型, ...);13. 修改表结构答案:使用ALTER TABLE语句可以修改表的结构,例如:ALTER TABLE 表名 ADD 列名数据类型;14. 删除表答案:使用DROP TABLE语句可以删除表,例如:DROP TABLE 表名;以上是一些常见的Oracle练习题及其答案,希望能够帮助读者更好地理解和应用Oracle数据库。
oracle练习题及答案
oracle练习题及答案Oracle练习题及答案Oracle是一种广泛使用的关系型数据库管理系统,它具有强大的数据处理和管理能力。
对于想要提升自己的数据库技能的人来说,练习题是一个非常有效的学习方法。
通过解答一系列的练习题,可以帮助我们更好地理解Oracle的使用和原理。
下面是一些常见的Oracle练习题及其答案,供大家参考。
1. 查询一个表中所有的数据答案:可以使用SELECT语句来查询一个表中的所有数据。
例如,假设我们有一个名为"employees"的表,可以使用以下语句来查询所有的数据:SELECT * FROM employees;2. 查询一个表中特定列的数据答案:如果我们只想查询一个表中特定列的数据,可以使用SELECT语句,并在其中指定要查询的列名。
例如,如果我们只想查询"employees"表中的"first_name"和"last_name"列,可以使用以下语句:SELECT first_name, last_name FROM employees;3. 查询满足特定条件的数据答案:如果我们只想查询满足特定条件的数据,可以在SELECT语句中使用WHERE子句来指定条件。
例如,如果我们只想查询"employees"表中工资大于5000的员工,可以使用以下语句:SELECT * FROM employees WHERE salary > 5000;4. 对查询结果进行排序答案:如果我们想对查询结果进行排序,可以在SELECT语句中使用ORDER BY子句,并指定要排序的列名。
例如,如果我们想按照"employees"表中的"last_name"列进行升序排序,可以使用以下语句:SELECT * FROM employees ORDER BY last_name ASC;5. 对查询结果进行分组答案:如果我们想对查询结果进行分组,可以在SELECT语句中使用GROUP BY 子句,并指定要分组的列名。
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);Insert into score values(004,100102,'计算机基础',83);Insert into score values(005,100102,'英语',81);Insert into score values(006,100102,'数学',77);Insert into score values(007,100103,'计算机基础',91);Insert into score values(008,100103,'英语',85);Insert into score values(009,100103,'数学',88);Insert into score values(010,100104,'计算机基础',84);Insert into score values(011,100104,'英语',71);Insert into score values(012,100104,'数学',83);3.查询student表的所有记录select*from student;4.查询student表的第2条到4条记录1.select *,rownum as con from student where rownum<=4 and rownum>=2;(select*from student where rownum<=4)minus(select*from student where rownum<=1);1、Minus:两个查询,MINUS是从第一个查询结果减去第二个查询结果,如果有相交部分就减去相交部分;否则和第一个查询结果没有区别. INTERSECT是两个查询结果的交集,UNION ALL是两个查询的并集;2、Rownum:对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,而且rownum 不能以任何表的名称作为前缀。
orcl基础练习题
orcl基础练习题Oracle Corporation(ORCL)是全球最大的企业级软件公司之一,它的产品广泛应用于数据库管理系统、云计算、商业智能等领域。
本文将为读者提供一些ORCL基础练习题,帮助其巩固相关知识和技能。
练习题一:SQL查询1. 查询所有学生的姓名、年龄和性别。
2. 查询所有成绩大于等于80分的学生的姓名和成绩。
3. 查询年龄在20岁到25岁之间的男生的姓名和年龄。
4. 查询年龄最小的学生的姓名、年龄和性别。
5. 查询每个班级的学生数量。
练习题二:表操作1. 创建一个名为“student”的表,包含字段:学号(id,整数型)、姓名(name,字符串型)、年龄(age,整数型)、性别(gender,字符串型)。
2. 向表中插入以下学生信息:(101, 'Alice', 20, 'Female'),(102,'Bob', 22, 'Male'),(103, 'Cathy', 21, 'Female'),(104, 'David', 23,'Male')。
3. 更新学号为102的学生的姓名为'John'。
4. 删除学号为104的学生。
练习题三:数据查询与操作有以下两张表:Table: Students学号(id)姓名(name)班级(class)101 Alice A1102 Bob A2103 Cathy A1104 David A3Table: Scores学号(id)课程(course)分数(score)101 Math 88102 Math 78103 Math 92101 English 90102 English 85103 English 88请根据以上表格回答以下问题:1. 查询每个学生的姓名、所在班级和总分数。
2. 查询每个学生的姓名、班级和平均分数。
oracle多表查询练习题-答案
any
all
select job,count(empno)
from emp
where job in (select job from emp group by job having min(sal)>1500) group by job ;
8、列出在部门“sales”(销售部)工作的员工的姓名,假定不知道销售部的部门编号
5、列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门
左右连接
selecept d
where e.deptno(+)=d.deptno;
6、列出所有“CLERK”的姓名及其部门名称,部门的人数
select ename,deptno from emp where job='CLERK';
from emp group by deptno)ed
where d.deptno=ed.deptno(+);
16、列出各种工作的最低工资以及从事此工作的雇员姓名
分析:按工作分组,求出最低工资 min()
select job,min(sal) m from emp group by job;
from emp
group by deptno;
平均服务期限
hiredate
sysdate
select deptno,count(empno),round(avg(sal)) 平均工资,round(avg(months_between(sysdate,hiredate)/12)) 平均服务期限
where e.deptno=d.deptno
group by d.dname;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
多表查询
1.显示所有员工的姓名ename,部门号deptno和部门名称dname。
select ename,a.deptno,dname from emp a,dept b where a.deptno=b.deptno;
2.查询20号部门员工的job和20号部门的loc
select ename,job,loc from emp a,dept b where a.deptno=b.deptno and a.deptno=20;
3.选择所有有奖金comm的员工的ename , dname , loc
select ename,dname,loc from emp a,dept b where a.deptno=b.deptno and comm is not null;
4.选择在DALLAS工作的员工的ename , job , deptno, dname
select ename,job,a.deptno,dname from emp a,dept b where a.deptno=b.deptno and loc='DALLAS';
5.选择所有员工的姓名ename,员工号deptno,以及他的管理者mgr
的姓名ename和员工号deptno,结果类似于下面的格式employees Emp# manager Mgr#
SMITH 7369 FORD 7902
select a.ename "employees",a.empno "Emp#",b.ename "manager",b.empno "Mgr#" from emp a,emp b where a.mgr=b.empno;
6. 查询各部门员工姓名和他们所在位置,结果类似于下面的格式
Deptno Ename Loc
20 SMITH DALLAS
select a.deptno "Deptno",ename "Ename",loc "Loc" from emp a,dept b where a.deptno=b.deptno;。