使用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;
经验分享 程序员 微信小程序 职场和发展