Oracle SQL练习题(2)

合集下载

Oracle的sql语句练习

Oracle的sql语句练习

3.查出暂时还没有老师任教的课程?
select , from course c left join teacher t on t.c_id = c.c_id where t.t_id is null
4.查出暂时还没有授课任务的老师?
select*from teacher t left join course c on t.c_id=c.c_id where c.c_id is null
select , from course c left join teacher t on t.c_id = c.c_id
2.查出所有,老师与课程之间的关系?
select * from course c inner join teacher t on t.c_id = c.c_id
insert into Employee (id ,uName, dept_id, salary ) values (5,'QianQi',4, 2000);
要求:
<1>使用自连接查出表中员工的姓名及其领导的姓名?
<2>使用外连接查出表中员工的姓名及其领导的姓名?
<3> 用一条查询语句实现(union/union all)
drop table Employee;
create table Employee(
id number primary key,
uName varchar2(32) ,
dept_id int ,
insert into Student(id,name ,course, score ) values (2,'aaa','cpp',88);

oracle sql语句练习题

oracle sql语句练习题
from
emp e,
salgrade s,
dept d
where
e.sal between s.losal and s.hisal and
e.deptno = d.deptno and
s.grade!=4;
14.查找出职位和'MARTIN' 或者'SMITH'一样的员工的平均工资
select avg(sal) from emp where job in
(select distinct job from emp where ename in('MARTIN','SMITH'));
15.查找出不属于任何部门的员工
select * from emp where deptno not in (select distinct deptno from dept);
9.得到每个月工资总数最少的那个部门的部门编号,部门名称,部门位置
select d.*
from
dept d,
(select * from
(select deptno,sum(sal) as sum_sal from emp group by deptno order by sum(sal))
where e.sal>t.sal;
4.列出所有员工的姓名和其上级的姓名
select xd.ename ,boss.ename boss_name from emp xd,emp boss where xd.mgr=boss.empno;
5.以职位分组,找出平均工资最高的两种职位
select t.*
from emp) boss

oracle sql数据库基础练习题

oracle sql数据库基础练习题
3.运行文件p3q2中的Байду номын сангаас询。
4.查询出雇员表中所有员工的姓名;雇佣日期;和工资调整日期(工作6个月后的第一个星期一)。其格式要求是类似于:“1981-09-23”。
5.
查出每个员工的名字(ename)、雇佣日期到现在的日期间隔的月数(要求为整数),该列命名为MONTHS_WORKED,并以该列的降序排序
按照工作类型分类查出每种工作的名称和其员工的最高最低平均的工资工资的总和这些数值都用四舍五入进行处理
第一、二章
1,解锁scott用户,并设置密码为tiger
2,连接scott用户,并显示有多少表
3,写一个查询显示emp表的所有内容
第三章
1.写一个查询,选择出当前的日期。
2.查询出雇员表(emp)表中的雇员号、姓名、新的薪水(是原先薪水的1.25倍),并将该列标记为new salary。将该脚本保存到p3q2.sql中。
删除emp表中部门号为20的所有雇员信息,看能够成功?
4.以DBA用户,创建用户temp2,密码为temp2,并授予会话创建权限:CREATE SESSION
5.以DBA用户,创建角色temp_role
6.以scott用户登录,将查询scott的dept表的权限授权给temp_role
6.将角色temp_role授给用户temp和temp2
4.在EMPLOYEE表中的deptno列上创建一个非唯一索引deptno_idx。
第十四章
1.使用DBA账户创建一个账号为temp,密码为temp用户,并授予会话创建权限:CREATE SESSION
2.以SCOTT用户登录,将查询Scott用户的emp表的权限授权给temp用户
3.使用temp用户登录。查询emp表中部门号为20的所有雇员信息,看能够成功?

oracle sql练习题

oracle sql练习题

oracle sql练习题1. 编写一个SQL查询,找出员工表中工资最高的员工的姓名和工资。

```SELECT ename, salFROM empWHERE sal = (SELECT MAX(sal) FROM emp);```2. 编写一个SQL查询,计算出每个部门的平均工资,并按照平均工资降序排列。

```SELECT deptno, AVG(sal) as avg_salaryFROM empGROUP BY deptnoORDER BY avg_salary DESC;```3. 编写一个SQL查询,找出没有任何员工的部门(即部门中没有员工记录的部门)。

```SELECT d.deptno, d.dnameFROM dept dLEFT JOIN emp e ON d.deptno = e.deptnoWHERE e.deptno IS NULL;```4. 编写一个SQL查询,找出在每个部门中薪资排名第二高的员工的姓名和工资。

```SELECT d.dname, e.ename, e.salFROM emp eINNER JOIN dept d ON e.deptno = d.deptnoWHERE e.sal = (SELECT DISTINCT salFROM empWHERE deptno = e.deptnoORDER BY sal DESCOFFSET 1 ROW FETCH FIRST 1 ROW ONLY);```5. 编写一个SQL查询,找出拥有部门管理权限(即至少管理一个部门)且工资不超过5000的员工的姓名。

```SELECT enameFROM empWHERE empno IN (SELECT DISTINCT mgrFROM empWHERE sal <= 5000);```6. 编写一个SQL查询,找出在工资表中有重复记录的员工姓名和工资。

```SELECT ename, salFROM empGROUP BY ename, salHAVING COUNT(*) > 1;```7. 编写一个SQL查询,找出至少在两个部门工作过的员工的姓名。

Oracle的sql语句练习题含答案

Oracle的sql语句练习题含答案

Oracle的sql语句练习题含答案(二)Oracle_SQL练习题11.选择部门30中的所有员工.2.列出所有办事员(CLERK)的姓名,编号和部门编号.3.找出佣金高于薪金的员工.4.找出佣金高于薪金的60%的员工.5.找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料.6.找出部门10中所有经理(MANAGER),部门20中所有办事员(CLERK),既不是经理又不是办事员但其薪金大于或等于2000的所有员工的详细资料.7.找出收取佣金的员工的不同工作.8.找出不收取佣金或收取的佣金低于100的员工.9.找出各月倒数第3天受雇的所有员工.10.找出早于12年前受雇的员工.11.以首字母大写的方式显示所有员工的姓名.12.显示正好为5个字符的员工的姓名.13.显示不带有"R"的员工的姓名.14.显示所有员工姓名的前三个字符.15.显示所有员工的姓名,用a替换所有"A"16.显示满10年服务年限的员工的姓名和受雇日期.17.显示员工的详细资料,按姓名排序.18.显示员工的姓名和受雇日期,根据其服务年限,将最老的员工排在最前面.19.显示所有员工的姓名、工作和薪金,按工作的降序排序,若工作相同则按薪金排序.20.显示所有员工的姓名、加入公司的年份和月份,按受雇日期所在月排序,若月份相同则将最早年份的员工排在最前面.21.显示在一个月为30天的情况所有员工的日薪金,忽略余数.22.找出在(任何年份的)2月受聘的所有员工。

23.对于每个员工,显示其加入公司的天数.24.显示姓名字段的任何位置包含"A"的所有员工的姓名.25.以年月日的方式显示所有员工的服务年限.答案:1.select ename,job,mgr,hiredate,sal,comm,deptno from emp where deptno=30;2.select ename,empno,deptno from emp where job='CLERK';3.select*from emp where comm>sal;4.select*from empwhere comm>sal*0.6;5.select empno,ename,job,hiredate,sal,comm,deptnofrom empwhere(job='MANAGER'and deptno=10)or(job='CLERK'and deptno=20);6.select empno,ename,job,hiredate,sal,deptnofrom empwhere(job='MANAGER'and deptno=10)or(job='CLERK'and deptno=20)or((job<>'MANAGER'and job<>'CLERK')and sal>=2000);7.select distinct ename,job,commfrom empwhere NVL(comm,0)>0;注意如果像上面这样写,就job ename comm3个同时不同的都列出来正确的是:select distinct jobfrom empwhere NVL(comm,0)>0;8.select ename,comm.from emp where NVL(comm,0)=0or NVL(comm,0)<100;如果按上面的写法就重复了,直接可以写成select ename,commfrom empwhere NVL(comm,0)<100;9select ename,job,last_day(hiredate)-3from emp;select ename,job,hiredatefrom empwhere hiredate=last_day(hiredate)-2;10.select ename,jobfrom empwhere months_between(sysdate,hiredate)/12>1211.select initcap(ename)name,job,hiredatefrom emp;12.select ename,job,hiredate from emp where length(ename)=5;13select ename,job from emp where ename not like'%R%';14.select substr(ename,1,3)name,job,hiredate from emp;15select replace(ename,'A','a')name,job,hiredate from emp;16select ename,job,hiredate from empwhere months_between(sysdate,hiredate)/12>=10;17.select*from emp order by ename;18.select ename,hiredate from emp order by hiredate desc;19.select ename,job,sal from emp order by job desc,sal asc;20.select ename,to_char(hiredate,'yyyy')year,to_char(hiredate,'mm')monthsfrom emporder by months,year asc;21.select ename,sal/30dailysalfrom emp;22.select ename,hiredatefrom empwhere to_char(hiredate,'mm')='02';23.select ename,sysdate-hiredate天数from emp;24.select ename from emp where instr(ename,'A',1)>0;25.select ename,to_char(hiredate,'yyyy/mm/dd')from emp;--26.列出至少有一个员工的所有部门.select dname from emp,dept where emp.deptno=dept.deptno group by dname;select distinct dname from emp,dept where emp.deptno=dept.deptno;--说明:(1)select中出现的字段一定要出现在group by中;--(2)如果select中出现的字段不出现在group by中,则一定要出现在select的聚合函数中,对于想出现的字段,可用max()或min()。

oracle的sql练习题

oracle的sql练习题

oracle的sql练习题1. 编写SQL查询语句,从员工表(EMPLOYEES)中选择工资(SALARY)大于5000的员工信息,按照工资的降序排列。

```sqlSELECT * FROM EMPLOYEES WHERE SALARY > 5000 ORDER BY SALARY DESC;```2. 编写SQL查询语句,从部门表(DEPARTMENTS)中选择部门名称(DEPARTMENT_NAME)、部门位置(LOCATION_ID)以及该部门员工的数量,按照员工数量的升序排列。

```sqlSELECT DEPARTMENT_NAME, LOCATION_ID, COUNT(*) AS EMPLOYEE_COUNTFROM DEPARTMENTSJOIN EMPLOYEES ON DEPARTMENTS.DEPARTMENT_ID = EMPLOYEES.DEPARTMENT_IDGROUP BY DEPARTMENT_NAME, LOCATION_IDORDER BY EMPLOYEE_COUNT ASC;```3. 编写SQL查询语句,从员工表(EMPLOYEES)中选择员工的姓名(FIRST_NAME)以及所属部门的名称(DEPARTMENT_NAME),要求只选择属于部门名称以"E"开头的员工信息。

```sqlSELECT FIRST_NAME, DEPARTMENT_NAMEFROM EMPLOYEESJOIN DEPARTMENTS ON EMPLOYEES.DEPARTMENT_ID = DEPARTMENTS.DEPARTMENT_IDWHERE DEPARTMENT_NAME LIKE 'E%';```4. 编写SQL查询语句,从员工表(EMPLOYEES)中选择员工的姓名(FIRST_NAME)以及所属部门的名称(DEPARTMENT_NAME),要求只选择属于部门名称以"A"结尾的员工信息,且员工的工资(SALARY)在3000到6000之间。

oracle sql 试题及答案

oracle sql 试题及答案

oracle sql 试题及答案在Oracle数据库管理和开发中,SQL(Structured Query Language)是一种标准化的关系型数据库语言。

在这篇文章中,我们将提供一些Oracle SQL试题及其答案,旨在帮助读者巩固和加深对Oracle SQL语言的理解。

请注意,答案中不再重复题目,仅给出相应的解答。

1. 以下SQL语句中,哪一个用于创建一个名为"Employees"的表?CREATE TABLE Employees (EmployeeID INT PRIMARY KEY,LastName VARCHAR2(50),FirstName VARCHAR2(50),DateOfBirth DATE);2. 在一个名为"Employees"的表中,你想要删除LastName为"Smith"的所有行。

你应该使用以下哪个SQL语句?DELETE FROM Employees WHERE LastName = 'Smith';3. 假设你有一个名为"Employees"的表,你想要增加一个名为"Salary"的列,数据类型为NUMBER(10,2)。

你应该使用以下哪个SQL 语句?ALTER TABLE Employees ADD (Salary NUMBER(10,2));4. 以下SQL查询语句将返回哪些列?SELECT LastName, FirstName FROM Employees;答案:该查询将返回"Employees"表中的LastName和FirstName列。

5. 以下SQL语句将返回"Employees"表中有多少条记录?SELECT COUNT(*) FROM Employees;答案:该查询将返回"Employees"表中的记录数。

oracle的sql语句的练习题及答案(员工表+部门表)

oracle的sql语句的练习题及答案(员工表+部门表)

oracle的sql语句的练习题及答案(员⼯表+部门表)⼀、创建表及初始化数据1、表说明:emp员⼯表(empno员⼯号/ename员⼯姓名/job⼯作/mgr上级编号/hiredate受雇⽇期/sal薪⾦/comm佣⾦/deptno部门编号) dept部门表(deptno部门编号/dname部门名称/loc地点)注意:⼯资 = 薪⾦ + 佣⾦2、创建表create table DEPT(DEPTNO NUMBER(2) not null,DNAME VARCHAR2(14),LOC VARCHAR2(13));alter table DEPT add constraint PK_DEPT primary key (DEPTNO);create table EMP(EMPNO NUMBER(4) not null,ENAME VARCHAR2(10),JOB VARCHAR2(9),MGR NUMBER(4),HIREDATE DATE,SAL NUMBER(7,2),COMM NUMBER(7,2),DEPTNO NUMBER(2));alter table EMP add constraint PK_EMP primary key (EMPNO);3、初始化数据insert into DEPT (DEPTNO, DNAME, LOC)values (10, 'ACCOUNTING', 'NEW YORK');insert into DEPT (DEPTNO, DNAME, LOC)values (20, 'RESEARCH', 'DALLAS');insert into DEPT (DEPTNO, DNAME, LOC)values (30, 'SALES', 'CHICAGO');insert into DEPT (DEPTNO, DNAME, LOC)values (40, 'OPERATIONS', 'BOSTON');commit;insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)values (7369, 'SMITH', 'CLERK', 7902, to_date('17-12-1980', 'dd-mm-yyyy'), 800, null, 20);insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)values (7499, 'ALLEN', 'SALESMAN', 7698, to_date('20-02-1981', 'dd-mm-yyyy'), 1600, 300, 30);insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)values (7521, 'WARD', 'SALESMAN', 7698, to_date('22-02-1981', 'dd-mm-yyyy'), 1250, 500, 30);insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)values (7566, 'JONES', 'MANAGER', 7839, to_date('02-04-1981', 'dd-mm-yyyy'), 2975, null, 20);insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)values (7654, 'MARTIN', 'SALESMAN', 7698, to_date('28-09-1981', 'dd-mm-yyyy'), 1250, 1400, 30);insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)values (7698, 'BLAKE', 'MANAGER', 7839, to_date('01-05-1981', 'dd-mm-yyyy'), 2850, null, 30);insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)values (7782, 'CLARK', 'MANAGER', 7839, to_date('09-06-1981', 'dd-mm-yyyy'), 2450, null, 10);insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)values (7788, 'SCOTT', 'ANALYST', 7566, to_date('19-04-1987', 'dd-mm-yyyy'), 3000, null, 20);insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)values (7839, 'KING', 'PRESIDENT', null, to_date('17-11-1981', 'dd-mm-yyyy'), 5000, null, 10);insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)values (7844, 'TURNER', 'SALESMAN', 7698, to_date('08-09-1981', 'dd-mm-yyyy'), 1500, 0, 30);insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)values (7876, 'ADAMS', 'CLERK', 7788, to_date('23-05-1987', 'dd-mm-yyyy'), 1100, null, 20);insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)values (7900, 'JAMES', 'CLERK', 7698, to_date('03-12-1981', 'dd-mm-yyyy'), 950, null, 30);insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)values (7902, 'FORD', 'ANALYST', 7566, to_date('03-12-1981', 'dd-mm-yyyy'), 3000, null, 20);insert into EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)values (7934, 'MILLER', 'CLERK', 7782, to_date('23-01-1982', 'dd-mm-yyyy'), 1300, null, 10);commit;⼆、题⽬练习1.列出⾄少有⼀个员⼯的所有部门。

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

Oracle SQL练习题(2)
注:这些查询题目涵盖了各种单行函数的基本查询的技术,请大家认真做,做好了的查询语句之后,有兴趣的同学可以再创建相应的视图和存储过程。

下面的查询练习题是基于Oracle 10g数据库中的scott用户下的表来进行练习的。

首先给出scott用户中各个表的表结构
第一:emp(员工信息表),如图1所示
emp表中各个字段的介绍如下:
(1)empno:员工编号
(2)ename:员工姓名
(3)job:职位
(4)mgr:上级领导编号
(5)hiredate:雇佣日期
(6)sal:薪水
(7)comm:佣金
(8)deptno:部门编号
第二:dept(部门信息表),如图2所示
dept表中各个字段的介绍如下:
(1)deptno:部门编号
(2)dname:部门名称
(3)loc:部门所在地
练习:
1.选择部门30中的所有员工?
2.列出所有办事员(CLERK)的姓名,编号和部门编号?
3.找出佣金高于薪金的员工?
4.找出佣金高于薪金的60%的员工?
5.找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料?
6.找出部门10中所有经理(MANAGER),部门20中所有办事员(CLERK),既不是经理又
不是办事员但其薪金大于或等于2000的所有员工的详细资料?
7.找出收取佣金的员工的不同工作?
8.找出不收取佣金或收取的佣金低于100的员工?
9.找出各月倒数第3天受雇的所有员工?
10.找出早于12年前受雇的员工?
11.以首字母大写的方式显示所有员工的姓名?
12.显示正好为5个字符的员工的姓名?
13.显示不带有"R"的员工的姓名?
14.显示所有员工姓名的前三个字符?
15.显示所有员工的姓名,用a替换所有"A"?
16.显示满10年服务年限的员工的姓名和受雇日期?
17.显示员工的详细资料,按姓名排序?
18.显示员工的姓名和受雇日期,根据其服务年限,将最老的员工排在最前面?
19.显示所有员工的姓名、工作和薪金,按工作的降序排序,若工作相同则按薪金排序?
20.显示所有员工的姓名、加入公司的年份和月份,按受雇日期所在月排序,若月份相同则将
最早年份的员工排在最前面?
21.显示在一个月为30天的情况所有员工的日薪金,忽略余数?
22.找出在(任何年份的)2月受聘的所有员工?
23.对于每个员工,显示其加入公司的天数?
24.显示姓名字段的任何位置包含"A"的所有员工的姓名?
25.以年月日的方式显示所有员工的服务年限?
26.列出各种工作职位的最低工资,且显示最低工资大于1500的记录
27.列出所有雇员的雇员名称、部门名称和工资
28.列出从事同一种工作但属于不同部门的雇员的员工信息
29.列出按年薪排序的所有雇员的年薪
30.列出至少有一个员工的所有部门
31.列出薪金比"SMITH"多的所有员工
32.列出薪金高于公司平均水平的所有员工
33.列出与“SCOTT”从事相同工作的所有员工
34.列出某些员工的姓名和薪金,条件是他们的薪金等于部门30中任何一个员工的薪金
35.列出所有员工的姓名及其直接上级的姓名
36.列出各个部门的MANAGER(经理)的最低薪金。

相关文档
最新文档