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

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); ```。

oracle SQL考试试卷

oracle SQL考试试卷

Oracle SQL&PLSQL Test一、选择题(共30题;每题3分)1.Oracle发出下列select语句:SQL> select e.empno, e.ename, d.loc2 from emp e, dept d3 where e.deptno = d.deptno4 and substr(e.ename, 1, 1) = ‘S’;下列哪个语句是Oracle数据库中可用的ANSI兼容等价语句?A.select empno, ename, loc from emp join dept on emp.deptno = dept.deptno where substr(emp.ename, 1, 1) = ‘S’;B.select empno, ename, loc from emp, dept on emp.deptno = dept.deptno where substr(emp.ename, 1, 1) = ‘S’;C.select empno, ename, loc from emp join dept where emp.deptno = dept.deptno and substr(emp.ename, 1, 1) = ‘S’;D.select empno, ename, loc from emp left join dept on emp.deptno = dept.deptno and substr(emp.ename, 1, 1) = ‘S’;2.用下列代码回答问题:Examine the data in the EMPLOYEES and DEPARTMENTS tables.You want to retrieve all employees, whether or not they have matching departments in the departments table. Which query would you use?需要检索出无论雇员是否和部门匹配的记录A. SELECT last_name, department_nameFROM employees , departments(+);B. SELECT last_name, department_nameFROM employees JOIN departments (+);C. SELECT last_name, department_nameFROM employees(+) e JOIN departments dON (e.department_id = d.department_id);D. SELECT last_name, department_nameFROM employees eRIGHT OUTER JOIN departments d ON (e.department_id = d.department_id);E. SELECT last_name, department_nameFROM employees(+) , departmentsON (e.department_id = d.department_id);F. SELECT last_name, department_nameFROM employees e LEFT OUTERJOIN departments d ON (e.department_id = d.department_id);3.公司销售数据库包含一个PROFITS表,按产品名、销售地区和季度列出利润信息。

Oracle-SQL-练习题及答案

Oracle-SQL-练习题及答案

Oracle-SQL-练习题及答案本文由NiCoBee贡献Oracle SQL 练习题注:这些查询题目涵盖了各种查询的技术,请大家认真做,做好了的查询语句之后,有兴趣的同学可以再创建相应的视图和存储过程create table wkj_student(sno varchar2(10) primary key,sname varchar2(20),sage number(2),ssex varchar2(5));create table wkj_teacher(tno varchar2(10) primary key,tname varchar2(20));create table wkj_course(cno varchar2(10),cname varchar2(20),tno varchar2(20),constraint pk_course primary key (cno,tno));create table wkj_sc(sno varchar2(10),cno varchar2(10),score number(4,2),constraint pk_sc primary key (sno,cno));/*******初始化学生表的数据******/insert into student values ('s001','张三',23,'男');insert into student values ('s002','李四',23,'男');insert into student values ('s003','吴鹏',25,'男');insert into student values ('s004','琴沁',20,'女');insert into student values ('s005','王丽',20,'女');insert into student values ('s006','李波',21,'男');insert into student values ('s007','刘玉',21,'男');insert into student values ('s008','萧蓉',21,'女');insert into student values ('s009','陈萧晓',23,'女');insert into student values ('s010','陈美',22,'女'); commit;/******************初始化教师表***********************/ insert into teacher values ('t001', '刘阳');insert into teacher values ('t002', '谌燕');insert into teacher values ('t003', '胡明星');commit;/***************初始化课程表****************************/ insert into course values ('c001','J2SE','t002');insert into course values ('c002','Java Web','t002');insert into course values ('c003','SSH','t001');insert into course values ('c004','Oracle','t001');insert into course values ('c005','SQL SERVER 2005','t003'); insert into course values ('c006','C#','t003');insert into course values ('c007','JavaScript','t002');insert into course values ('c008','DIV+CSS','t001');insert into course values ('c009','PHP','t003');insert into course values ('c010','EJB3.0','t002'); commit;/***************初始化成绩表***********************/ insert into sc values ('s001','c001',78.9);insert into sc values ('s002','c001',80.9);insert into sc values ('s003','c001',81.9);insert into sc values ('s004','c001',60.9);insert into sc values ('s001','c002',82.9);insert into sc values ('s002','c002',72.9);insert into sc values ('s003','c002',81.9);insert into sc values ('s001','c003','59');insert into sc values ('s002','c003','58');commit;练习:注意:以下练习中的数据是根据初始化到数据库中的数据来写的SQL 语句,请大家务必注意。

oracle-sql入门练习及答案

oracle-sql入门练习及答案

oracle-sql⼊门练习及答案1,通过命令⾏⽅式打开sqlplus2,执⾏登录命令sqlplus scott/scott@192.168.248.129/orcl3进⾏sqlplus命令测试Set time onSet pagesize 数字Set linesizes 数字Set pause on/offDescribe命令查看表或视图结构也可以descShow 查看相应参数如:show parameter,show user,show error等Get命令把⼀个sql脚本⽂件内容放⼊缓冲区⽤系统编辑程序编辑命令在SQL*PLUS中运⾏操作系统缺省的⽂本编辑程序(EDIT)命令为:edit或者ed将缓存中的sql语句保存到⽂件中:SAVE ⽂件名【具体路径】查看缓存sql:list执⾏⽂件中的sql语句:START my.sql@ my.sql清空缓冲区:clear buffer格式化命令:columncolumn sal format $999,999.00如:SQL> select ename, sal from emp2SQL> /ENAME SAL---------- ------------SMITH $800.00ALLEN $1,600.00WARD $1,250.00JONES $2,975.00MARTIN $1,250.00BLAKE $2,850.00CLARK $2,450.00重置为默认值:clear columns;将屏幕上的内容写⼊到⽂件中spool fileName结束写⼊spool off3.Oracle查询1) 查询EMP表,显⽰部门号为10的所有雇员的NAME 、JOB、SALARY和 DEPTNO,并以岗位降序、⼯资升序进⾏排序。

select ename,job,sal,deptno from emp where deptno=10 order by job desc , sal asc2) 从EMP表中查询所有雇员的NAME和补助(SALARY+COMM),并处理null⾏。

Oracle的sql语句练习题含答案(二)

Oracle的sql语句练习题含答案(二)

Oracle的sql语句练习题含答案(二)1、列出至少有一个雇员的所有部门select distinct dname from dept where deptno in (select distinct deptno from emp);2、列出薪金比"SMITH"多的所有雇员select ename,sal from emp where sal>(select sal from emp where ename=upper('smith'));3、列出所有雇员的姓名及其直接上级的姓名select e.ename,m.ename from emp e,emp m where e.mgr=m.empno(+);4、列出入职日期早于其直接上级的所有雇员select ename from emp e where hiredate<(select hiredate from emp where empno=e.mgr);5、列出部门名称和这些部门的雇员,同时列出那些没有雇员的部门select dname,ename from dept d left join emp e on d.deptno=e.deptno;6、列出所有“CLERK”(办事员)的姓名及其部门名称select ename,dname from emp e left join dept d one.deptno=d.deptno where job=upper('clerk');7、列出各种工作类别的最低薪金,显示最低薪金大于1500的记录select job,min(sal) from emp group by job having min(sal)>1500;8、列出从事“SALES”(销售)工作的雇员的姓名,假定不知道销售部的部门编号select ename from emp where deptno = (select deptno from dept where dname=uppder('SALES'))9、列出薪金高于公司平均水平的所有雇员select ename from emp where sal>(select avg(sal) from emp);10、列出与“SCOTT”从事相同工作的所有雇员select ename from emp where job=(select job from emp where ename=upper('scott'));11、列出某些雇员的姓名和薪金,条件是他们的薪金等于部门30中任何一个雇员的薪金select ename,sal from emp where sal in (select sal from emp where deptno=30);12、列出某些雇员的姓名和薪金,条件是他们的薪金高于部门30中所有雇员的薪金select ename ,sal from emp where sal>(select max(sal) from emp where deptno=30);13、列出每个部门的信息以及该部门中雇员的数量select d.deptno,dname,count(ename) from dept d left join emp e on (d.deptno=e.deptno)group by d.deptno,dname14、列出所有雇员的雇员名称、部门名称和薪金Select e.ename,d.dname,e.sal from emp e left join dept d on (d.deptno=e.deptno)15、列出从事同一种工作但属于不同部门的雇员的不同组合Selecttba.ename,tbb.ename,tba.job,tbb.job,tba.deptno,tba.deptnoFrom emp tba,emp tbbWhere tba.job=tbb.job and tba.deptno<>tbb.deptno16、列出分配有雇员数量的所有部门的详细信息,即使是分配有0个雇员Select dept.deptno,dname,loc,count(empno)From dept,empWhere dept.deptno=emp.deptno(+)Group by dept.deptno,dname,loc17、列出各种类别工作的最低工资Select min(sal) from emp group by job18、列出各个部门的MANAGER(经理)的最低薪金Select deptno,min(sal) from emp where job=upper(‘manager’) group by deptno19、列出按年薪排序的所有雇员的年薪select (sal+nvl(comm,0))*12 as avn from emp order by avn20、列出薪金水平处于第四位的雇员Select * from (Select ename,sal, rank() over (order by sal desc) as grade from emp) where grade=4。

《Oracle数据库应用》-练习题2

《Oracle数据库应用》-练习题2

《Oracle数据库应用》一、选择题(20分)1. 有一产品表(编号,名称,价格,数量,所属分类),下列语法不正确的是()A、select * from 产品表 where价格>1000B、select sum(价格) from 产品表 group by 所属分类 having max(价格)>1000C、select所属分类,sum(价格) from 产品表 where 价格>1000 group by 所属分类D、select所属分类,sum(价格) from 产品表 where max(价格)>1000 groupby 所属分类2.在建表时如果希望某列的值,在一定的范围内,应建什么样的约束?()A、primary keyB、uniqueC、checkD、not null3.你要在Oracle中定义SQL查询。

下列哪个数据库对象不能直接从select语句中引用?()A、表B、序列C、索引D、视图4. SQL *Plus中发出的下列语句:select ceil(256.342), floor(256.342), round(256.342), trunc(256.342) from dual; 下列哪个函数不返回结果256?()A、ceil()B、floor()C、round()D、trunc()5.在Oracle数据库的逻辑结构中有以下组件:A 表空间 B 数据块 C 区 D 段,这些组件从大到小依次是()。

A、表空间→数据块→区→段B、表空间→段→区→数据块C、表空间→区→数据块→段D、段→表空间→区→数据块6. 有数据”test”分别存放到char(10)和varchar2(10)类型的字段中,其实际存储长度为()A、 10 10B、 4 4C、 10 4D、 4 107.SQL语句中修改表结构的命令是()。

A、MODIFY TABLEB、MODIFY STRUCTUREC、ALTER TABLED、ALTER STRUCTURE8. DELETE FROM S WHERE 年龄>60语句的功能是______。

oracle练习题及答案

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 sql题

oracle sql题

oracle sql题一、题目要求本题目旨在考察对OracleSQL语言的理解和运用能力。

请根据题目要求,完成相应的SQL查询。

二、题目描述请根据以下描述,完成SQL查询:该数据库包含一个名为Employees的表,包含以下列:EmployeeID(员工ID)、Name(姓名)、Department(部门)和Salary(薪资)。

要求完成以下查询:1.按照薪资从高到低排序。

2.只考虑薪资大于等于5000的员工。

3.排除部门为“Sales”的员工。

4.查询结果包括姓名和部门信息。

三、SQL查询语句根据题目要求,以下为对应的SQL查询语句:```sqlSELECTName,DepartmentFROMEmployeesWHERESalary>=5000ANDDepartment<>'Sales'ORDERBYSalaryDESC;```四、答案解析该SQL查询语句通过条件筛选Salary大于等于5000的员工,并且排除部门为“Sales”的员工,最后按照薪资从高到低进行排序,最终返回姓名和部门信息。

五、注意事项1.请确保SQL语句语法正确,符合OracleSQL语言规范。

2.请注意数据表中的真实数据类型和约束条件,避免出现错误。

3.请根据实际情况进行测试,确保查询结果的准确性。

六、额外提示如果需要进一步优化SQL查询,可以考虑使用索引来提高查询性能。

对于Salary列,可以创建索引以提高大于等于5000的筛选速度。

同时,对于Department列,也可以考虑创建索引以优化排除“Sales”部门的性能。

七、参考代码(可选)以下是一个可能的参考代码实现,供参考:```sql--创建Salary索引CREATEINDEXidx_salaryONEmployees(Salary);--执行SQL查询SELECTName,DepartmentFROMEmployeesWHERESalary>=5000ANDDepartment<>'Sales'ORDERBYSalaryDESC;```请注意,这只是参考代码,实际使用时需要根据数据库结构和数据量进行适当的调整。

Oracle-SQL开发练习课

Oracle-SQL开发练习课

《Oracle数据库编程》练习一、选择题 (未标明多选的均为单选题)1.关于Oracle中的实例描述,下列说法正确的是(多选):()A.实例是保存在硬盘上的文件,它不会随着数据库的启动/关闭而存在或消失。

B.实例是内存中的结构,是一种访问数据库的方式。

C.可以用语句Select instance_name FROM v$instance获得实例名。

D.一个实例可以访问多个数据库。

2.关于数据类型Char和Varchar2的描述,下列说法正确的是(多选):()A.Char和varchar2都是字符型数据,Char是变长字符型,Varchar2是定长字符型。

B.某个字段类型为Char(200),那么对于这个字段的任何记录来说,所占的实际长度都为200个字符。

C.某个字段类型为Varchar2(200),那么对于这个字段的任何记录来说,所占的实际长度都为200个字符。

D.对于相同长度的Char和Varchar2类型数据,char的性能通常要比varchar2高。

3.关于对空值的描述,下列说法正确的是:()A.包含空值的任何算术表达式结果都等于空。

B.包含空值的连接字符串|| 等于与空字符串连接,结果还是空值。

C.空值做为判断条件是写法是:判断字段=null。

D.表Emp中有5条记录,empID分别为1,2,3,4,5,那么查询语句Select * from Emp where empID not in (2,3,4,null)的执行后结果是2条记录。

4.已知05年7月25日是星期一,那么函数TO_CHAR(NEXT_DAY(TO_DATE(’25-JUL-05’,’DD-MON-RR’),’MONDAY’),’DD-Mont h-YYYY’)结果是:()A.25-JULY-2005 B.01-August-2005C.25-JULY-2005 D.26-JULY-20055.如果EMPID所选的值是 60494,下列函数执行后,结果是哪一项:()SELECT DECODE(empid,38475, 'Terminated',60494, 'LOA', 'ACTIVE') FROM EMP;A.60494 B.LOAC.Terminated D.ACTIVE6.查询语句SELECT SUBSTR(‘HelloWorld’,4,5) FROM DUAL;返回结果,正确的是:()A.loWor B.WorldC.lloWo D.lo Wo7.查询语句SELECT ROUND(13.57),ROUND(13.57,1),ROUND(13.57,-1),TRUNC(13.57,-2) FROM DUAL 返回结果,正确的是:()A.13.57,13.6,10,13B.13,13.5,14,0C.14,13.6,10,0D.13.6,13.5,11,138.语句 WHERE SAL BETWEEN 1000 AND 4000 与下列哪个子句等价:()A.WHERE SAL>=1000 AND SAL<=4000B.WHERE SAL>1000 AND SAL<4000C.WHERE SAL>=1000 OR SAL<=4000D.WHERE SAL>=1000 AND SAL <40009.关于对UNION和UNION ALL的描述,下列描述正确的是(多选):()A.UNION操作符返回两个查询结果集的并集,并去掉重复行。

oracle sql测试题-2

oracle sql测试题-2

以scott/tiger登录数据库,完成以下题目1、显示所有部门名Select dname from dept;2、显示所有雇员名及其全年收入(工资+补助),并指定列别名“年收入”select ename,(sal+nvl(comm,0)) as年收入from emp;3、显示存在雇员的所有部门号select distinct deptno from emp;4、显示工资超过2850的雇员名和工资select ename,sal from emp where sal>2850;5、显示工资不在1500到2850之间的所有雇员名及工资Select ename,sal from emp where sal <1500 or sal >2850;6、显示雇员代码为7566的雇员名及所在部门号Select ename,deptno from emp where empno = 7566;7、显示部门代码为10和30中工资超过1500的雇员名及工资8、显示无管理者的雇员名及岗位9、显示所有雇员的平均工资、总计工资、最高工资、最低工资10、显示每种岗位的雇员总数、平均工资11、显示雇员总数,以及获得补助的雇员数12、显示管理者的总人数13、显示雇员工资的最大差额14、显示部门代码为20的部门号,以及该部门的所有雇员名、雇员工资及岗位15、显示获得补助的所有雇员名、补助额以及所在部门号16、显示所有雇员的姓名、部门编号、工资,并且列名要显示为中文17、显示每个部门每个岗位的平均工资、每个部门的平均工资、每个岗位的平均工资18、显示工资大于1500的雇员名和工资,并且按照工资的降序排列19、显示雇员部门编号为10或20的信息(要求使用IN关键字)20、显示雇员名的第二个字母为A的信息21、显示没有发放补助的雇员信息22、显示雇员表中记录总数23、显示所有雇员名、雇员工资及所在部门名24、显示部门代码为20的部门名,以及该部门的所有雇员名、雇员工资及岗位25、显示所有雇员名、雇员工资及工资级别26、显示雇员“SCOTT”的管理者名27、显示获得补助的所有雇员名、补助额以及所在部门名28、查询EMP表和SALGRADE表,显示部门代码为20的雇员名、工资及其工资级别29、显示部门代码为10的所有雇员名、部门名,以及其他部门名30、显示部门代码为10的所有雇员名、部门名,以及其他雇员名31、显示部门代码为10的所有雇员名、部门名,以及其他部门名和雇员名32、显示"BLAKE"同部门的所有雇员,但不显示"BLAKE"33、按以下格式显示下面的信息,条件是工资大于1500的。

Oracle考试(全)答案

Oracle考试(全)答案

O racle SQL开发基础一、填空题共3题题号: 1 本题分数:2.00 分SELECT TO_CHAR(ADD_MONTHS(TO_DATE(‘20081210’,’YYYYMMDD’),5)+2,’YYYYMMDD’) FROM DUAL;的运行结果是_____20090512______________。

题号: 2 本题分数:2.00 分在ORACLE中,用于事务提交和回滚的SQL语句分别是_________commit______和_______rollback_________。

题号: 3 本题分数:6.00 分数据库按物理上结构必须由数据文件、控制文件和重做日志组成。

二、单选题共30题题号: 4 本题分数:2.00 分Select语句的执行顺序是()(1)select (2)from (3)where (4)group by (5)having (6)order byA、123456B、234561C、234516D、124563题号: 5 本题分数:2.00 分查询语句SELECT SUBSTR(‘Hello World’,4,5) FROM DUAL;返回结果,正确的是A、loWorB、WorldC、lloWoD、lo WoD题号: 6 本题分数:2.00 分哪个活动将导致自动回滚()A、GRANTB、CREATEC、系统崩溃D、从SQL*Plus退出SQL语句分类Select查询语句DML语句(数据操作语言)Insert / Update / Delete / MergeDDL语句(数据定义语言)Create / Alter / Drop / TruncateDCL语句(数据控制语言)Grant / Revoke事务控制语句Commit / Rollback / Savepoint题号: 7 本题分数:2.00 分数据库中有两张表,employees(雇员表),departments(部门表),表结构为课程中试验案例, 如果想要获得全部雇员的信息,不管这个雇员是否被分配了部门,以下答案正确的是A、SELECT last_name,department_name FROM employees JOIN departments(+)B、SELECT last_name,department_name FROM employees(+) JOIN departmentsC、SELECT last_name, department_name FROM employees e RIGHT JOIN departments d ON (e.department_id =d.department_id)D、SELECT last_name, department_name FROM employees e LEFT JOIN departments d ON (e.department_id =d.department_id)题号: 8 本分数:2.00 分关于Listener的描述正确的是()A、监听、接收客户端连接请求B、防止黑客入侵C、验证连接数据库用户的身份。

Oracle PLSQL测试题与答案(绝对经典)

Oracle PLSQL测试题与答案(绝对经典)

Oracle PL/SQL测试题姓名:___ _________一、选择题1、Oracle数据库中为新创建的表分配的初始空间通常为多大(B)A、一个块B、一个区C、一个段D、c一个表空间2、关于存储过程参数,正确的说法是(B)A、存储过程的输出参数可以是标量类型,也可以是表类型B、存储过程输入参数可以不输入信息而调用过程C、可以指定字符参数的字符长度(函数的()或者过程的(number/varchar2))D、以上说法都不对3、下列说法,正确的说法是(B)A、只要在存储过程中有增删改语句,一定加自治事务B、在函数内可以修改表数据C、函数不能递归调用D、以上说法都不对4、有一产品表(编号,名称,价格,数量,所属分类),下列语法不正确的是(D)A、select * from 产品表where价格>1000B、select sum(价格) from 产品表group by 所属分类having max(价格)>1000C、select所属分类,sum(价格) from 产品表where 价格>1000 group by 所属分类D、select所属分类,sum(价格) from 产品表where max(价格)>1000 group by 所属分类5、关于触发器,下列说法正确的是(B)A、可以在表上创建INSTEAD OF 触发器B、语句级触发器不能使用“:old”和“:new”C、行级触发器不能用于审计功能D、触发器可以显式调用6、下列那些是Oracle的伪列(ACD)A、ROWIDB、ROW_NUMBER()C、LEVELD、ROWNUME、COLUMN7、当表的重复行数据很多时,应该创建的索引类型应该是(C )A、B树B、reverseC、bitmapD、函数索引8、在建表时如果希望某列的值,在一定的范围内,应建什么样的约束?(C )A、primary keyB、uniqueC、checkD、not null9、利用游标来修改数据时,所用的。

  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(经理)的最低薪金。

相关文档
最新文档