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除法向上取整的实现方法

    Python除法向上取整的实现方法在进行编程的过程中,我们有时需要对除法结果进行向上取整的操作,而Python中的除法是向下取整的,这时就需要使用一些方法来实现除法的向上取整操作。本文将介绍Python中除法向上取整的实现方法。

    2024-08-04
    31
  • 用python编程试了试的简单介绍

    用python编程试了试的简单介绍了解 Python 编程基础

    2023-10-27
    137
  • 常见的mysql优化策略_Mysql调优

    常见的mysql优化策略_Mysql调优1.MySQL版本: (目前到8了) 5.x: 5.0-5.1:早期产品的延续,升级维护 5.4 – 5.x : MySQL整合了三方公司的新存储引擎 (推荐5.5),企业使用最多的是5.5 2.li

    2022-12-21
    144
  • Python:以简单的语法和强大的功能,驱动着人工智能、数据分析和科学计算等领域的高效开发

    Python:以简单的语法和强大的功能,驱动着人工智能、数据分析和科学计算等领域的高效开发Python是一门高级、面向对象的编程语言,既简单又易于学习。Python语言的设计哲学是“优雅”、“明确”、“简单”。Python自带了丰富的库和工具,使得Python在科学计算、数据分析、Web后端开发、自然语言处理、机器学习等各种领域得到广泛应用。特别是Python在人工智能、数据分析等领域被广泛应用。

    2023-12-04
    122
  • DM7 模式对象管理、DMSQL[亲测有效]

    DM7 模式对象管理、DMSQL[亲测有效] 模式对象管理 模式是所有对象的集合(表、视图、索引,序列,同义词,自增列)。DM在创建用户的时候,会默认的创建一个同名的模式。 表的管理 达梦支持那些表: 默认的表是索引组织表,支持堆表,临…

    2023-02-21
    158
  • 数据库笔记_数据库基础知识笔记

    数据库笔记_数据库基础知识笔记数据库: DDl: 创建语句 create,alter,drop等 DML: 更新数据 增删改 insert,delete,update DCL: 定义安全级别和创建用户 DQL: 用来查询 sele

    2023-03-20
    157
  • 使用Pycharm进行编程

    使用Pycharm进行编程Pycharm是由JetBrains公司开发的一款Python开发环境。它是专门为Python开发者打造的IDE,提供了丰富的工具和功能来加速开发过程。本文将从多个方面介绍使用Pycharm进行编程的优势和方法。

    2024-07-31
    34
  • Python 整除与取余操作全解析

    Python 整除与取余操作全解析Python 是一种解释性的高级编程语言,其简洁的代码和强大的工具库,使其成为工程师最受欢迎的语言之一。Python 提供了许多算术运算符以支持多种计算需求,其中包括整除和取余,这两个运算符的使用在计算机编程的各个领域非常普遍。

    2024-08-10
    32

发表回复

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