emp员工表(empno员工号/ename员工姓名/job工作/mgr上级编号/hiredate受雇日期/sal薪金/comm佣金/deptno所属部门编号)
工资 = 薪金 + 佣金
在emp 表中完成如下练习:
1、 在emp表中查询出所有记录的姓名、部门编号、薪水,并且列名要显示为中文。
2、 在emp表中查询出薪水大于1500的记录,并且按照薪水的降序排列。
3、 在emp表中查询出comm字段为空值的记录。
4、 查询出emp表中含有几个部门的记录。(用DISTINCT去除重复记录)
5、 在emp表中查询出部门编号为10或20的记录(要求使用IN关键字)
6、 在emp表中查询出姓名的第二个字母为A的记录。
7、 查询出emp表中总共有多少条记录。
8、 查询emp表中出每个部门的部门代码、薪水之和、平均薪水。
具体实现如下:
#创建数据库
CREATE DATABASE test1;
#创建表
CREATE TABLE emp;
#使用数据库
USE test1;
#创建列名
CREATE TABLE emp (
empno int(11) NOT NULL AUTO_INCREMENT,
ename varchar(20),
job varchar(30),
mgr int(11),
hiredate varchar(20),
sal double(10,2),
comm double(10,2),
deptno int(11),
PRIMARY KEY (empno)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;
# 赋值
Insert into emp values(
(1,'张三','经理',10,'2010/10/05',10000.00,5000.00,10),
(2,'李四','秘书',8,'2012/02/10',8000.00,4000.00,30),
(3,'may','员工',4,'2015/03/24',5100.00,2600.00,10),
(4,'马六','员工',4,'2015/08/16',5000.00,NULL,40),
(5,'孙七','经理',10,'2011/03/01',12000.00,5000.00,30),
(6,'赵八','秘书',8,'2013/06/18',8000.00,3000.00,20),
(7,'钱九','员工',4,'2015/02/29',5000.00,3500.00,20),
(8,'周十','员工',4,'2016/03/16',5000.00,NULL,30)
);
# 1.在emp表中查询出所有记录的姓名、部门编号、薪水,并且列名要显示为中文。
SELECT *FROM emp;
SELECT ename AS '员工姓名',IFNULL(sal,0)+IFNULL(comm,0) AS '薪金' ,deptno AS '所属部门编号' FROM emp;
# 2、在emp表中查询出薪水大于1500的记录,并且按照薪水的降序排列。
SELECT *FROM emp ORDER BY (IFNULL(sal,0)+IFNULL(comm,0))>1500 DESC;
# 3、在emp表中查询出comm字段为空值的记录。
SELECT *FROM emp WHERE comm IS NULL;
# 4、查询出emp表中含有几个部门的记录。(用DISTINCT去除重复记录)
SELECT COUNT(DISTINCT deptno)AS '部门总数' FROM emp;
# 5、在emp表中查询出部门编号为10或20的记录(要求使用IN关键字)
SELECT *FROM emp WHERE deptno IN(10,20);
# 6、在emp表中查询出姓名的第二个字母为A的记录。
SELECT *FROM emp WHERE ename LIKE "_A%";
# 7、查询出emp表中总共有多少条记录。
SELECT COUNT(*)AS '总记录数' FROM emp;
# 8、查询emp表中出每个部门的部门代码、薪水之和、平均薪水。
SELECT AVG(sal+IFNULL(comm,0))AS '平均薪水',SUM(sal+IFNULL(comm,0))AS '薪水之和',deptno AS '部门编号' FROM emp GROUP BY deptno;