mysql基础练习(二)

-- 创建表
drop table if exists emp;
create table emp(
empno int,
ename varchar(50),
job varchar(50),
mgr int,
hiredate date,
sal decimal(7,2),
comm decimal(7,2),
deptno int
)engine=innodb default charset=utf8;

drop table if exists dept;
create table dept(
deptno int,
dname varchar(14),
loc varchar(13)
)engine=innodb default charset=utf8;

INSERT INTO emp VALUES(7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20);
INSERT INTO emp VALUES(7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30);
INSERT INTO emp VALUES(7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30);
INSERT INTO emp VALUES(7566,'JONES','MANAGER',7839,'1981-04-02',2975,NULL,20);
INSERT INTO emp VALUES(7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30);
INSERT INTO emp VALUES(7698,'BLAKE','MANAGER',7839,'1981-05-01',2850,NULL,30);
INSERT INTO emp VALUES(7782,'CLARK','MANAGER',7839,'1981-06-09',2450,NULL,10);
INSERT INTO emp VALUES(7788,'SCOTT','ANALYST',7566,'1987-04-19',3000,NULL,20);
INSERT INTO emp VALUES(7839,'KING','PRESIDENT',NULL,'1981-11-17',5000,NULL,10);
INSERT INTO emp VALUES(7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30);
INSERT INTO emp VALUES(7876,'ADAMS','CLERK',7788,'1987-05-23',1100,NULL,20);
INSERT INTO emp VALUES(7900,'JAMES','CLERK',7698,'1981-12-03',950,NULL,30);
INSERT INTO emp VALUES(7902,'FORD','ANALYST',7566,'1981-12-03',3000,NULL,20);
INSERT INTO emp VALUES(7934,'MILLER','CLERK',7782,'1982-01-23',1300,NULL,10);

INSERT INTO dept VALUES(10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO dept VALUES(20, 'RESEARCH', 'DALLAS');
INSERT INTO dept VALUES(30, 'SALES', 'CHICAGO');
INSERT INTO dept VALUES(40, 'OPERATIONS', 'BOSTON');
-- 1、按员工编号升序排列不在10号部门工作的员工信息
SELECT *
FROM emp
WHERE deptno != 10
ORDER BY empno;
-- 2、查询姓名第二个字母不是”A”且薪水大于800元的员工信息,按薪水降序排列
SELECT *
FROM emp
where ename not LIKE "_A%" and CEIL(sal) > 800;
-- 3、求每个部门的平均薪水
SELECT deptno, avg(sal)
FROM emp
GROUP BY deptno;
-- 4、求各个部门的最高薪水
SELECT deptno, max(sal)
FROM emp
GROUP BY deptno;
-- 5、求每个部门每个职位的最高薪水
SELECT deptno, job, MAX(sal)
FROM emp
group by deptno, job
-- 6、求平均薪水大于2000的部门编号
SELECT deptno, avg(sal) avgSal
from emp
group by deptno
HAVING avgSal > 2000;
-- 7、将员工薪水大于1200且部门平均薪水大于1500的部门编号列出来,按部门平均薪水降序排列
select deptno, avg(sal) avgSal
from emp
where sal > 1200
GROUP BY deptno
HAVING avgSal > 1500
ORDER BY avgSal desc;

-- 8、求最高薪水的员工信息
SELECT *
from emp
where sal = (
SELECT max(sal)
FROM emp
)
-- 9、求多于平均薪水的员工信息
SELECT *
FROM emp
where sal > (
SELECT AVG(sal)
FROM emp
)

-- 10、求各个部门薪水最高的员工信息 显示部门名称
SELECT dept.dname, t2.*
FROM dept,(
select emp.*
from emp, (
SELECT deptno, MAX(sal) maxSal
FROM emp
GROUP BY deptno) t1
where emp.deptno = t1.deptno AND emp.sal = t1.maxSal) t2
where dept.deptno = t2.deptno


-- 11. 查询和Scott相同部门的员工姓名和雇用日期

select ename, hiredate
FROM emp
WHERE ename != "SCOTT" and deptno = (
select deptno
from emp
where ename = "SCOTT");
-- 12.	查询工资比公司平均工资高的员工的员工号,姓名和工资。
SELECT empno, ename, sal
FROM emp
WHERE sal > (
select AVG(sal)
FROM emp);
-- 13.	查询各部门中工资比本部门平均工资高的员工的员工号, 姓名和工资

-- 13.1
SELECT empno, ename, sal
FROM emp,(
SELECT deptno, avg(sal) avgSal
from emp 
GROUP BY deptno
) t1
where emp.deptno = t1.deptno and emp.sal > t1.avgSal;

-- 13.2
select empno, ename, sal
FROM emp inner join (
SELECT deptno, avg(sal) avgSal
FROM emp
GROUP BY deptno
) t1
on emp.deptno = t1.deptno and emp.sal > t1.avgSal

-- 14.	查询和姓名中包含字母u的员工在相同部门的员工的员工号和姓名
SELECT empno, ename
FROM emp
WHERE deptno in (
SELECT deptno
FROM emp
WHERE ename LIKE "%u%"
)

-- 15. 	查询在部门的loc为 DALLAS 的部门工作的员工的员工号
SELECT empno
from emp
WHERE deptno in (
SELECT deptno
FROM dept
WHERE loc = "DALLAS");


-- 16.	查询所有部门的名字,loc,员工数量 和 工资平均值 ()
-- 16.1
select dept.dname, dept.loc, t1.*
from dept, (
select avg(sal), count(empno), deptno
from emp
group by deptno
) t1
where t1.deptno = dept.deptno;

-- 16.2
select d.*, count(e.empno), avg(sal)
from dept d, emp e
where d.deptno = e.deptno
GROUP BY d.deptno, d.dname, d.loc


-- 17.查询平均工资最低的部门信息
-- 17.1
select *
from dept
where deptno = (
select deptno
from emp
GROUP BY deptno
order by avg(sal)
limit 1)

-- 17.2
select *
from dept
where deptno = (
select deptno
from emp
group by deptno
having avg(sal) like (
select min(t1.avgSal)
from (
select deptno, avg(sal) avgSal
from emp
GROUP BY deptno
) t1
))

-- 18.查询平均工资最低的部门信息和该部门的平均工资
select dept.*, avgSal
from dept, (
select deptno, avg(sal) avgSal
from emp
group by deptno) t1
where dept.deptno = t1.deptno


-- 19.查询平均工资高于公司平均工资的部门有哪些?
select deptno
from emp
group by deptno
having avg(sal) > (
select avg(sal) avgSal
from emp
)

-- 20. 各个部门中 最高工资中最低的那个部门的 最低工资是多少	
select min(sal)
from emp
where deptno = (
select deptno
from emp
group by deptno
order by max(sal) asc
limit 1
)
-- 21.查询部门号大于20 或者 姓名中包含 a的 员工信息
-- 21.1
select *
from emp
where deptno > 20 or ename Like "%a%";

-- 21.2
select *
from emp 
where deptno > 20
union
select *
from emp
where ename like "%a%";

原文链接:https://www.cnblogs.com/paopaoT/p/17357181.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mysql基础练习(二) - Python技术站

(0)
上一篇 2023年4月25日
下一篇 2023年4月27日

相关文章

  • 在mac上如何使用终端打开XAMPP自带的MySQL

    以下是在Mac上使用终端打开XAMPP自带的MySQL的完整攻略: 步骤一:打开终端 在Mac上打开终端的快捷键可以是 “Command + 空格”,然后输入 “Terminal”,回车即可。 步骤二:进入XAMPP的安装目录 在终端中输入以下命令,打开XAMPP的安装目录: cd /Applications/XAMPP 步骤三:启动MySQL 在终端中,输…

    MySQL 2023年5月18日
    00
  • windows7下启动mysql服务出现服务名无效的原因及解决方法

    问题描述: 在 Windows7 下启动 MySQL 服务时,可能会遇到服务名无效的错误,导致无法启动 MySQL 服务,此时需要进行排查和解决。 解决方法: 确认服务名是否正确 1.1 打开“服务”管理器 在 Windows7 的“控制面板”中,可以找到“管理工具”选项,点击进入后找到“服务”管理器。 1.2 查看服务名是否正确 在“服务”管理器中,找到名…

    MySQL 2023年5月18日
    00
  • Python3与SQLServer、Oracle、MySql的连接方法

    环境: python3.4 64bit pycharm2018社区版 64bit Oracle 11 64bit SQLServer· Mysql 其中三种不同的数据库安装在不同的服务器上,通过局域网相连 步骤1:在pycharm上安装相应的包,可通过pip或者其他方式 步骤2:import这些包 import pymysql,pymssql,cx_Orac…

    MySQL 2023年4月16日
    00
  • MySQL变量的定义和赋值方法详解

    MySQL变量的定义和赋值方法如下: 1. 使用SET语句 定义一个变量并赋值: SET @变量名 = 值; 给变量赋新值: SET @变量名 = 新值; 2. 在SELECT语句中使用: 定义一个变量并赋值: SELECT 值 INTO @变量名; 给变量赋新值: SELECT 新值 INTO @变量名; 举例说明: 假设有一张学生表students,包含…

    MySQL 2023年3月10日
    00
  • 水平分库分表排雷帖

    一、背景 提起分库分表,对于大部分服务器开发来说,其实并不是一个新鲜的名词。随着业务的发展,我们表中的数据量会变的越来越大,字段也可能随着业务复杂度的升高而逐渐增多,我们为了解决单表的查询性能问题,一般会进行分表操作。 同时我们业务的用户活跃度也会越来越高,并发量级不断加大,那么可能会达到单个数据库的处理能力上限。此时我们为了解决数据库的处理性能瓶颈,一般会…

    MySQL 2023年5月6日
    00
  • MySQL聚合查询方法怎么使用

    本篇内容介绍了“MySQL聚合查询方法怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 1、前言 前面的内容已经把基础的增删改查介绍的差不多了,也介绍了表的相关约束, 从本期开始往后的内容,就更加复杂了,更多的是一些复杂的查询 SQL. 2、插入查询结果…

    MySQL 2023年4月10日
    00
  • MYSQL 表的全面总结

    MYSQL 表的全面总结攻略 什么是MYSQL表 MySQL是一个开放源代码的关系型数据库管理系统(RDBMS),MySQL表是其管理的数据之间的最小单元,它包含了多个列和行,数据存储在行中的各个列中,在操作MySQL数据库时必须要使用表名。 如何创建MYSQL表 创建MySQL表需要使用CREATE TABLE语句。 语法如下: CREATE TABLE …

    MySQL 2023年5月18日
    00
  • 一篇文章带你了解MySQL索引下推

    一篇文章带你了解MySQL索引下推 什么是MySQL索引下推 MySQL索引下推是指MySQL在查询过程中,将WHERE字句中的过滤条件尽可能地下推到数据读取过程中,以提高查询性能的一种优化方式。MySQL索引下推可以减少MySQL服务器获取数据的数量,从而提高查询效率。 MySQL索引下推的优势和劣势 优势 减少了MySQL服务器获取数据的数量,提高查询效…

    MySQL 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部