1、Oracle查询练习练习查询第一篇1.-1、查询emp表中的所有信息2.select*fromemp;3.4.-2、显示emp表的雇员名称和工资。5.selectename,salfromemp;6.7.-3、查询emp表中部门编号为20的并且sal(工资)大于3000的所有员工信息8.select*fromempwheredeptno=20andsal3000;9.10.-4、查询emp表中部门编号为20的或者sal(工资)大于3000的所有员工信息11.select*fromempwheredeptno=20orsal3000;12.13.-5、使用betweenand查询工资在2000和
2、4000之间的员工(用and重新实现)14.select*fromempwheresalbetween2000and4000;15.16.-6、使用in查询部门编号10,20的所有员工17.select*fromempwheredeptnoin(10,20);18.19.-7、使用like查询所有名字中包括W的员工信息20.select*fromempwhereenamelike%W%;21.22.-8、使用like查询所有员工名字中第二子字母为W的员工信息23.select*fromempwhereenamelike_W%;24.25.-9、查询所有员工信息并按照部门编号和工资进行排序26.
3、select*fromemporderbydeptno,sal;27.28.-10、显示雇员工资上浮20%的结果。29.selectename,sal*1.2fromemp;30.31.-11、显示EMP表的雇员名称以及工资和津贴的和。32.selectename,sal+(33.case34.whencommisnullthen035.elsecomm36.end)fromemp;37.38.selectename,sal+nvl(comm,0)fromemp;39.40.-12、在查询中使用列别名。特殊的别名如别名中有空格41.selectsalthesalfromemp;42.43.-1
4、3、显示DEPT表的内容,使用别名将表头转换成中文显示。44.selectdeptnoas部门编号,dnameas部门名称,locas所在地址fromdept;45.46.-14、显示DEPT表的内容,按以下的形式:部门ACCOUNTING所在的城市为NEWYORK47.select部门|dname|所在的城市|locfromdept;48.49.-15、使用DISTINCT消除重复行显示。显示emp表中的的职位50.selectdistinctjobfromemp;51.52.-16、查询雇员姓名和工资,并按工资从小到大排序。53.selectename,salfromemporderbys
5、alasc;54.55.-17、查询雇员姓名和雇佣日期,并按雇佣日期排序,后雇佣的先显示。56.selectename,hiredatefromemporderbyhiredatedesc;57.58.-18、查询雇员信息,先按部门从小到大排序,再按雇佣时间的先后排序。59.select*fromemporderbydeptnoasc,hiredateasc;60.61.-19、按工资和工作月份的乘积排序。62.selectsal*to_number(to_char(hiredate,MM)kfromemporderbyk;63.selectsal*extract(monthfrom(hire
6、date)kfromemporderbyk;64.65.-20、显示职务为“SALESMAN”的雇员的姓名、职务和工资。66.selectename,job,salfromempwherejob=SALESMAN;67.68.-21、显示工资大于等于3000的雇员姓名、职务和工资。69.selectename,job,salfromempwheresal=3000;70.71.-22、显示1982年以后雇佣的雇员姓名和雇佣时间。72.Selectename,floor(sysdate-hiredate)/365)fromempwherehiredateto_date(1982,YY);73.7
7、4.-23、显示部门编号为10的雇员姓名和雇佣时间75.selectename,to_char(hiredate,YYYY-MM-DD)fromempwheredeptno=10;76.77.-24、显示工资在10002000之间(不包括1000和2000)的雇员信息。78.select*fromempwheresal1000andsal1500anddeptno=10;82.83.-26、显示职务为CLERK或MANAGER的雇员信息。84.select*fromempwherejobin(CLERK,MANAGER);85.86.-27、显示部门10以外的其他部门的雇员。87.select
8、*fromempwheredeptno!=10;88.89.-28、显示部门10和部门20中工资小于1500的雇员。90.select*fromempwheresal1500anddeptnoin(10,20);91.92.-29、显示经理编号没有填写的雇员。93.select*fromempwheremgrisnull;94.95.-30、如果不知道表的字段内容是大写还是小写,可以转换后比较。96.selectupper(ename)fromemp;97.selectlower(ename)fromemp;98.99.-31、显示名称以“W”开头的雇员,并将名称转换成以大写开头。100.se
9、lectinitcap(ename)fromempwhereenamelikeW%;101.102.-32、显示雇员名称中包含“S”的雇员名称及名称长度。103.selectename,length(ename)fromempwhereenamelike%S%;104.105.-33、显示部门表中部门和所在城市列表,中间以下划线“_”连接,城市名转换成以大写字母开头。106.selectdname|_|initcap(loc)fromdept;107.108.-34、返回系统的当前日期109.selectto_char(sysdate,YYYY-MM-DD)fromdual;110.111.-
10、35、返回2003年2月的最后一天。112.selectlast_day(to_date(200302,YYYYMM)fromdual;113.114.-36、假定当前的系统日期是2003年2月6日,求再过1000天的日期。115.selectto_date(20030206,YYYYMMDD)+1000fromdual;116.117.-37、假定当前的系统日期是2003年2月6日,显示部门10雇员的雇佣天数。118.selectto_date(20030206,YYYYMMDD)-hiredatefromemp;119.120.-38、显示雇员名称和雇佣的星期数121.selectfloo
11、r(sysdate-hiredate)/7)fromemp;122.123.-39、显示从本年1月1日开始到现在经过的天数(当前时间取SYSDATE的值)。124.selectsysdate-to_date(concat(extract(yearfrom(sysdate),0101),YYYYMMDD)fromdual;125.126.-40、将日期显示转换成中文的年月日。127.selectto_char(sysdate,YYYY)|年|to_char(sysdate,MM)|月|to_char(sysdate,DD)|日fromdual;128.129.-41、将雇佣日期转换成字符串并按新
12、格式显示。(1712月1980)130.selectto_char(hiredate,DDMMYYYY)fromemp;131.132.-42、使用nvl函数转换空值。(如果是数值转换成0字符转换为空)133.selectnvl(comm,0)fromemp;134.135.136.137.-43、.在emp表中查询出员工的工资,并计算应交税款:138.-如果工资小于1000,税率为0,139.-如果工资大于等于1000并小于2000,税率为10,140.-如果工资大于等于2000并小于3000,税率为15,141.-如果工资大于等于3000,税率为20。(使用case)142.selects
13、al,(143.case144.whensal1000then0145.whensal2000then10146.whensal3000;158.159.-46、使用外连显示不满足相等条件的记录。显示工资小于1000的雇员的名称、工资和所在的部门名称。160.selectemp.ename,emp.sal,dept.dnamefromempjoindeptonemp.deptno=dept.deptnowhereemp.sal0orderbysalasc,commdesc;206.207.-58.列出部门编号为20的所有职位。208.selectdistinctjobfromempwhered
14、eptno=20;209.210.-59.列出不属于SALES的部门。211.selectdistinct*fromdeptwheredname!=SALES;212.213.-60.显示工资不在1000到1500之间的员工信息:名字、工资,按工资从大到小排序。214.selectename,salfromempwheresalnotbetween1000and1500orderbysaldesc;215.216.-61.显示职位为MANAGER和SALESMAN,年薪在15000和20000之间的员工的信息:名字、职位、年薪。217.selectename,job,12*(sal)frome
15、mpwherejobin(MANAGER,SALESMAN)and12*(sal)between15000and20000;218.219.-62.说明以下两条SQL语句的输出结果:220.SELECTEMPNO,COMMFROMEMPWHERECOMMISNULL;-有数据221.SELECTEMPNO,COMMFROMEMPWHERECOMM=NULL;-无数据222.-isnull和=null的差别在于isnull是进行逻辑判断,返回值是true或false,而=null是进行数值判断,null在oracle中是表示未知,也就是不确定223.-所以在进行判断的时候返回的结果也是null,
16、也是不确定,容易发生错误。224.225.-63.查询当前用户所创建的所有表226.selectrownum|.SELECT*FROM|table_namefromuser_tables;227.228.-64.判断SELECTENAME,SALFROMEMPWHERESAL1500是否报错,为什么?229.-不会,oracle会将字符型转换成数值型,但这样会降低查询的效率,因为oracle会花费时间去进行隐性的数据类型转换练习查询第二篇1.哪些部门的人数比90号部门的人数多。2.selectdepartment_id,count(*)3.fromemployees4.groupbydepar
17、tment_id5.havingcount(*)(selectcount(*)fromemployeeswheredepartment_id=90);6.7.-2.Den(FIRST_NAME)、Raphaely(LAST_NAME)的领导是谁(非关联子查询)。8.selectfirst_name|last_namefromemployeeswhereemployee_id=(9.selectmanager_idfromemployeeswherefirst_name=Denandlast_name=Raphaely);10.11.-3.Den(FIRST_NAME)、Raphaely(LAS
18、T_NAME)领导谁(非关联子查询)。12.selectfirst_name|last_namefromemployeeswheremanager_id=(13.selectemployee_idfromemployeeswherefirst_name=Denandlast_name=Raphaely);14.15.-4.Den(FIRST_NAME)、Raphaely(LAST_NAME)的领导是谁(关联子查询)。16.selectfirst_name|last_name17.fromemployeesa18.whereexists19.(select1fromemployeesb20.wh
19、erea.employee_id=b.manager_id21.andb.first_name=Den22.andb.last_name=Raphaely);23.24.-5.Den(FIRST_NAME)、Raphaely(LAST_NAME)领导谁(关联子查询)。25.selectfirst_name|last_name26.fromemployeesa27.whereexists28.(select1fromemployeesb29.wherea.manager_id=b.employee_id30.andb.first_name=Den31.andb.last_name=Raphaely);32.33.-6.列出在同一部门共事,入职日期晚但工资高于其他同事的员工:名字、工资、入职日期(关联子查询)。34.selectfirst_name|last_name35.fromemployeesa36.whereexists37.(select1fromemployeesb38.wherea.department_id=b.department_id
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1