数据库mysql单表查询-MySql数据库单表、多表查询练习_第1页
数据库mysql单表查询-MySql数据库单表、多表查询练习_第2页
数据库mysql单表查询-MySql数据库单表、多表查询练习_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库mysql单表查询_MySql数据库单表、多表查询练习-按部门求出该部门平均工资分组查询SELECTTRUNCATE(AVG(SAL),O)AS部门平均工资FROMempGROUPBYemp.DEPTNO;-查询部门平均工资大于2000元的部门SELECTdept.DNAMEAS平均工资大于2000的部门FROMdeptWHEREdept.DEPTNOIN(SELECTemp.DEPTNOFROMempGROUPBYemp.DEPTNOHAVINGTRUNCATE(AVG(SAL),0)2000);-按部门平均工资降序排列SELECTTRUNCATE(AVG(SAL),0)AS部门平均工

2、资,emp.DEPTNOFROMempGROUPBYemp.DEPTNOORDERBYTRUNCATE(AVG(SAL),0)DESC;-除10号部门外,查询部门平均工资大于2000元的部门SELECTAVG(SAL)FROMempWHEREemp.DEPTNO!=10GROUPBYemp.DEPTNOHAVINGAVG(SAL)2000;-显示部门平均工资的最大值SELECTTRUNCATE(AVG(SAL),0)AS部门平均工资最大值,emp.DEPTNOFROMempGROUPBYemp.DEPTNOORDERBYTRUNCATE(AVG(SAL),0)DESCLIMIT0,1;-查询员

3、工的编号,姓名,部门名,使用表别名简化SELECTemp.EMPNO,emp.ENAME,dept.DNAMEFROMemp,deptWHEREemp.DEPTNO=dept.DEPTNO;-显示员工的编号,姓名,月薪,工资级别SELECTemp.EMPNO,emp.ENAME,emp.SAL,salgrade.GRADEFROMemp,salgradeWHEREemp.SALBETWEENsalgrade.LOSALANDsalgrade.HISALORDERBYsalgrade.GRADE;-按部门10,20,30,40号,统计各部门员工人数,要求显示部门号,部门名,人数SELECTdep

4、t.DEPTNO,dept.DNAME,COUNT(emp.EMPNO)FROMdept,empWHEREdept.DEPTNO=emp.DEPTNOGROUPBYemp.DEPTNO;#因为一个部门没有数据,所以没有显示全SELECTdept.DEPTNO,dept.DNAME,COUNT(emp.EMPNO)FROMdeptLEFTJOINempONdept.DEPTNO=emp.DEPTNOGROUPBYemp.DEPTNO;#至于分清左右,主要看全显示的是哪个表,是哪个就朝那边-显示每个员工的上级SELECTa.ENAME,b.ENAMEFROMempaLEFTJOINempbONb.

5、EMPNO=a.MGR;SELECTCONCAT(a.ENAME,的BOSS是-,b.ENAME)FROMempaLEFTJOINempbONb.EMPNO=a.MGR;-查询员工薪资最高的员工信息SELECT*FROMempWHEREemp.SAL=(SELECTMAX(SAL)FROMemp);-查询工资比WARD高的员工信息SELECT*FROMempWHEREemp.SAL(SELECTSALFROMempWHEREemp.ENAME=WARD);-查询部门名为SALES的员工信息-方式一:子查询SELECT*FROMempWHEREemp.DEPTNO=(SELECTdept.DEP

6、TNOFROMdeptWHEREdept.DNAME=SALES);-方式二:多表查询SELECTemp.*FROMemp,deptWHEREemp.DEPTNO=dept.DEPTNOANDdept.DNAME=SALES;-查询部门名为ACCOUNTING或SALES的员工信息(多行子查询,使用in关键字)SELECT*FROMempWHEREemp.DEPTNOIN(SELECTdept.DEPTNOFROMdeptWHEREdept.DNAME=ACCOUNTINGORdept.DNAME=SALES);-查询部门名不是ACCOUNTING或SALES的员工信息(多行子查询,使用in关

7、键字)SELECT*FROMempWHEREemp.DEPTNONOTIN(SELECTdept.DEPTNOFROMdeptWHEREdept.DNAME=ACCOUNTINGORdept.DNAME=SALES);-查询工资比20号部门【任意any】一个员工工资【彳低SELECT*FROMempWHEREemp.SALANY(SELECTSALFROMempWHEREemp.DEPTNO=20);SELECT*FROMempWHEREemp.SAL(SELECTMAX(SAL)FROMempWHEREemp.DEPTNO=20);-查询工资比30号部门【所有all】员工【彳低SELECT*

8、FROMempWHEREemp.SALALL(SELECTSALFROMempWHEREemp.DEPTNO=30);SELECT*FROMempWHEREemp.SAL(SELECTMIN(SAL)FROMempWHEREemp.DEPTNO=30);-使用并集运算,查询20号部门或30号部门的员工信息SELECT*FROMempWHEREemp.DEPTNO=20UNIONSELECT*FROMempWHEREemp.DEPTNO=30;-union:二个集合中,如果都有相同的,取其一-unionall:二个集合中,如果都有相同的,都取-使用交集运算intersect,查询工资在1000-

9、2000和1500-2500之间的员工信息(方式一)-select*fromempwheresalbetween1000and2000-intersect-select*fromempwheresalbetween1500and2500;-(方式二:)SELECT*FROMempWHERE(emp.SALBETWEEN1000AND2000)AND(emp.SALBETWEEN1500AND2500);-使用差集运算minus,查询工资在1000-2000,但不在1500-2500之间的员工信息(方式一)-select*fromempwheresalbetween1000and2000-min

10、us-select*fromempwheresalbetween1500and2500;-(方式二:)SELECT*FROMempWHERE(emp.SALBETWEEN1000AND2000)AND(emp.SALNOTBETWEEN1500AND2500);集合查询的细节:1)集合操作时,必须确保集合列数是相等selectempno,ename,sal,commfromempwheredeptno=20unionselectempno,ename,salfromempwheredeptno=30;错2)集合操作时,必须确保集合列类型对应相同selectempno,ename,sal,commfromempwheredeptno=20unionselectempno,ename,sal,hiredatefromempwheredeptno=30;错3)AunionBunionC=CunionBunionA(交换律)select*fromempwheredeptno=10unionselect*fromempwher

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论