mysql中group by,having,order by,limit,distinct的用法和简单的的多表查询

mysql中group by,having,order by,limit,distinct的用法和简单的的多表查询分组查询:关键字group by的用法 group:组 by:通过 group by :通过….。 分组group by列名:通过指定列来分组 一般情况下在题目中出现 "每个"

mysql中group by,having,order by,limit,distinct的用法和简单的的多表查询

分组查询:关键字group by的用法

group:组

by:通过

group by :通过….。
分组group by列名:通过指定列来分组

一般情况下在题目中出现 “每个” “各个” “不同的” 这一类词语时基本都会用到group by 分组关键字

语法: select 列名 from表名 group by列名;

多字段分组语法:select * from 表名 group by 列名1 ,列名2;

分组后的筛选 having的用法

功能:类似于where

注意: 不能代替where,位置不能再group by 前面。且having 后面可以跟列名

也可以跟聚合函数。

语法:select * from 表名 group by 列名 having 条件表达式;

1.查询各个部门员工平均工资大于2500的员工部门编号;

2.查询各个部门各个岗位的工资大于1500的员工;

3.查询部门编号30的各个岗位平均工资;

having 和 where的区别:

1.where 是对分组前的数据进行筛选;

2.having 是对分组后的数据进行筛选;

3.having 后面可以跟列名,函数;

4.where 不能对分组后的数据进行筛选;

5.where 后面不能跟函数;

排序关键字 order by :

注意:

1.mysql中查询结果是按升序排序;

2.查询时排序后如果要求升序或降序那么,需要将两种排序的关键字补充上;

3.方法一:升序排序关键字asc 用法 order by 列名 asc;

4.方法二:降序排序关键字desc 用法 order by 列名 desc;

5.多字段排序:order by 列名1 [asc]desc,列名2[asc] desc ——先按列1排序如果列1值相同则按列2排序;

1.查询工资大于2000的员工信息按工资降序排序;

select * from emp where sal>2000 order by sal desc;

2.查询每个岗位平均工资按岗位降序排序;

select job,avg(sal) from emp order by job desc;

3.查询每个部门平均工资按部门降序排序;

select deptno ,avg(sal) from emp group by deptno order by deptno desc;

4.查询部门10的员工信息按工资降序排序;

select * from emp where deptno=10 order by sal desc;

5.查询工资大于等于3000的员工信息按员工编号降序排序;

select * from emp where sal>=3000 order by empno desc;

6.查询各个部门的员工的姓名并按部门编号降序排序;

select deptno,ename from emp order by deptno desc;

7.查询emp表,输出每个部门的各个职位的平均工资,并按部门编号升序、平均工资降序排序。

select deptno,job,avg(sal) from emp group by deptno,job order by deptno asc,avg(sal) desc;

查询关键字limit的用法

limit一般是用在order by后面

limit又有限制的意思,我们可以抽象的理解为截取

limit m,n——意思是从m+1条开始,连续取n条数据

例如: select * from emp order by sal lirmit 0,3;

意思是:查询emp,表员工所有信息按工资升序排序,只显工资的1-3位;

1.查询工资第五高的人信息;

select ename ,sal from emp order by sal desc limit 4,1;

2.查询工资倒数第三的人信息;

select ename ,sal from emp order by sal asc limit 2,1;

模糊匹配:关键字like

like: 像……

模糊匹配支持两种字符匹配符号

第一种:% 匹配任意个字符;

第二种:_ 匹配一个任意字符;

用法:一般是用在where 条件表达式中;

例如:查询名字中含R的员工姓名和工资;

select ename ,sal from emp where ename like”%R%”;

例如:查询名字是四个字符的员工姓名和工资;

select ename,sal from emp where ename like”____”;

去重: 关键字distinct

作用:就是将查询出来的列值相同的进行去重

例如:查询有多少个领导;

select count(distinct mgr) from emp;

多表查询

说明:多表查询就是根据查询需要的数据,但是数据部分在不同的表中,查询的时候需要多个表来获取数据。

查询步骤:

第一步:需要先分析即将查询的数据和给出的条件分别属于哪些表;
第二步:根据表中的列,来分析表与表之间的联系有哪些
直接关系:两张表之间有相同的列
间接关系:两张表之间没有相同的列,但是可以通过其他表建立联系;
第三步:mysql语句的编写
语法:

select 别名1.列名1,别名2.列名2

from 表名1 as 别名1, 表名2 as 别名2

where 别名1.相同列=别名2.相同列

and 其他条件语句;

语句一共有四个部分:

第一部分是确定要查询显示的列

第二部分是确定数据来源于哪些表

第三部分是建立两张表的关系,一般用的是两张表相同列名的列

第四部分阐述题目中的其他条件

  1. 查询部门编号10上班的员工姓名,城市,部门编号;

​ select ename,loc,e.deptno

​ from emp e,dept d

​ where e.deptno=d.deptno and e.deptno=10;

  1. 查询在NEW YORK 上班的员工工号和员工姓名和员工工资和部门名字;
    select e.empno,ename,sal,d.dname — 查询的列
    from emp e,dept d — 查询的数据源
    where — 条件关键字
    e.deptno=d.deptno — 建立连接
    and d.loc=”NEW YORK”; — 筛选条件

  2. 查询芝加哥员工的平均工资
    select d.loc “城市”,round(avg(sal),2)”平均工资”
    from emp e,dept d
    where
    e.deptno=d.deptno
    and
    d.loc=”CHICAGO”;

4.查询research部门有多少员工;

  1. 第一种方式(不存在重名时可以用这种方法)
    select d.dname “部门”,count(e.ename) “员工”
    from emp e,dept d
    where
    e.deptno=d.deptno and d.dname=”RESEARCH”;

  2. 第二种方式(防止有重名的因素干扰)
    select dname”部门”,count(empno)”员工” from emp e ,dept d
    where
    e.deptno=d.deptno and dname=”RESEARCH”;

  3. 查询在dallas和new york上班有多少人

select count(empno) — 查询的列

from emp e,dept d –查询的数据来源

where

e.deptno=d.deptno –建立表之间的联系

and (loc=”DALLAS” or loc=”NEW YORK”);–题目中的筛选条件

4.查询sales部门的最低工资的员工姓名和工号
—第一种子查询方式
select ename ,empno from emp e,dept d

where e.deptno=d.deptno and dname=”SALES” and sal=(select min(sal) from emp e ,dept d where e.deptno=d.deptno and dname=”SALES”);
—第二种截取方式
select ename ,empno from emp e,dept d

where e.deptno=d.deptno and dname=”SALES” order by sal limit 1;

— 查询每年要给RESEARCH部门划多少工资钱

select sum(sal*12) from emp e,dept d

where e.deptno=d.deptno

and dname=”RESEARCH”;

— 查询ACCOUNTING部门员工的平均工资

select d.deptno,avg(sal) from emp e,dept d

where e.deptno=d.deptno

and dname=”ACCOUNTING” group by deptno;

原文地址:https://www.cnblogs.com/cn-zhouchao/archive/2022/07/11/16467528.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/5038.html

(0)
上一篇 2023-05-25 17:30
下一篇 2023-05-25

相关推荐

  • Python Scalr教程:使用Scalr管理和自动化部署Python应用程序

    Python Scalr教程:使用Scalr管理和自动化部署Python应用程序Scalr是一种高度可扩展的云管理平台,它使您可以通过云实例自动化和管理应用程序的部署。在本教程中,我们将探讨如何使用Scalr来部署和管理Python应用程序。

    2023-12-27
    60
  • mysql导出数据时提示文件损坏怎么办_黑屏手机坏了导出数据

    mysql导出数据时提示文件损坏怎么办_黑屏手机坏了导出数据1. 使用Navicat工具,优先将整个数据库的表和数据导出。 2. 如果遇到 文件损坏 错误可以在 表实例界面 选中所有表,然后将表转储为SQL文件(结构和数据)。 3. 在目标数据库执行导出的SQ

    2023-01-29
    105
  • 轻松实现Python CGI页面的交互性

    轻松实现Python CGI页面的交互性CGI,全称通用网关接口(Common Gateway Interface),指的是Web服务器提供的一种机制,可以同外部程序交换数据。在Web服务器接收到客户端(如浏览器)发送的请求时,如果该请求是由CGI程序处理的,则Web服务器会将相关数据传递给指定的CGI程序,CGI程序接收到这些数据后,会处理这些数据,然后生成HTML页面返回给Web服务器,最终Web服务器将HTML页面返回给请求的客户端。

    2024-02-11
    46
  • 优化Python Zara员工的任务完成效率

    优化Python Zara员工的任务完成效率在进行数据分析前,预处理和数据清洗是非常重要的步骤。这些步骤包括数据的读取、转换、排除无效数据等。对于Zara员工而言,预处理和数据清洗是数据分析过程中不可或缺的一步。

    2024-01-10
    67
  • Redis系列(五)发布订阅模式、主从复制和哨兵模式[通俗易懂]

    Redis系列(五)发布订阅模式、主从复制和哨兵模式[通俗易懂]NoSQL 开发中或多或少都会用到,也是面试必问知识点。最近这几天的面试每一场都问到了。但是感觉回答的并不好,还有很多需要梳理的知识点。这里通过几篇 Redis 笔记整个梳理一遍,后面再加上面试题。

    2023-02-28
    100
  • mysql通过复制文件实现备份

    mysql通过复制文件实现备份mysqldump的方法耗时:备份+网络传输+恢复 缺点:时间 直接复制文件的方法耗时:网络传输 缺点:可能造成意外的情况 第一种已经实践过了,今天试下第二种。 1.tar zxvf bak.tar…

    2023-03-22
    102
  • mysql 锁详解_请简述MySQL中三种锁的特点

    mysql 锁详解_请简述MySQL中三种锁的特点正文内容 模拟准备–如何模拟高并发访问一个脚本:apache安装文件的bin/ab.exe可以模拟并发量 -c 模拟多少并发量 -n 一共请求多少次 http://请求的脚本 例如:cmd: ap…

    2023-03-16
    108
  • CrateDB分布式数据库[亲测有效]

    CrateDB分布式数据库[亲测有效]今日在portianer后台,查询应用模板时,偶尔看到一个名为CrateDB的数据,顺手查了一下。其中就一一篇标题名为“比Postgre快10倍的开源数据库CrateDB”的文章,第一个感觉,就是口…

    2023-03-08
    113

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注