mysql单表查询练习

数据源:

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for emp
-- ----------------------------
DROP TABLE IF EXISTS `emp`;
CREATE TABLE `emp` (
  `empno` int(11) NOT NULL,
  `ename` varchar(255) default NULL,
  `job` varchar(255) default NULL,
  `mgr` int(11) default NULL,
  `hiredate` date default NULL,
  `sal` decimal(10,2) default NULL,
  `COMM` decimal(10,2) default NULL,
  `deptno` int(11) default NULL,
  PRIMARY KEY  (`empno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of emp
-- ----------------------------
INSERT INTO `emp` VALUES ('1001', '甘宁', '文员', '1013', '2000-12-17', '8000.00', null, '20');
INSERT INTO `emp` VALUES ('1002', '黛绮丝', '销售员', '1006', '2001-02-20', '16000.00', '3000.00', '30');
INSERT INTO `emp` VALUES ('1003', '殷天正', '销售员', '1006', '2001-02-22', '12500.00', '5000.00', '30');
INSERT INTO `emp` VALUES ('1004', '刘备', '经理', '1009', '2001-04-02', '29750.00', null, '20');
INSERT INTO `emp` VALUES ('1005', '谢逊', '销售员', '1006', '2001-09-28', '12500.00', '14000.00', '30');
INSERT INTO `emp` VALUES ('1006', '关羽', '经理', '1009', '2001-05-01', '28500.00', null, '30');
INSERT INTO `emp` VALUES ('1007', '张飞', '经理', '1009', '2001-09-01', '24500.00', null, '10');
INSERT INTO `emp` VALUES ('1008', '诸葛亮', '分析师', '1004', '2007-09-01', '30000.00', null, '20');
INSERT INTO `emp` VALUES ('1009', '曾阿牛', '董事长', null, '2001-11-17', '50000.00', null, '10');
INSERT INTO `emp` VALUES ('1010', '韦一笑', '销售员', '1006', '2001-09-08', '15000.00', '0.00', '30');
INSERT INTO `emp` VALUES ('1011', '周泰', '文员', '1008', '2007-05-28', '11000.00', null, '20');
INSERT INTO `emp` VALUES ('1012', '程普', '文员', '1006', '2001-12-03', '9500.00', null, '30');
INSERT INTO `emp` VALUES ('1013', '庞统', '分析师', '1004', '2001-12-09', '30000.00', null, '20');
INSERT INTO `emp` VALUES ('1014', '黄盖', '文员', '1007', '2002-01-23', '13000.00', null, '10');
INSERT INTO `emp` VALUES ('1015', '张三', '保洁员', '1001', '2019-09-02', '80000.00', '50000.00', '50');

查询语句:

1、查询出部门编号为30的所有员工
    select * from emp where deptno = 30;

2、查询所有销售员的名字、编号和部门编号
	select ename as 姓名, empno as 编号, deptno as 部门编号 
	from emp 
	where job = '销售员';

3、找出奖金高于工资的员工
	select *
	from emp 
	where COMM > sal;

4、找出奖金高于工资60%的员工
	select *,(IFNULL(sal,0)*0.6) as `工资的60%`
	from emp 
	where COMM > sal*0.6;

	注意:
	    其中IFNULL是聚合函数:表示将null值变为数值0,便于数学计算
	    别名中要输出特殊字符 必须使用``反引号(键盘左上角第二排第一个)包含输出内容
		
5、找出部门编号为10中所有经理和部门编号为20中所有销售人员的详细资料
	select *
	from emp 
	where (deptno = '10' and job = '经理') or (deptno='20' and job='销售员');

6、找出部门编号为10中所有经理,部门编号为20中所有销售员,还有既不是经理又不是销售员但其工资大于或等于20000的所有员工详细资料
	select *
	from emp 
	where (deptno = '10' and job = '经理') or (deptno='20' and job='销售员') or (job != '经理' and job != '销售员' and sal > 20000);
		
    或者

	select *
	from emp 
	where (deptno = '10' and job = '经理') or (deptno='20' and job='销售员') or (job NOT IN('经理', '销售员') and sal >= 20000);

7、无奖金或奖金低于1000的员工
	select *
	from emp 
	where COMM IS null OR COMM < 1000; 

8、 查询名字由三个字组成的员工
	select *
	from emp 
	where ename LIKE '___'; 

9、查询2000年入职的员工
	select *
	from emp 
	where hiredate BETWEEN '2000-01-01' AND '2000-12-31'; 

    或者
	select *
	from emp 
	where hiredate like '2000-%'; 
		
10、查询所有员工详细信息,用编号降序排序
	select *
	from emp 
	ORDER BY empno desc; 

11、查询所有员工详细信息,用工资降序排序,如果工资相同使用入职日期升序排序
	select *
	from emp 
	ORDER BY sal DESC, hiredate ASC; 

12、查询每个部门的平均工资
	select deptno, AVG(sal) as 平均工资
	from emp 
	GROUP BY deptno; 
	
13、查询每个部门的雇员数量
	select deptno, COUNT(*) as 部门人数
	from emp 
	GROUP BY deptno; 
	
14、查询每种工作的最高工资、最低工资、人数
	select job, MAX(sal) as 最高工资, MIN(sal) as 最低工资, COUNT(*)
	from emp 
	GROUP BY job; 

 

你可能感兴趣的:(java菜鸟)