Oracle数据库查询练习及答案

合集下载

史上最全Oracle数据库基本操作练习题(含答案)

史上最全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查询练习及答案分类:技术文档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数据库查询练习任务

简单查询1.查询customers表中的所有记录的c_name, c_truename, c_address,c_mobile列。

SELECT c_name, c_truename, c_address, c_mobile FROM Customers2.在会员信息表中查询年龄在20岁到30之间的会员信息。

SELECT*from Customers year(getdate())-year(birthdate)between 20 and303.查询会员所有的地址,即不重复的地址。

sELECT DISTINCT c_Address FROM Customers4.查询会员电话区号为0731的会员信息。

SELECT*FROM Customers WHERE c_Phone LIKE'0731%'5.查询VIP会员信息。

SELECT*FROM Customers where c_Type='VIP'6.统计商品类别数。

SELECT count(*)FROM Types7.在商品信息表中查询三星的产品信息。

SELECT*FROM Goods where g_Name like'三星_%'8.在商品信息表中查询价格在2000-3000区间的商品信息。

SELECT*FROM Goods WHERE g_Price between 2000 and 30009.在商品信息表以价格降序查询商品信息。

SELECT*FROM Goods ORDER BY g_Price DESC10.在商品信息表中查询商品类别为02的所有商品的商品名称,商品单价,并根据商品价格进行升序排序。

SELECT g_Name g_Price FROM Goods WHERE t_ID like'02%'ORDER BY g_Price ASC11.在商品信息表中查询三星和海尔品牌的商品的详细信息。

oracle数据库单表查询相关练习题及答案写法

oracle数据库单表查询相关练习题及答案写法

oracle数据库单表查询相关练习题及答案写法drop table PRODUCT cascade constraints;create table PRODUCT(id NUMBER not null, --主键pcode VARCHAR2(20) not null, --商品编号pname VARCHAR2(20), --商品名称inprice NUMBER(7,2), --进价outprice NUMBER(7,2), --售价toma VARCHAR2(20), --管理员名称lastcou NUMBER, --剩余库存数量ptype VARCHAR2(5), --商品类型mark NUMBER, --有效标志createtime DATE --⽣产⽇期);alter table PRODUCTADD CONSTRAINT pk_product primary key (ID);insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime)values (1, 'f-qq45', '⾹蕉', 2.8, 4, '张三', 12, 'a', 1, to_date('05-06-2017', 'dd-mm-yyyy'));insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime)values (2, 'f-56tt', '苹果', 3.4, 5, '张三', 33, 'a', 1, to_date('16-06-2016', 'dd-mm-yyyy'));insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime)values (3, 'f-332', '梨', 2.7, 4, '张三', 76, 'a', 1, to_date('23-09-2016', 'dd-mm-yyyy'));insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime)values (4, 'f-20', '猪⾁', 14, 16, '张三', 56, 'b', 1, to_date('31-12-2013', 'dd-mm-yyyy'));insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime)values (5, 'f-qq46', '圆珠笔', 3, 5, '王五', 55, 'e', 1, to_date('14-09-2016', 'dd-mm-yyyy'));insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime)values (6, 'f-57tt', '樱桃', 8, null, '王五', 12, 'a', 1, to_date('22-05-2006', 'dd-mm-yyyy'));insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime)values (7, 'f-292', '三⽂鱼', 5, 8, '王五', 23, 'b', 1, to_date('31-07-2001', 'dd-mm-yyyy'));insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime)values (8, 'f-604', '螺丝⼑', 12, 15, '王五', 72, 'c', 1, to_date('24-02-2013', 'dd-mm-yyyy'));insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime)values (9, 'f-qq47', '扳⼿', 14, 19, '王五', 90, 'c', 1, to_date('14-05-2015', 'dd-mm-yyyy'));insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime)values (10, 'f-58tt', '钳⼦', 10, 13, '张三', 97, 'c', 1, to_date('28-03-2012', 'dd-mm-yyyy'));insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime) values (11, 'f-916', '矿泉⽔', 2.5, 3, '李四', 44, 'd', 1, to_date('21-07-2012', 'dd-mm-yyyy'));insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime) values (12, 'f-1228', '杏仁露', 4, 5, '李四', 38, 'd', 1, to_date('22-02-2013', 'dd-mm-yyyy'));insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime) values (13, 'f-59tt', '钢笔', null, 43, '李四', 22, 'e', 1, to_date('30-09-2013', 'dd-mm-yyyy'));insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime) values (14, 'f-1540', '铅笔', .5, .8, '赵六', 72, 'e', 1, to_date('14-05-2018', 'dd-mm-yyyy'));insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime) values (15, 'f-1852', '⼤马哈鱼', 1.5, 2, '赵六', 76, 'b', 1, to_date('17-05-2012', 'dd-mm-yyyy'));insert into PRODUCT (id, pcode, pname, inprice, outprice, toma, lastcou, ptype, mark, createtime) values (16, 'f-2164', '鸡蛋', 2.7, 4, '赵六', 56, 'b', 1, to_date('14-09-2010', 'dd-mm-yyyy'));commit;-- 使⽤insert into任意添加三条数据(数据信息⾃定)加到这个表中-- 删除'猪⾁'的那条记录-- 将扳⼿和钳⼦的商品名称分别改为'16号扳⼿'和'⼩号钳⼦', 并将这两个商品的管理⼈员都改为'赵六'-- 查询商品类型为'a'的所有商品-- 查询王五负责的c类商品-- 查询剩余数量⼩于50的所有商品-- 查询剩余数量在60-80之间的-- 查询商品名称带'笔'的和带'鱼'的记录-- 查询商品编号中带'tt'的记录-- 查询商品类型为a, d, c的所有商品-- 查询所有'e'类型商品, 并按照剩余库存数量排序-- 查询管理商品数少于4的管理员名称和管理的商品数量-- 查询所有的管理员名称和其⼿上所管理的所有商品数量-- 查询所有的管理员名称和其⼿上所管理的所有'a'类商品名称的数量-- 查询所有商品中剩余数量最少的⼀个-- 查询⽣产⽇期在2015/5/31之前的数据-- 假设所有商品的有效期是⼀年, 以当前系统时间为标准, 查询所有商品的信息, 并且加⼀列标注是否过期-- 查询每个管理员所管理的商品的平均进价价格和售价价格-- 查询每个管理员⼿上的商品的利润的平均值-- 查询假设每个管理员把所有商品售完后各⾃的利润总和答案:--SELECT * FROM product/*INSERT INTO productVALUES(50,'qqwweerr','⾖腐',2.5, 3, '张三', 30, 'b', 1, SYSDATE);COMMIT;*//*DELETE product p WHERE p.pname='猪⾁';COMMIT;*//*UPDATE product p SET p.pname='16号扳⼿', p.toma='赵六' WHERE p.pname='扳⼿';UPDATE product p SET p.pname='⼩号钳⼦', p.toma='赵六'WHERE p.pname='钳⼦';COMMIT;*/--SELECT * FROM product p WHERE p.ptype='a';--SELECT * FROM product p WHERE p.ptype='c' AND p.toma='王五';--SELECT * FROM product p WHERE stcou<50;--SELECT * FROM product p WHERE stcou <80 AND stcou > 60; --SELECT * FROM product p WHERE stcou BETWEEN 60 AND 80;/*SELECT * FROM product pWHERE p.pname LIKE '%笔%' OR p.pname LIKE '%鱼%';*/--SELECT * FROM product p WHERE p.pcode LIKE '%tt%';/*SELECT * FROM product p WHERE p.ptype IN ('a','c','d');SELECT * FROM product p WHERE p.ptype = 'a'OR p.ptype = 'c'OR p.ptype = 'd'*/--SELECT * FROM product p--WHERE p.ptype='e' ORDER BY stcou ASC或者desc/*SELECT p.toma, COUNT(p.pname) 管理的商品数FROM product p GROUP BY p.tomaHAVING COUNT(p.pname) < 4*//*SELECT p.toma, COUNT(p.pname) 管理的商品数FROM product p GROUP BY p.toma*//*SELECT p.toma, SUM(DECODE(p.ptype, 'a', 1, 0))FROM product p GROUP BY p.tomaSELECT p.toma, COUNT(p.ptype) FROM product pWHERE p.ptype='a' GROUP BY p.toma*//*SELECT * FROM product pWHERE stcou<=ALL(SELECT lastcou FROM product)*//*SELECT * FROM product pWHERE stcou=(SELECT MIN(lastcou) FROM product)*//*SELECT * FROM product pWHERE p.createtime < to_date('20150531','yyyymmdd')*//*SELECT p.pname, CASE WHEN (SYSDATE-p.createtime) > 365 THEN '过期' ELSE '正常' END 是否过期FROM product p*//*SELECT p.toma, AVG(p.inprice), round(AVG(p.outprice), 2) FROM product pGROUP BY p.toma*//*SELECT p.toma, AVG(p.outprice-p.inprice)FROM product p GROUP BY p.toma*/SELECT p.toma, SUM((p.outprice-p.inprice)* stcou) 利润总和FROM product p GROUP BY p.toma。

Oracle练习题附答案

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.empnowhere a.sal>=2000;练习10、在表EMP中查询所有工资高于JONES的所有雇员姓名、工作和工资。

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数据库的试题及答案

oracle数据库的试题及答案一、选择题1. Oracle数据库是一种()数据库管理系统。

A. 非关系型B. 关系型C. 分布式D. 图形化2. 数据库中,将所有数据进行分类和组织的基本单位是()。

A. 表B. 字段C. 记录D. 数据库3. 在Oracle数据库中,用于删除表中所有数据的操作是()。

A. DELETEB. REMOVEC. DROPD. TRUNCATE4. 在Oracle数据库中,用于更新表中数据的操作是()。

A. UPDATEB. MODIFYC. ALTERD. REPLACE5. 在Oracle数据库中,用于查询数据的操作是()。

A. SELECTB. SEARCHC. FINDD. WHERE二、简答题1. 请简述Oracle数据库的特点。

Oracle数据库具有以下特点:- 完整性:通过约束和触发器来保证数据的完整性。

- 可扩展性:支持集群部署和分布式数据库,可以动态扩展数据库的容量。

- 安全性:提供了严格的数据权限管理和用户认证机制,保护数据免受未经授权的访问。

- 可靠性:支持数据备份和恢复功能,保障数据的持久性和可靠性。

- 高性能:采用多线程和缓存技术,提高数据库的读写性能和响应速度。

2. 在Oracle数据库中,什么是事务?事务是指逻辑上的一组操作,这组操作要么全部成功执行,要么全部失败回滚。

事务具有以下特性:- 原子性:事务中的操作要么全部执行成功,要么全部回滚,不会出现部分执行的情况。

- 一致性:事务执行前后,数据库的状态保持一致性,不会破坏数据的完整性。

- 隔离性:事务之间相互独立,每个事务都认为自己是唯一在操作数据库的。

- 持久性:事务一旦提交,其对数据库的修改将永久保存,不会被回滚。

3. 请说明Oracle数据库中的索引是什么,并简要介绍索引的作用。

索引是一种特殊的数据库对象,用于快速查找数据库中的数据。

索引基于一个或多个列值创建,并按照特定的排序规则存储列值和对应的行指针。

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

Oracle10g数据库基础教程课后练习题含答案

Oracle10g数据库基础教程课后练习题含答案

Oracle10g数据库基础教程课后练习题含答案1. 简单查询练习1.1查询指定表的全部内容。

SELECT*FROM table_name;练习1.2按照指定列的顺序查询指定表的全部内容。

SELECT column1, column2, ..., columnN FROM table_name;练习1.3按照指定条件过滤查询指定表的内容。

SELECT*FROM table_name WHERE condition;2. 排序和聚合练习2.1按照指定列升序排序查询指定表的全部内容。

SELECT*FROM table_name ORDER BY column ASC;练习2.2按照指定列降序排序查询指定表的全部内容。

SELECT*FROM table_name ORDER BY column DESC;按照指定列进行聚合并查询结果。

SELECT COUNT(column), SUM(column), AVG(column), MAX(column), MIN(column) F ROM table_name;3. 连接表查询练习3.1查询指定表与另一张表的交集部分。

SELECT*FROM table1 INNER JOIN table2 ON condition;练习3.2查询指定表与另一张表的并集部分。

SELECT*FROM table1 LEFT OUTER JOIN table2 ON condition UNION SELECT*FR OM table1 RIGHT OUTER JOIN table2 ON condition;练习3.3查询指定表与另一张表的差集部分。

SELECT*FROM table1 LEFT OUTER JOIN table2 ON condition WHERE t2.column I S NULL;4. 插入、更新和删除数据练习4.1在指定表中插入一条新数据。

INSERT INTO table_name (column1, column2, ..., columnN) VALUES (value1, va lue2, ..., valueN);更新指定表中符合条件的数据。

ORACLE经典查询答案

ORACLE经典查询答案

select * from dept;select * from emp;--1.列出至少有一个员工的所有部门。

select dname from dept where deptno in(select deptno from emp);select dname from dept where deptno in(select deptno from emp group by deptno having count(deptno)&gt;=1);--2.列出薪金比“SMITH”多的所有员工。

select ename from emp where sal&gt;(select sal from emp where ename='SMITH');--3.列出所有员工的姓名及其直接上级的姓名。

select a.ename,(select ename from emp b where b.empno=a.mgr) as boss_name from empa;--4.列出受雇日期早于其直接上级的所有员工。

select a.ename from emp a where a.hiredate&lt;(select hiredate from emp b whereb.empno=a.mgr);--5.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门select a.dname,b.empno,b.ename,b.job,b.mgr,b.hiredate,b.sal,b.deptno;from dept a left join emp b on a.deptno=b.deptno;--6.列出所有“CLERK”(办事员)的姓名及其部门名称。

select ename,dname from emp join dept on emp.deptno=dept.deptno where job='CLERK'; select a.ename,b.dname from emp a join dept b on a.deptno=b.deptno and a.job='CLERK';--7.列出最低薪金大于1500的各种工作。

oracle数据库增删改查练习50例-答案(精)

oracle数据库增删改查练习50例-答案(精)

oracle 数据库增删改查练习50例-答案一、建表--学生表drop table student;create table student (sno varchar2(10,sname varchar2(10,sage date,ssex varchar2(10;insert into student values('01','赵雷',to_date('1990/01/01','yyyy/mm/dd','男';insert into student values('02','钱电',to_date('1990/12/21','yyyy/mm/dd','男';insert into student values('03','孙风',to_date('1990/05/20','yyyy/mm/dd','男';insert into student values('04','李云',to_date('1990/08/06','yyyy/mm/dd','男';insert into student values('05','周梅',to_date('1991/12/01','yyyy/mm/dd','女';insert into student values('06','吴兰',to_date('1992/03/01','yyyy/mm/dd','女';insert into student values('07','郑竹',to_date('1989/07/01','yyyy/mm/dd','女';insert into student values('08','王菊',to_date('1990/01/20','yyyy/mm/dd','女';--课程表drop table course;create table course (cno varchar2(10,cname varchar2(10,tno varchar2(10;insert into course values ('01','语文','02';insert into course values ('02','数学','01';insert into course values ('03','英语','03';--教师表drop table teacher;create table teacher (tno varchar2(10,tnamevarchar2(10;insert into teacher values('01','张三';insert into teacher values('02','李四';insert into teacher values('03','王五';--成绩表drop table sc;create table sc (sno varchar2(10,cno varchar2(10,score number(18,1;insert into sc values('01','01',80.0;insert into sc values('01','02',90.0;insert into sc values('01','03',99.0;insert into sc values('02','01',70.0;insert into scvalues('02','02',60.0;insert into sc values('02','03',80.0;insert into scvalues('03','01',80.0;insert into sc values('03','02',80.0;insert into scvalues('03','03',80.0;insert into sc values('04','01',50.0;insert into scvalues('04','02',30.0;insert into sc values('04','03',20.0;insert into scvalues('05','01',76.0;insert into sc values('05','02',87.0;insert into scvalues('06','01',31.0;insert into sc values('06','03',34.0;insert into scvalues('07','02',89.0;insert into sc values('07','03',98.0;commit;二、查询1.1、查询同时存在"01"课程和"02"课程的情况select s.sno, s.sname, s.sage, s.ssex, sc1.score, sc2.score from student s, sc sc1, sc sc2 where s.sno = sc1.sno and s.sno = sc2.sno and o = '01' and o = '02';1.2、查询必须存在"01"课程,"02"课程可以没有的情况select t.*, s.score_01, s.score_02 from student t inner join (select a.sno, a.score score_01, b.score score_02 from sc a left join (select * from sc where cno = '02' b on (a.sno = b.sno where o = '01' s on (t.sno = s.sno;2.1、查询同时'01'课程比'02'课程分数低的数据select s.sno, s.sname, s.sage, s.ssex, sc1.score, sc2.score from student s, sc sc1, sc sc2 where s.sno = sc1.sno and s.sno = sc2.sno and o = '01' and o = '02' and sc1.score < sc2.score;2.2、查询同时'01'课程比'02'课程分数低或'01'缺考的数据select s.sno, s.sname, s.sage, s.ssex, t.score_01, t.score_02 from student s, (select b.sno, a.score score_01,b.score score_02 from (select * from sc where cno = '01' a, (select * from sc where cno = '02' b where a.sno(+ = b.sno t where s.sno = t.sno and (t.score_01 < t.score_02 ort.score_01 is null;3、查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩select s.sno, s.sname, t.avg_score avg_score from student s, (select sno, round(avg(score, 2 avg_score from sc group by sno having avg(score >= 60 order by sno t where s.sno = t.sno;4、查询平均成绩小于60分的同学的学生编号和学生姓名和平均成绩4.1、有考试成绩,且小于60分select s.sno, s.sname, t.avg_score avg_score from student s,(select sno, round(avg(score, 2 avg_score from sc group by sno having avg(score < 60 order by sno t where s.sno = t.sno;4.2、包括没有考试成绩的数据select g.* from (select s.sno, s.sname,nvl(t.avg_score, 0 avg_score from student s, (select sno, round(avg(score, 2 avg_score from sc group by sno order by sno t where s.sno = t.sno(+ g where g.avg_score < 60;5、查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩5.1、查询所有成绩的(不含缺考的)。

ORACLE数据库习题(有答案)

ORACLE数据库习题(有答案)

--1.列出至少有一个雇员的所有部门。

SELECT * FROM DEPTWHERE DEPTNO IN (SELECT DISTINCT DEPTNO FROM EMP);--2.列出薪金比“SMITH”多的所有雇员。

SELECT * FROM EMP WHERE SAL>(SELECT SAL FROM EMP WHERE ENAME='SMITH');--3.列出所有雇员的姓名及其上级的姓名。

SELECT AS empName, AS mgrNameFROM emp ygb,emp sjbWHERE =;--4.列出入职日期早于其直接上级的所有雇员。

【SELECT * FROM emp ygbWHERE hiredate<(SELECT hiredate FROM emp sjb WHERE =;--5.列出所有部门的名称和这些部门的雇员编号及姓名(没有雇员的部门包含在内)SELECT dname,enameFROM dept a LEFT JOIN emp b ON =; --6.列出所有JOB为“CLERK”(办事员)的员工姓名及其部门名称SELECT ename,dnameFROM dept a,emp bWHERE = AND job='CLERK';--7.列出各种类型的最低薪金,并使最低薪金大于。

SELECT job,MIN(sal)—FROM empGROUP BY jobHAVING MIN(sal)>1500;--8.列出从事“SALES”(销售)工作的雇员的姓名,假定不知道销售部的部门编号。

SELECT ename FROM empWHERE deptno=(SELECT deptno FROM dept WHERE dname='SALES'); --9.列出薪金高于公司平均水平的所有雇员。

SELECT * FROM EMP WHERE SAL>(SELECT AVG(SAL) FROM EMP);--10.列出与“SCOTT”从事相同工作的所有雇员。

ORACLE数据库 查询50习题(题目+答案)

ORACLE数据库 查询50习题(题目+答案)
--4、找出佣金高于薪金60%的雇员
select * from emp where comm>(sal*0.6)
--5、找出部门10中所有经理和部门20中所有办事员的详细资料
select * from emp where (deptno=10 and job='MANAGER') or (deptno=20 and job='CLERK')
select ename from emp where instr(ename,'R')=0
--14、显示所有雇员的姓名的前三个字符
select substr(ename,1,3) from emp
--15、显示所有雇员的姓名,用"a"替换所有的"A"
select replace(ename,'A','a')from emp
--------------------------------------------------------------------------------------------------
--1、列出至少有一个雇员的所有部门信息
select emp.ename,dept.* from emp,dept where emp.deptno=dept.deptno
--2、列出薪金(工资)比'SMITH'多的所有雇员信息
select * from emp where sal>(select sal from emp where ename='SMITH')
--3、列出所有雇员的姓名及其上级的姓名

Oracle数据库试题100题(附答案)

Oracle数据库试题100题(附答案)

Oracle数据库试题100题(附答案)1.当Oracle服务器启动时,下列哪种文件不是必须的(D)。

A.数据文件B.控制文件C.日志文件D.归档日志文件2.在Oracle中,当用户要执行SELECT语句时,下列哪个进程从磁盘获得用户需要的数据(B)。

A.用户进程B.服务器进程C.日志写入进程(LGWRD.检查点进程(CKPT)3.在Oracle中,一个用户拥有的所有数据库对象统称为(B)。

A.数据库B.模式C.表空间D.实例4.在Oracle中,有一个教师表teacher的结构如下:ID NUMBER(5)NAME V ARCHAR2(25)EMAIL VARCHAR2(50)下面哪个语句显示没有Email地址的教师姓名(C)。

A.SELECT name FROM teacher WHERE email = NULL;B.SELECT name FROM teacher WHERE email <> NULL;C.SELECT name FROM teacher WHERE email IS NULL;D.SELECT name FROM teacher WHERE email IS NOT NULL;5.在Oracle数据库的逻辑结构中有以下组件:A 表空间B 数据块C 区D 段这些组件从大到小依次是(B)。

A.A→B→C→DB.A→D→C→BC.A→C→B→DD.D→A→C→B6.在Windows操作系统中,Oracle的(A)服务监听并接受来自客户端应用程序的连接请求。

A.OracleHOME_NAMETNSListenerB.OracleServiceSIDC.OracleHOME_NAMEAgentD.OracleHOME_NAMEHTTPServer7.在Oracle 中创建用户时,若未提及DEFAULT TABLESPACE 关键字,则Oracle 就将(B)表空间分配给用户作为默认表空间。

oracle数据库试题及答案

oracle数据库试题及答案

oracle数据库试题及答案一、单选题1. Oracle数据库的特点是()A. 高安全性B. 高性能C. 可扩展性D. 全面支持ACID特性答案:D2. 在Oracle数据库中,数据存储在()中。

A. 数据块B. 数据段C. 数据文件D. 表空间答案:D3. 下面哪个是Oracle数据库的管理工具?A. SQL DeveloperB. ToadC. PL/SQL DeveloperD. SQL*Plus答案:A4. Oracle数据库中,用于创建和修改数据库对象的语言是()。

A. DMLB. DDLC. DCLD. TCL答案:B5. 在Oracle数据库中,用于查询和操作数据库对象的语言是()。

A. DMLB. DDLC. DCLD. TCL答案:A二、多选题1. 下列哪些是Oracle数据库的特点?()A. 支持事务处理B. 支持分布式数据库C. 支持并发控制D. 支持网络编程答案:A、B、C2. Oracle数据库的体系结构包含以下几个部分:()A. 数据块B. 数据文件C. 表空间D. 实例答案:A、B、C、D3. 下列哪些是Oracle数据库的安全机制?()A. 用户权限管理B. 数据加密C. 访问控制D. 数据备份答案:A、B、C4. Oracle数据库的存储结构包括以下几个层次:()A. 数据库B. 表空间C. 数据文件D. 段E. 数据块答案:A、B、C、D、E5. Oracle数据库的备份与恢复策略包括以下几种:()A. 完全备份B. 增量备份C. 差异备份D. 恢复点备份E. 日志备份答案:A、B、C、E三、判断题1. Oracle数据库是面向对象的数据库。

答案:错误2. Oracle数据库可以跨平台使用。

答案:正确3. Oracle数据库的事务具有原子性、一致性、隔离性和持久性。

答案:正确4. Oracle数据库可以使用PL/SQL语言进行存储过程和触发器的编写。

答案:正确5. Oracle数据库的数据存储采用以行为单位的方式。

oracle练习题及答案

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的使用和原理。

下面是一些常见的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数据库习题(有答案)大题

ORACLE数据库习题(有答案)大题

1.检索部门编号、部门名称、部门所在地及其每个部门的员工总数。

selectd.deptno,d.dname,d.loc,count(*)fromempe,deptdwheree.deptno=d.deptno group by d.deptno,d.dname,d.loc;2.检索员工和所属经理的姓名。

select e.ename雇员,m.ename经理from emp e,emp m wheree.mgr=m.empno;3.检索工资等级处于第四级别的员工的姓名。

select e.ename from emp e inner join salgrade s on (e.salbetween s.losal and s.hisal) where s.grade=4;4.检索工资等级高于smith的员工信息。

select*fromempejoinsalgradeson(e.salbetweens.losalands.hisal)where s.grade>(selectdistinct s.gradefromemp ejoinsalgradeson((selectsalfromempwhereename='SMITH')between s.losal and s.hisal));5.检索30部门中1980年1月份之前入职的员工信息。

显示:员工号、员工名、部门号,部门名、入职日期。

selectempno,ename,d.deptno,d.dname,hiredatefromemp,deptd whereemp.deptno=d.deptnoandd.deptno=30andhiredate<to_date('1980-01-01','yy-mm-dd');6.检索雇员的雇佣日期早于其经理雇佣日期的员工及其经理姓名。

select e.ename雇员,m.ename经理,e.HIREDATE雇员的雇佣日期,m.hiredate经理雇佣日期fromempe,empmwheree.mgr=m.empno and e.hiredate<m.hiredate;7.按部门号(deptno)及工资(sal)排序检索公司的员工信息(要求部门号从大到小,部门号相同的按工资由低到高),显示的字段为:员工号、员工名、工资、部门号。

Oracle Database数据库高级功能练习题参考答案

Oracle Database数据库高级功能练习题参考答案

Oracle Database数据库高级功能练习题参考答案Oracle Database是一个功能强大的关系型数据库管理系统,拥有许多高级功能,可以满足各种复杂的数据管理和分析需求。

下面是一些Oracle Database高级功能练习题的参考答案,供大家参考和学习。

练习题一:子查询1.查询所有在员工表(Employees)中的非经理员工的信息。

```sqlSELECT *FROM EmployeesWHERE employee_id NOT IN (SELECT manager_id FROM Employees);```练习题二:分区表1.创建一个以年为分区键的分区表(OrderTable),包含订单号(order_id)、订单日期(order_date)和订单金额(order_amount)。

```sqlCREATE TABLE OrderTable(order_id NUMBER,order_date DATE,order_amount NUMBER)PARTITION BY RANGE (TO_CHAR(order_date,'YYYY'))(PARTITION p2018 VALUES LESS THAN ('2019'),PARTITION p2019 VALUES LESS THAN ('2020'),PARTITION p2020 VALUES LESS THAN ('2021'),...);```练习题三:索引1.为员工表(Employees)的姓氏(last_name)列创建一个B树索引。

```sqlCREATE INDEX idx_last_nameON Employees (last_name);```练习题四:触发器1.创建一个触发器,当向订单表(Orders)插入一条新的订单时,在订单历史表(OrderHistory)中插入一条记录。

oracle数据库的试题及答案

oracle数据库的试题及答案

oracle数据库的试题及答案### Oracle数据库试题及答案#### 一、选择题1. 在Oracle数据库中,哪个命令用于创建数据库表?- A. CREATE TABLE- B. DROP TABLE- C. ALTER TABLE- D. TRUNCATE TABLE答案:A2. 以下哪个选项不是Oracle数据库的SQL语句?- A. SELECT- B. UPDATE- C. DELETE- D. PRINT答案:D3. Oracle数据库中,用于删除表中所有数据的命令是什么? - A. DELETE FROM table_name- B. TRUNCATE TABLE table_name- C. DROP TABLE table_name- D. CLEAR table_name答案:B4. 在Oracle数据库中,哪个命令用于查看表的结构?- A. DESCRIBE table_name- B. EXPLAIN table_name- C. DESC table_name- D. SHOW table_name答案:C5. Oracle数据库中,哪个命令用于插入数据?- A. INSERT INTO- B. ADD INTO- C. PUT INTO- D. SET INTO答案:A#### 二、简答题1. 简述Oracle数据库的体系结构。

- Oracle数据库的体系结构主要包括内存结构和存储结构。

内存结构包括系统全局区(SGA)和程序全局区(PGA)。

存储结构包括数据文件、控制文件和重做日志文件。

SGA是所有数据库进程共享的内存区域,包含了数据库缓冲区、重做日志缓冲区等。

PGA是每个服务器进程或后台进程的私有内存区域。

2. 什么是PL/SQL?它在Oracle数据库中的作用是什么?- PL/SQL是Oracle数据库的过程式扩展,它允许用户定义存储过程、函数、触发器等。

PL/SQL结合了SQL语句和过程式编程的特性,使得数据库编程更加灵活和强大。

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

1 找出佣金高于薪金60%的雇员。

SELECT * FROM emp WHERE comm>sal*0.6;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 HIREDA TE=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(SYSDA TE,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”。

SELECT REPLACE(ename,'A','a') FROM emp;13显示所有雇员的姓名以及满10年服务年限的日期。

SELECT ENAME,HIREDA TE,ADD_MONTHS(HIREDA TE,120) AS H_10Y FROM EMP;14显示雇员的详细资料,按姓名排序。

SELECT * FROM EMP ORDER BY ENAME;15显示雇员姓名,根据其服务年限,将最老的雇员排在最前面。

SELECT ENAME,HIREDA TE FROM EMP ORDER BY HIREDATE;16显示所有雇员的姓名、工作和薪金,按工作内的工作的降序顺序顺序排序,而工作按薪金排序。

SELECT ENAME,JOB,SAL FROM EMP ORDER BY JOB DESC,SAL;17显示所有雇员的姓名和加入公司的年份和月份,按雇员受雇日所在月排序,并将最早年份的项目排在最前面。

SELECT ENAME,TO_CHAR(HIREDA TE,'YYYY-MM') AS Y_M FROM EMP ORDER BY TO_CHAR(HIREDATE,'MM'),TO_CHAR(HIREDA TE,'YYYY');18显示在一个月为30天的情况下所有雇员的日薪金,取整。

SELECT ROUND(SAL/30) AS SAL FROM EMP;19找出在(任何年份的)2月受聘的所有雇员。

SELECT * FROM EMP WHERE TO_CHAR(HIREDATE,'MM')='02';20对于每个雇员,显示其加入公司的天数。

SELECT CEIL(SYSDA TE-HIREDA TE) AS DY FROM EMP;21显示姓名字段的任何位置,包含“A”的所有雇员的姓名。

SELECT ENAME FROM EMP WHERE ENAME LIKE '%A%';SELECT ENAME FROM EMP WHERE INSTR(ENAME,'A')>0;22以年、月和日显示所有雇员的服务年限。

SELECT HIREDATE,FLOOR(MONTHS_BETWEEN(SYSDA TE,HIREDATE)/12) AS Y,MOD(FLOOR(MONTHS_BETWEEN(SYSDATE,HIREDA TE)),12) AS M,MOD(FLOOR(SYSDATE-HIREDATE),30) AS D FROM EMP;23列出至少有一个雇员的所有部门。

SELECT * FROM DEPT WHERE DEPTNO IN (SELECT DISTINCT DEPTNO FROM EMP);24列出薪金比“SMITH”多的所有雇员。

SELECT * FROM EMP WHERE SAL>(SELECT SAL FROM EMP WHEREENAME='SMITH');25列出所有雇员的姓名及其上级的姓名。

SELECT ygb.ename AS empnm,sjb.ename AS mgrnm FROM emp ygb,emp sjb WHERE ygb.mgr=sjb.empno;26列出入职日期早于其直接上级的所有雇员。

SELECT * FROM emp ygb WHERE hiredate<(SELECT hiredate FROM emp sjb WHERE sjb.empno=ygb.mgr);27列出部门和这些部门的雇员,同时列出那些没有雇员的部门。

SELECT * FROM dept WHERE deptno IN (SELECT DISTINCT deptno FROM emp)UNIONSELECT * FROM dept WHERE deptno NOT IN (SELECT DISTINCT deptno FROM emp)SELECT dname,ename FROM dept a LEFT JOIN emp b ON a.deptno=b.deptno;28列出所有“CLERK”(办事员)的姓名及其部门名称。

SELECT ename,dname FROM dept a,emp b WHERE a.deptno=b.deptno AND job='CLERK';29列出各种类型的最低薪金,并使最低薪金大于1500。

SELECT job,MIN(sal) FROM emp GROUP BY job HA VING MIN(sal)>1500;30列出从事“SALES”(销售)工作的雇员的姓名,假定不知道销售部的部门编号。

SELECT ename FROM emp WHERE deptno=(SELECT deptno FROM dept WHERE dname='SALES');31列出薪金高于公司平均水平的所有雇员。

SELECT * FROM EMP WHERE SAL>(SELECT A VG(SAL) FROM EMP);32列出与“SCOTT”从事相同工作的所有雇员。

SELECT * FROM EMP WHERE JOB=(SELECT JOB FROM EMP WHERE ENAME='SCOTT') AND ENAME<>'SCOTT';33列出薪金等于在部门30工作的所有雇员的姓名和薪金。

SELECT * FROM EMP WHERE SAL IN(SELECT SAL FROM EMP WHERE DEPTNO=30);34列出薪金高于在部门30工作的所有雇员的姓名和薪金。

SELECT * FROM EMP WHERE SAL >ALL(SELECT SAL FROM EMP WHERE DEPTNO=30);35列出在每个部门工作的雇员的经理以及其他信息。

SELECT A.*,B.* FROM DEPT A,EMP B WHERE A.DEPTNO=B.DEPTNO AND JOB='MANAGER';SELECT A.*,B.* FROM (SELECT * FROM EMP WHERE JOB<>'MANAGER') A,(SELECT * FROM EMP WHERE JOB='MANAGER') B WHERE A.DEPTNO=B.DEPTNO AND B.JOB='MANAGER'ORDER BY A.DEPTNO;36列出所有雇员的雇员名称、部门名称和薪金。

SELECT ENAME,DNAME,SAL FROM DEPT A,EMP B WHERE A.DEPTNO=B.DEPTNO;37列出从事同一种工作但属于不同部门的雇员的不同组合。

SELECT * FROM emp ORDER BY job,deptno;38列出分配有雇员数量的所有部门的详细信息,即使是分配有0个雇员。

SELECT * FROM dept WHERE deptno IN (SELECT DISTINCT deptno FROM emp)UNIONSELECT * FROM dept WHERE deptno NOT IN (SELECT DISTINCT deptno FROM emp)39列出各种类型工作的最低工资。

相关文档
最新文档