oracle sql练习题

合集下载

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练习题Oracle 复杂 SQL 练习题在数据库管理系统中,SQL(Structured Query Language)是一种用于管理和操作关系数据库的标准语言。

Oracle是一种常用的关系数据库管理系统,它支持SQL语言的广泛应用。

本文将介绍一些复杂的Oracle SQL练习题,旨在提高读者对SQL语言的理解和应用能力。

1. 学生成绩统计假设有两张表:学生表(Student)和成绩表(Score)。

学生表包含学生的姓名(Name)和学号(ID),成绩表包含学生的学号(ID)和对应的科目(Subject)及成绩(Grade)。

现在需要统计每个学生的总分和平均分,并按照平均分从高到低排序。

解决方案:```sqlSELECT , SUM(sc.Grade) AS TotalGrade, AVG(sc.Grade) AS AverageGrade FROM Student sJOIN Score sc ON s.ID = sc.IDGROUP BY ORDER BY AverageGrade DESC;```2. 部门工资排名假设有两张表:员工表(Employee)和部门表(Department)。

员工表包含员工的姓名(Name)、工号(ID)和所属部门(DeptID),部门表包含部门的名称(DeptName)和部门编号(DeptID)。

现在需要统计每个部门的平均工资,并按照平均工资从高到低排序。

解决方案:```sqlSELECT d.DeptName, AVG(e.Salary) AS AverageSalaryFROM Department dJOIN Employee e ON d.DeptID = e.DeptIDGROUP BY d.DeptNameORDER BY AverageSalary DESC;```3. 订单统计假设有三张表:订单表(Order)、订单详情表(OrderDetail)和商品表(Product)。

oracle-sql练习题及答案

oracle-sql练习题及答案

oracle-sql练习题及答案createtabletudent(novarchar2(10)primarykey,namevarchar2(20),agenumber(2),e某varchar2(5));createtableteacher(tnovarchar2(10)primarykey,tnamevarchar2(20));createtablecoure(cnovarchar2(10),cnamevarchar2(20),tnovarcha r2(20),contraintpk_coureprimarykey(cno,tno));createtablec(novarchar2(10),cnovarchar2(10),corenumber(4,2), contraintpk_cprimarykey(no,cno));/某某某某某某某初始化学生表的数据某某某某某某//某某某某某某某某某某某某某某某初始化课程表某某某某某某某某某某某某某某某某某某某某某某某某某某某某/inertintocourevalue('c001','J2SE','t002');inertintocourevalue(' c002','JavaWeb','t002');inertintocourevalue('c003','SSH','t001') ;inertintocourevalue('c004','Oracle','t001');inertintocourevalue('c005','SQLSERVER2005','t003');inertinto courevalue('c006','C#','t003');练习:注意:以下练习中的数据是根据初始化到数据库中的数据来写的SQL 语句,请大家务必注意。

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.列出⾄少有⼀个员⼯的所有部门。

oracle数据库sql试题及答案

oracle数据库sql试题及答案

oracle数据库sql试题及答案Oracle数据库SQL试题及答案1. 如何查询员工表中所有员工的姓名和工资,要求工资从高到低排序?```sqlSELECT name, salaryFROM employeesORDER BY salary DESC;```2. 如何统计每个部门的员工人数?```sqlSELECT department_id, COUNT(*) AS employee_countFROM employeesGROUP BY department_id;```3. 如何查询工资高于平均值的员工信息?```sqlSELECT *FROM employeesWHERE salary > (SELECT AVG(salary) FROM employees);```4. 如何找出没有直属上司的员工?```sqlSELECT *FROM employees e1WHERE NOT EXISTS (SELECT 1FROM employees e2WHERE e1.manager_id = e2.employee_id);```5. 如何查询工资在3000到5000之间的员工姓名和工资?```sqlSELECT name, salaryFROM employeesWHERE salary BETWEEN 3000 AND 5000;```6. 如何删除员工表中所有工资低于3000的员工记录?```sqlDELETE FROM employeesWHERE salary < 3000;```7. 如何更新员工表中所有部门为10的员工的工资,增加10%?```sqlUPDATE employeesSET salary = salary * 1.1WHERE department_id = 10;```8. 如何查询员工表中每个员工的姓名和他们直属上司的姓名?```sqlSELECT AS employee_name, AS manager_name FROM employees e1JOIN employees e2 ON e1.manager_id = e2.employee_id; ```9. 如何查询员工表中每个部门的平均工资?```sqlSELECT department_id, AVG(salary) AS avg_salary FROM employeesGROUP BY department_id;```10. 如何查询员工表中工资最高的员工信息?```sqlSELECT *FROM employeesWHERE salary = (SELECT MAX(salary) FROM employees); ```。

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

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

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

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

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

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

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

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

```
SELECT ename
FROM emp
GROUP BY ename
HAVING COUNT(DISTINCT deptno) > 1;
```
8. 编写一个SQL查询,找出在每个部门中工作年限最长的员工的
姓名和工作年限。

```
SELECT d.dname, e.ename, MONTHS_BETWEEN(SYSDATE,
e.hiredate)/12 as work_years
FROM emp e
INNER JOIN dept d ON e.deptno = d.deptno
WHERE e.hiredate = (
SELECT hiredate
FROM emp
WHERE deptno = e.deptno
ORDER BY hiredate ASC
FETCH FIRST 1 ROW ONLY
);
```
9. 编写一个SQL查询,找出在每个部门中工资排名前三名的员工的姓名和工资。

```
SELECT d.dname, e.ename, e.sal
FROM emp e
INNER JOIN dept d ON e.deptno = d.deptno
WHERE (SELECT COUNT(DISTINCT sal)
FROM emp
WHERE deptno = e.deptno AND sal >= e.sal) <= 3;
```
10. 编写一个SQL查询,找出在每个部门中离职员工的数量。

```
SELECT d.dname, COUNT(*) as num_of_resigned
FROM emp e
INNER JOIN dept d ON e.deptno = d.deptno
WHERE e.job = 'SALESMAN'
GROUP BY d.dname;
```
以上是一些Oracle SQL的练习题目,通过解答这些题目可以加深对Oracle SQL语法和函数的理解和掌握。

希望对你的学习有所帮助。

相关文档
最新文档