全国咨询热线:400-618-4000

JAVA培训之单表查询练习

创建时间:2016年10月18日16时54分

1.安装mysql图形化工具—SQLyog

我们之前对mysql数据库的操作都是在dos窗口下进行的,下面给大家介绍一个图形化工具,使用这个工具可以来操作数据库,点击此处下载 SQLyog工具,解压之后,双击如图1-1所示的应用程序:

图1-1 SQLyog目录
双击图1-1中的应用程序后,如果需要输入用户名和注册码,请输入以下信息:
  • 用户名:Any
  • 注册码:26f359fc-e3f6-4727-8af1-72a1a4a0819d

如果不需要输入注册码,那么会出现图1-2所示界面:

图1-2 建立与数据库的连接
点击图1-2中的【连接】之后会弹出一个对话框,点击【OK】即可进入图1-3所示界面:

图1-3 SQLyog界面
双击要打开的数据库,例如user数据库,选择【table】,找到需要打开的表,如图1-4所示:

图1-4 查看emp表

2.单表查询练习

下面我们会使用SQLyog工具来操作数据库,首先来看第一道练习题:
(1) 查询出部门编号为30的所有员工,对应的sql语句:select * from emp where deptno=30,查询结果如图1-5所示:

图1-5 查询练习1
(2)查询所有销售员的姓名、编号和部门编号,对应的sql语句:select ename,empno,deptno from emp where job=’销售员’,查询结果如图1-6所示:

图1-6 查询练习2
(3) 查询奖金高于工资的员工,对应的sql语句是:select * from emp where comm>sal,查询结果如图1-7所示:

图1-7 查询结果3
(4) 查询奖金高于工资60%的员工,对应sql语句是:select * from emp where comm>sal*0.6,查询结果如图1-8所示:

图1-8 查询结果4
(5)查询部门编号为10的所有经理,和部门编号为20的所有销售员的详细资料:
  • 分析:这道题的难点在于查询的两个部分之间是与的关系还是或的关系,题目表明将部门为10的所有经理,部门为20的所有销售员都查询出来,那么他们之间的关系必然是或的关系。
对应的sql语句是:select * from emp where deptno=10 and job=’经理’ or deptno=20 and job=’销售员’,查询结果如图1-9所示:

图1-9 查询结果5
(6) 查询部门编号为10的所有经理,部门编号为20的所有销售员,还有即不是经理又不是销售员但其工资大或等于20000的所有员工详细资料:
  • 分析:这条题的逻辑与第五题的逻辑是一样的,都是或的关系;
对应的sql语句是:select * from emp where deptno=10 and job=’经理’ or deptno=20 and job=’销售员’ or job not in(‘经理’,’销售员’) and sal>=20000,查询结果如图1-10所示:

图1-10 查询练习6
(7)查询无奖金或奖金低于1000的员工,对应sql语句是:select * from emp where comm is null or comm<1000,查询结果如图1-11所示:

图1-11 查询练习7
(8)查询名字由三个字组成的员工,对应sql语句是:select * from emp where ename like ‘___’,查询结果如图1-12所示:

图1-12 查询练习8
(9) 查询2000年入职的员工,对应sql语句:select * from emp where hiredate like ‘2000-%’,其中“%”匹配任意字符,查询结果如图1-13所示:

图1-13 查询练习9
(10)查询所有员工详细信息,用编号升序排序,对应的sql语句为:select * from emp order by empno asc,查询结果如图1-14所示:

图1-14 查询练习10
(11)查询所有员工详细信息,用工资降序排序,如果工资相同使用入职日期升序排序,对应的sql语句是:select * from emp order by sal desc,hiredate asc,查询结果如图1-15所示:

图1-15 查询练习11
(12)查询每个部门的平均工资,以后如果看到“每个”字眼时,就要想到分组查询,这道题就是一个分组查询,根据部门分组,因此对应的sql语句是:select deptno,avg(sal) from emp group by deptno,查询结果如图1-16所示:

图1-16 查询练习12
(13)查询每个部门的雇员数量,这个题也是分组查询,按照部门分组,对应的sql语句是:select deptno,count(*) from emp group by deptno,查询结果如图1-17所示:

图1-18 查询练习13
(14)查询每种工作的最高工资、最低工资、人数,该题也是分组查询,按照工作分组,对应的sql语句是:select job,max(sal),min(sal),count(*) from emp group by job,查询结果如图1-19所示:

图1-19 查询练习14

本文版权归传智播客java学院所有,欢迎转载,转载请注明作者出处。谢谢!
作者:传智播客java学院