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数据库查询练习任务
简单查询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基础练习题及答案(基本查询)练习题使用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数据库单表查询相关练习题及答案写法
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简单查询练习
单表查询练习:针对雇员表进行练习雇员表中记录的是一个个的雇员的基本信息。
雇员表(EMP)No. 字段类型描述1 EMPNO NUMBER(4) 表示雇员编号,是唯一编号2 ENAME V ARCHAR2(10) 表示雇员姓名3 JOB V ARCHAR2(9) 表示工作职位4 MGR NUMBER(4) 表示一个雇员的领导编号5 HIREDA TE DA TE 表示雇佣日期6 SAL NUMBER(7,2) 表示月薪,工资7 COMM NUMBER(7,2) 表示奖金,或者称为佣金8 DEPTNO NUMBER(2) 部门编号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、找出佣金高于薪金的60%的员工。
Select * from emp where comm>sal*0.6;5、找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料。
Select * from emp where deptno=10 and job=’MANAGER’or deptno=20 and job=’CLERK’;6、找出部门10中所有经理(MANAGER),部门20中的办事员(CLERK),既不是经理又不是办事员但其薪水大于或者等于2000的所有员工的详细资料。
Select * from emp where deptno=10 and job= ‘MANAGER’or deptno=20 and job=’CLERK’or job!=’ CLERK’and job!=’ MANAGER’and sal>=2000;7、找出收取佣金的员工的不同工作。
单表查询
一、单表查询:1.Select * from 表名例子:slelect * from xs2.Select 字段1,字段2,… from 表名例:select 学号,姓名,性别from 学生3.Select 字段1 as 别名1,字段2 as 别名2,…from 表名select 课程号as kch,学号as xh from cj或者Select 字段1 别名1,字段2 别名2,…from 表名4.Select 字段1,字段2,… from 表名as 表的别名例子:select * from cj as 成绩表或者Select 字段1,字段2,… from 表名表的别名5.select Top n 字段1,字段2,…from 表名order by 字段1,字段2,…默认是ASC(升序)例:select top 3 * from cj order by 成绩asc降序是DESC例:select top 3 * from cj order by 成绩desc多个字段进行排序的时候:6.合并重复记录Select Distinct 字段1,字段2,….from 表名6.混合时的注意事项Select Distinct Top 字段1,字段2,… from表名order by 字段7.带条件查询:1)select * from 表名where 条件例:select * from cj where 成绩>802)select * from 表名where 条件1 and/or 条件2 and/or 条件3例:select distinct * from cj where 成绩>80 and 学号="x001"3)select * from 表名where 条件between ..and …例:select * from cj where 成绩>=70 and 成绩<=90select * from cj where 成绩between 70 and 90 select * from cj where 成绩not between 70 and 904) select * from 表名where 条件in()例:select distinct * from cj where 学号="x001" or 学号="x002"select distinct * from cj where 学号in("x001","x002")5) select * from 表名where 条件is NULL / not is null 例:select * from cj where 成绩is null (或者=null)select * from cj where 成绩not is null 错误的SQL文。
Oracle查询入门练习
Oracle查询入门练习Oracle查询入门练习练习针对Oracle的SCOTT方案============查询及函数部分==============第一部分:1、使用基本查询语句.(1)查询DEPT表显示所有部门名称.(2)查询EMP表显示所有雇员名及其全年收入(月收入=工资+补助),处理NULL行,并指定列别名为"年收入"。
(NVL(comm,0) comm 取空值时用0替代)(3)查询显示不存在雇员的所有部门号。
2、限制查询数据(1)查询EMP表显示工资超过2850的雇员姓名和工资。
(2)查询EMP表显示工资不在1500~2850之间的所有雇员及工资。
(3)查询EMP表显示代码为7566的雇员姓名及所在部门代码。
(4)查询EMP表显示部门10和30中工资超过1500的雇员名及工资。
(5)查询EMP表显示第2个字符为"A"的所有雇员名其工资。
(6)查询EMP表显示补助非空的所有雇员名及其补助。
3、排序数据(1)查询EMP表显示所有雇员名、工资、雇佣日期,并以雇员名的升序进行排序。
(2)查询EMP表显示在1981年2月1日到1981年5月1日之间雇佣的雇员名、岗位及雇佣日期,并以雇佣日期进行排序。
(3)查询EMP表显示获得补助的所有雇员名、工资及补助,并以工资升序和补助降序排序。
第二部分:1.列出至少有一个雇员的所有部门。
2.列出薪金比“SMITH”多的所有雇员。
3.列出所有雇员的姓名及其上级的姓名。
4.列出入职日期早于其直接上级的所有雇员。
5.列出部门名称和这些部门的雇员,同时列出那些没有雇员的部门。
6.列出所有“CLERK”(办事员)的姓名及其部门名称。
7.列出各种岗位的最低薪金,并显示最低薪金大于1500所有工作岗位及其最低薪资。
8.列出从事“SALES”(销售)工作的雇员的姓名,假定不知道销售部的部门编号。
9.列出薪金高于公司平均的所有雇员。
10.列出与“SCOTT”从事相同工作的所有雇员。
最新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;练习10、在表EMP中查询所有工资高于JONES的所有雇员姓名、工作和工资。
Oracle查询练习
Oracle查询练习 ⾮常经典的⼀些⽇常醒脑练习内容!! 如有更⾼效的写法欢迎赐教! 1 1.已知Oracle的Scott⽤户中提供了三个测试数据库表,名称分别为dept,emp和salgrade。
使⽤SQL语⾔完成以下操作2 1)试⽤SQL语⾔完成下列查询(单表查询):3 a)查询20号部门的所有员⼯信息:4 select * from emp e where e.deptno=20;5 b)查询奖⾦(COMM)⾼于⼯资(SAL)的员⼯信息:6 select * from emp where comm>sal;7 c)查询奖⾦⾼于⼯资的20%的员⼯信息:8 select * from emp where comm>sal*0.2;9 d)查询10号部门中⼯种为MANAGER和20号部门中⼯种为CLERK的员⼯的信息:10 select * from emp e11 where (e.deptno=10 and e.job='MANAGER')12 or (e.deptno=20 and e.job='CLERK') ;13 e)查询所有⼯种不是MANAGER和CLERK,且⼯资⼤于或等于2000的员⼯的详细信息:14 select * from emp15 where job not in('MANAGER','CLERK') and sal>=2000;16 f)查询没有奖⾦或奖⾦低于100的员⼯信息:17 select * from emp where comm is null or comm<100;18 g)查询员⼯⼯龄⼤于或等于10年的员⼯信息:19 select * from emp where (sysdate-hiredate)/365>=10;20 h)查询员⼯信息,要求以⾸字母⼤写的⽅式显⽰所有员⼯的姓名:21 第⼀种写法:22 select initcap(ename) from emp;2324 第⼆种写法:25 select upper(substr(ename,1,1))||lower(substr(ename,2)) from emp;26 i)查询在2⽉份⼊职的所有员⼯信息:27 select * from emp where to_char(hiredate,'MM')='02';28 j)显⽰所有员⼯的姓名、⼊职的年份和⽉份,按⼊职⽇期所在的⽉份排序,若⽉份相同则按⼊职的年份排序:29 select ename,to_char(hiredate,'yyyy') year,to_char(hiredate,'MM')30 month31 from emp32 order by month,year;33 k)查询'JONES'员⼯及所有其直接、间接下属员⼯的信息:34 select e.* from emp e35 start with ename='JONES'36 connect by prior empno=mgr;37 l)查询SCOTT员⼯及其直接、间接上级员⼯的信息:38 select e.* from emp e39 start with ename='SCOTT'40 connect by prior mgr=empno;41 2)试⽤SQL语⾔完成下列查询(多表查询):42 a)查询从事同⼀种⼯作但不属于同⼀部门的员⼯信息:43 select a.ename,a.job,a.deptno,b.ename,b.job,b.deptno44 from emp a,emp b45 where a.job=b.job and a.deptno<>b.deptno;46 b)查询各个部门的详细信息以及部门⼈数、部门平均⼯资:47 select d.deptno,count(e.empno),avg(e.sal),d.dname,d.loc48 from emp e ,dept d49 where e.deptno=d.deptno50 group by d.deptno,d.dname,d.loc;51 3)试⽤SQL语⾔完成下列查询(嵌套⼦查询):52 a)查询10号部门员⼯以及领导的信息:53 select * from emp where empno in(54 select mgr from emp where deptno=10) or deptno=10;55 b)查询⼯资为某个部门平均⼯资的员⼯信息:56 select * from emp57 where sal in(select avg(sal) from emp group by deptno);58 c)查询⼯资⾼于本部门平均⼯资的员⼯的信息:59 select * from emp e160 where sal >(select avg(sal) from emp e2 where e2.deptno=e1.deptno);61 d)查询⼯资⾼于本部门平均⼯资的员⼯的信息及其部门的平均⼯资:62 select e.*,a.avgsal63 from emp e,64 (select deptno,avg(sal) as avgsal from emp group by deptno) a where a.deptno=e.deptno and e.sal>a.avgsal;65 4)试⽤SQL语⾔完成下列查询(聚合函数):66 a)统计各个⼯种的⼈数与平均⼯资:67 select count(*),e.job,avg(e.sal) from emp e68 group by e.job;69 b)统计每个部门中各个⼯种的⼈数与平均⼯资:70 select deptno,job,count(empno),avg(sal) from emp e71 group by e.deptno,e.job;72 c)查询所有员⼯⼊职以来的⼯作期限,⽤“**年**⽉**⽇”的形式表⽰。
oracle 查询练习题
oracle 查询练习题1. 查询employee表中所有员工的姓名和工资。
SELECT name, salary FROM employee;2. 查询department表中所有部门的名称和员工数量。
SELECT department_name, COUNT(*) AS employee_countFROM departmentGROUP BY department_name;3. 查询employee表中工资大于5000的员工的姓名和工资,并按工资降序排序。
SELECT name, salary FROM employeeWHERE salary > 5000ORDER BY salary DESC;4. 查询employee表中工资在5000到10000之间的员工的姓名和工资,并按工资升序排序。
SELECT name, salary FROM employeeWHERE salary BETWEEN 5000 AND 10000ORDER BY salary ASC;5. 查询employee表中所有员工的姓名和入职日期,入职日期格式为YYYY-MM-DD。
SELECT name, TO_CHAR(hire_date, 'YYYY-MM-DD') AS hire_date FROM employee;6. 查询employee表中员工姓名以'A'开头的员工的姓名和工资。
SELECT name, salary FROM employeeWHERE name LIKE 'A%';7. 查询employee表中工资排名前三的员工的姓名和工资。
SELECT name, salary FROM (SELECT name, salary, RANK() OVER (ORDER BY salary DESC) AS salary_rank FROM employee) WHERE salary_rank <= 3;8. 查询每个部门中工资最高的员工的姓名、部门名称和工资。
Oracle数据库查询练习及答案
O r a c l e数据库查询练习及答案(共6页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--1 找出佣金高于薪金60%的雇员。
SELECT * FROM emp WHERE comm>sal*;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 找出各月最后一天受雇的所有雇员。
oracle有关emp表的简单查询练习题.
SQL 练习训练一1、查询 dept 表的结构在命令窗口输入:desc dept;2、检索 dept 表中的所有列信息select * from dept3、检索 emp 表中的员工姓名、月收入及部门编号select ename "员工姓名 ",sal "月收入 ",empno "部门编号 " from emp 注意查询字段用分号隔开。
4、检索 emp 表中员工姓名、及雇佣时间日期数据的默认显示格式为“DD -MM-YY", 如果希望使用其他显示格式(YYYY-MM-DD,那么必须使用 TO_CHAR函数进行转换。
select ename "员工姓名 ", hiredate "雇用时间1",to_char(hiredate,'YYYY-MM-DD' "雇用时间 2" from emp注意:第一个时间是日期类型的, 在 Oracle 的查询界面它的旁边带有一个日历。
第二个时间是字符型的。
易错点:不要将 YYYY-MM-DD 使用双引号5、使用 distinct 去掉重复行。
检索 emp 表中的部门编号及工种,并去掉重复行。
select distinct deptno "部门编号 ",job "工种 " from emp order by deptno注意 distinct 放的位置为什么不放在 from 的前面?翻译成汉语就明白了应该是:选择不重复的部门编号和工种从 emp 表。
而不是:选择部门编号和工种不重复地从 emp 表。
这还是人话么???O(∩_∩O 哈哈 ~6、使用表达式来显示列检索 emp 表中的员工姓名及全年的月收入select ename "员工姓名 ", (sal+nvl(comm,0*12 "全年收入 " from emp 注意:防止提成 comm 为空的操作,使用 nvl 函数7、使用列别名用姓名显示员工姓名,用年收入显示全年月收入。
Oracle查询练习题
1、列出至少有一个员工的所有部门编号、名称,并统计出这些部门的平均工资、最低工资、最高工资。
2、列出薪金比“SMITH”或“ALLEN”多的所有员工的编号、姓名、部门名称、其领导姓名。
3、列出所有员工的编号、姓名及其直接上级的编号、姓名,显示的结果按领导年工资的降序排列。
4、列出受雇日期早于其直接上级的所有员工的编号、姓名、部门名称、部门位置、部门人数。
5、列出部门名称和这些部门的员工信息(数量、平均工资),同时列出那些没有员工的部门。
6、列出所有“CLERK”(办事员)的姓名及其部门名称,部门的人数,工资等级。
'7、列出最低薪金大于1500的各种工作及此从事此工作的全部雇员人数及所在部门名称、位置、平均工资。
8、列出在部门“SALES”(销售部)工作的员工的姓名、基本工资、雇佣日期、部门名称,假定不知道销售部的部门编号。
9、列出薪金高于公司平均薪金的所有员工,所在部门,上级领导,公司的工资等级。
10、列出与“SCOTT”从事相同工作的所有员工及部门名称,部门人数。
11、列出公司各个工资等级雇员的数量、平均工资。
12、列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金、部门名称。
13、列出在每个部门工作的员工数量、平均工资和平均服务期限。
14、列出所有员工的姓名、部门名称和工资。
15、列出所有部门的详细信息和部门人数。
16、列出各种工作的最低工资及从事此工作的雇员姓名。
17、列出各个部门的MANAGER(经理)的最低薪金、姓名、部门名称、部门人数。
18、列出所有员工的年工资,所在部门名称,按年薪从低到高排序。
19、查出某个员工的上级主管及所在部门名称,并要求出这些主管中的薪水超过300020、求出部门名称中,带‘S’字符的部门、员工的工资合计、部门人数。
21、给任职日期超过30年或者在87年雇佣的雇员加薪,加薪原则:10部门增长10%,20部门增长20%,30部门增长30%,依次类推。
单表查询 例题
好的,下面是一个关于单表查询的例题:
假设我们有一个名为"students"的表,其中包含以下列:
- id: 学生ID,类型为整数
- name: 学生姓名,类型为字符串
- age: 学生年龄,类型为整数
- gender: 学生性别,类型为字符串
- grade: 学生年级,类型为整数
现在我们要进行一些基本的单表查询操作,请回答以下问题:
1. 查询所有学生的记录。
2. 查询年龄小于等于18岁的学生记录。
3. 查询名字以"A"开头的学生记录。
4. 查询女生的记录。
5. 查询年级为10的男生记录。
请根据上述问题提供相应的SQL查询语句。
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查询练习
1.从表EMP中查询所有姓名长度大于8的员工信息:
2. 从表EMP中检索ENAME和JOB,使用Concat将这两列连接在一起:
3. 从表EMP中检索ENAME字段第3个字符:
4. 从表EMP中检索ENAME字段中包含’th’的记录:
5. 将ENAME字段中包含的’TH’替换为’AA’:
6. 获取当期时间:
7. 获取今天之前10天的日期:
8. 获取本年第一天的日期:
9. 将当期日期显示为2008-04-03:
10. 将当期日期显示为2008年-04月-03日的格式:
11. 将当期日期显示为2008-04-03并带有时间,时间要求为24小时制:
12. 获取本月完整的月份名(9字符)-所有字符大写:
13. 获取本周是本年中的第几周:
14. 将表EMP中HIREDA TE显示为yyyy-mm-dd个格式:
15. 从表EMP中检索COMM字段,将NULL替换为0:。
单表查询--课堂练习题及答案
查询课堂练习题及答案1.查询Goods表中所有商品的详细信息。
.select * from goods2.查询Goods表中所有商品的商品号、商品名称和商品总额,并以汉字标题显示列名。
select g_id 商品号,g_name 商品名称,g_price*g_number 商品总额from goods3.查询Goods表中“热点”商品的详细信息。
4.查询Goods表中商品类别为“01”,商品单价在2500元以上的商品的详细信息。
5.查询Goods表中所有商品中“三星”的商品的详细信息。
6.查询Customers中“湖南”省的所有男性的会员或者是年龄在30岁以下的会员的会员号、会员名称、性别、籍贯和年龄。
Select c_id,c_name,c_gender, year(getdate())-year(c_birth) as 年龄From customersWhere (c_gender='男' and c_address like '湖南%' ) or (year(getdate())-year(c_birth) )<307.查询Customers中所有年龄在20~25岁之间的会员的名称、籍贯和年龄Select c_name,c_address, year(getdate())-year(c_birth) as 年龄From customersWhere (year(getdate())-year(c_birth)) between 20 and 258.查询Customers中不是来自“湖南株洲”和“湖南长沙”两地会员的详细信息。
9.查询Customers中姓“黄”且名字中只有两个汉字的会员的会员名、真实姓名、电话和电子邮箱。
10.查询Customers中最先注册的10%的会员详细信息select top 10 percent * from customers11.在Goods表中,知道一个商品的商品名称中包含有“520”字样,要求查询该商品的商品号、商品名称、商品单价和商品折扣。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.查询dept表的全部记录
select * from dept;
2.查询出每个雇员的编号、姓名、基本工资。
select empno,ename,sal from emp;
3.查询每个雇员的职位。
select job from emp;
4.使用DISTINCT关键字删除重复行。
select distinct job from emp;
5.要求显示每一位雇员的姓名、职位、基本年薪
select ename,job,sal*12 from emp;
6.由于公司的福利很高,每个月都有200的饭食补贴以及100元的车费补助,并且年底每
个月都会多发一个月的基本工资,查询此时的年薪。
select ename,(sal+200+100)*12+sal from emp;
7.将【例4-6】中的年薪列,改为income显示
select ename,(sal+200+100)*12+sal income from emp;
8.观察“||”的使用
select '雇员姓名:' || ename || ',职位:' || job info from emp;
9.查询编号为7521的职工的姓名、职位、雇用日期和基本工资。
select ename,job,hiredate,sal from emp where empno=7521;
10.要求查询出基本工资高于1500的所有雇员信息
select * from emp where sal>1500;
11.要求查询出职位是办事员的所有雇员信息。
select * from emp where job='CLERK';
12.查询工资在1500~3000之间的全部雇员信息。
select * from emp where sal between 1500 and 3000;
select * from emp where sal>=1500 and sal<=3000;
13.查询出职位是办事员或销售人员的全部信息。
select * from emp where job='CLERK' or job='SALESMAN';
14.查询出职位是办事员或销售人员的全部信息,并且要求这些雇员的工资大于1200。
select * from emp where (job='CLERK' or job='SALESMAN') and sal>1200;
15.查询所有不是办事员的雇员信息
select * from emp where job<>'CLERK';
select * from emp where job!='CLERK';
select * from emp where not job='CLERK';
16.查询出职位为CLERK和ANALYST的姓名、工作、雇佣日期和工资信息。
select ename,job,hiredate,sal from emp where job=any('CLERK','ANALYST');
select ename,job,hiredate,sal from emp where job='CLERK' or job='ANALYST';
17.查询出基本工资在1500~3000之间的雇员信息。
select * from emp where sal between 1500 and 3000;
select * from emp where sal>=1500 and sal<=3000;
18.要求查询出在1981年雇佣的全部雇员信息。
select * from emp where hiredate between '01-1月-1981' and '31-12月-1981';
19.查询出所有领取奖金的雇员信息。
select * from emp where comm is not null;
20.查询出雇员编号是7369、7566和7799的雇员信息。
select * from emp where empno=7369 or empno=7566 or empno=7799;
select * from emp where empno in(7369,7566,7799);
21.要求查询雇员姓名中以字母A开头的全部雇员信息
select * from emp where ename like 'A%';
22.要求查询雇员姓名中第二个字母是A的全部雇员信息
select * from emp where ename like '_A%';
23.要求查询雇员姓名中带有字母A的全部雇员信息
select * from emp where ename like '%A%';。