使用sql语句在emp员工表中实现各种操作
使用sql语句在emp员工表中实现各种操作
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;