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

group:组

by:通过

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

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

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

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

功能:类似于where

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

也可以跟聚合函数。

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

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

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

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

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

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

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

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

5.where 后面不能跟函数;

注意:

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一般是用在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: 像……

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

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

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

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

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

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

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

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

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

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

select count(distinct mgr) from emp;

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

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

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

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

and 其他条件语句;

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

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

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

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

​ select ename,loc,e.deptno

​ from emp e,dept d

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

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

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’ 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;

Original: https://www.cnblogs.com/cn-zhouchao/p/16467528.html
Author: 小胖子学编程
Title: mysql中group by,having,order by,limit,distinct的用法和简单的的多表查询

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/619417/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 一文读懂Redis

    Redis与NoSQL概述 Nosql的优势 使用nosql解决cpu与内存压力 使用nosql解决I/O压力 Nosql数据库的概述 NoSql= Not Only SQL 采用…

    数据库 2023年6月6日
    095
  • SQL优化

    一、插入优化 批量插入 insert into tb_name values (1,"张三"),(2,"张三"),(3,"张三&q…

    数据库 2023年5月24日
    071
  • [LeetCode]35. 搜索插入位置

    给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 你可以假设数组中无重复元素。 示例 1: 输入: [1,3…

    数据库 2023年6月9日
    077
  • Nginx基础入门篇(3)—返回状态码详解

    一般常见返回状态码 200 – 服务器成功返&a…

    数据库 2023年6月14日
    0172
  • 前端开发:如何正确地跨端

    导读:面对多种多样的跨端诉求,有哪些跨端方案?跨端的本质是什么?作为业务技术开发者,应该怎么做?本文分享阿里巴巴ICBU技术部在跨端开发上的一些思考,介绍了当前主流的跨端方案,以及…

    数据库 2023年6月14日
    083
  • Mysql_视图

    视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由…

    数据库 2023年6月11日
    075
  • python-django框架中使用docker和elasticsearch配合实现搜索功能

    注意:系统环境为Ubuntu18 一、docker安装 0:如果之前有安装过docker使用以下命令卸载: bash;gutter:true; sudo apt-get remov…

    数据库 2023年6月6日
    0198
  • 史上最全Mysql规范

    1 整体规约 1)【强制】数据库所有对象必须要有注释,包括:表、字段、索引等,并且要保持最新; 1)【强制】默认使用utf8字符集,无乱码风险,除一些需要存储特殊符号的字段,可以采…

    数据库 2023年6月14日
    062
  • RadonDB MySQL on K8s 2.1.2 发布!

    RadonDB MySQL on Kubernetes 于 2 月 17 日发布了新版本 2.1.2 。该版本在节点的重建、增删等方面进行了全面升级。致谢: 首先感谢 @andyl…

    数据库 2023年5月24日
    065
  • 图片防盗链

    如何避免别的网站直接通过本网站的url访问本网站资源 简单的防盗 我可以做到请求来的时候先看看当前请求是从哪个网站过来的如果是本网站那么正常访问如果是其他网站直接拒绝请求头里面有一…

    数据库 2023年6月14日
    071
  • NO.2 Windows桌面图标-间距参数调整

    遇到如下问题: 桌面图标自动排序后间隔过大,且如图二这种指向图标能看到图标之间的间隔虚框,此方法可调整虚框的水平和垂直距离,即调整图标之间的间距。 测试电脑: 华为 mateboo…

    数据库 2023年6月14日
    088
  • MYSQL–>SQL语法

    注:DDL(Data definition Language)数据库定义(比如说表,数据库)DML(Data Mainpulation Language)数据库 表的增删改查DQL…

    数据库 2023年5月24日
    0100
  • Liunx(CentOS)安装Nacos(单机启动,绑定Mysql)

    Liunx安装Nacos(单机启动,绑定Mysql) 一,准备安装包 github下载点 二,在/usr/local/目录下创建一个文件夹用于上传和解压Nacos cd /usr/…

    数据库 2023年6月11日
    062
  • MySQL 8 新特性之Clone Plugin

    Clone Plugin是MySQL 8.0.17引入的一个重大特性,为什么要实现这个特性呢?个人感觉,主要还是为Group Replication服务。在Group Replic…

    数据库 2023年6月11日
    0105
  • 新建Github仓库并上传本地代码

    按照Github的教程 Adding a local repository to GitHub using Git 1. 创建空的Github仓库 创建远程仓库 🔗 ,注意不要勾选…

    数据库 2023年6月14日
    0109
  • Java面向对象(上)

    Java面向对象(上) 一、面向对象的思想 1、面向过程: 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤逐一实现,使用的时候依次调用就可以了。 2、面向对象: 面向…

    数据库 2023年6月11日
    090
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球