一、
1.多表查询
格式1:
select 字段列表
from 表1 join 表2 on 表1.字段1=表2.字段1
where 查询条件

格式2:
select 字段列表
from 表1 join 表2 on 表1.字段1=表2.字段1
join 表3 on 表2.字段2=表3.字段2
where 查询条件

格式3:
select 字段列表
from 表1,表2
where 表1.字段1=表2.字段1 and 查询条件

二、子查询
说明:在查询条件中,可以使用另一个查询的结果作为条件的一部分;另一个查询的结果就是子查询。

格式:
select 字段列表
from 表1
where 字段 in/exist/比较运算符 (子查询)

参数说明:in(用于进行一个给定值是否在子查询结果集中的判断)
any/some:比较时,只要有满足条件的即可。
all:比较时,必须所有都满足条件。
exists:用于测试子查询的结果是否为空表,若不为空返回True。

例如:exists

select * from sell as a where exists(
select * from book as b where b.图书编号 = a.图书编号 and 图书类别="网页设计");

三、准备工作
1.获取到.sql源码
2.打开mysql的 workbench 窗口;登陆密码admin@user
3.复制源码的所有代码,粘贴到mysql窗口的查询中,并运行 (即可得到数据库)
4.刷新数据库列表,并在数据库名上双击 (目的:让数据库为当前数据库)

操作1:查找订购册数为7的图书信息
分析:用到两个表sell,book;共有的字段是图书编号;最后要的结果是图书信息;而条件是订购表的信息;
方法1:多表查询
select book.*
from sell join book on sell.图书编号 = book.图书编号
where sell.订购册数=7;

方法2:子查询

select * from book
where 图书编号 in (select 图书编号 from sell where 订购册数=7);

操作2:查找购买了除“网页程序设计”以外图书的会员信息
方法1:
步骤1:找到图书表中除“网页程序设计”外的图书编号

步骤2:通过找到的图书编号,在sell表中查找身份证号

步骤3:通过找到的身份证号,查找会员表的会员信息。

-- 步骤1:
select 图书编号 from book where 书名="网页程序设计";
-- 步骤2
select distinct 身份证号 from sell where 图书编号 not in(
select 图书编号 from book where 书名="网页程序设计");
-- 步骤3
select * from members where 身份证号 in(
select distinct 身份证号 from sell where 图书编号 not in(
select 图书编号 from book where 书名="网页程序设计"));

操作3:查询book表中所有比“网页设计”类图书价格都高的图书基本信息。

-- 步骤1:找到网页设计类图书的所有价格

-- 步骤2:找出比较以上价格都高的图书信息
select * from book where 单价>all(
select 单价 from book where 图书类别="网页设计");
-- 等价于
select * from book where 单价>(
select max(单价) from book where 图书类别="网页设计");

select * from book where 单价>any(
select 单价 from book where 图书类别="网页设计");
-- 等价于
select * from book where 单价>(
select min(单价) from book where 图书类别="网页设计");

练习:查询所有比会员“李华”订购的图书单价都高的订购信息。

select * from sell where 订购单价>all(
select 订购单价 from sell where 身份证号 in (
select 身份证号 from members where 会员姓名="李华"));

四、分类汇总和排序
1.分类汇总:按某列进行分类,并对每一类进行统计。
select
from
where
group by 列名 having 分组条件

例如:统计男生的人数;再统计女生的人数;

例如:统计不同性别的人数;

执行顺序:from----where----group by----having-----select---order by---limit

2.having条件:必须跟在group by后,是对分组结果的筛选。

3.order by 字段名 asc/desc:对查询结果进行排序。

4.limit n: 筛选前n个结果返回
limit m,n :筛选从第m个往后的n个

-- 1、limit关键字
select * from sell;

select * from sell limit 3;

select * from sell limit 3,4;

-- 2、order by关键字
select * from sell order by 身份证号;

select * from sell order by 身份证号,订购单价 desc;

-- 3、group by 关键字
-- 统计计算机类图书的单价平均值
select avg(单价) as 单价平均值 from book where 图书类别="计算机";

select avg(单价) as 单价平均值 from book where 图书类别="网页设计";
-- 统计每类图书的单价平均值
select 图书类别,avg(单价) as 单价平均值 from book group by 图书类别;

-- 统计每类图书的单价平均值 ,找出平均单价大于27的信息;
select 图书类别,avg(单价) as 单价平均值 from book group by 图书类别 having 单价平均值>27;

日行一善:

今天看到几个学校的学生在教学楼楼道抽烟(关键还有一个女生,虽然动作很帅),但这是公共场所。我就友情提醒,他们要到洗手间抽烟。娃们很礼貌的就去了。

日进一步:

今天上午的课,手机没有怎么玩,看了一会爬虫的书。

mysql的查询--子查询,order by,group by,having的更多相关文章

  1. oracle 基础SQL语句 多表查询 子查询 分页查询 合并查询 分组查询 group by having order by

    select语句学习 . 创建表 create table user(user varchar2(20), id int); . 查看执行某条命令花费的时间 set timing on: . 查看表的 ...

  2. MySQL里面的子查询

    一.子查询定义 定义: 子查询允许把一个查询嵌套在另一个查询当中. 子查询,又叫内部查询,相对于内部查询,包含内部查询的就称为外部查询. 子查询可以包含普通select可以包括的任何子句,比如:dis ...

  3. MySQL的查询,子查询,联结查询,联合查询

    MySQL的查询,子查询,联结查询,联合查询 一.mysql查询的五种子句where(条件查询).having(筛选).group by(分组).order by(排序).limit(限制结果数) 二 ...

  4. MYSQL 查询方法 统计查询 链接查询 子查询

    mysql表格查询方法: 查询: 1.简单查询 select * from Info --查所有数据select Code,Name from Info --查指定列的数据select Code as ...

  5. 【MySQL】02_子查询与多表查询

    子查询 指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从MySQL 4.1开始引入. SQL 中子查询的使用大大增强了 SELECT 查询的能力,因为很多时候查询需要从结果集中获取数据,或者 ...

  6. MySQL中IN子查询会导致无法使用索引

    今天看到一个博客园的一篇关于MySQL的IN子查询优化的案例,一开始感觉有点半信半疑(如果是换做在SQL Server中,这种情况是绝对不可能的,后面会做一个简单的测试.)随后动手按照他说的做了一个表 ...

  7. MySQL中in子查询会导致无法使用索引问题(转)

    MySQL的测试环境 测试表如下 create table test_table2 ( id int auto_increment primary key, pay_id int, pay_time ...

  8. mysql 数据操作 多表查询 子查询 介绍

    子查询就是: 把一条sql语句放在一个括号里,当做另外一条sql语句查询条件使用 拿到这个结果以后 当做下一个sql语句查询条件mysql 数据操作  子查询 #1:子查询是将一个查询语句嵌套在另一个 ...

  9. MySQL数据库:子查询的应用

    子查询 子查询是一种常用计算机语言SELECT-SQL语言中嵌套查询下层的程序模块.当一个查询是另一个查询的条件时,称之为子查询. # 子查询的用法 # 在字段 select (select cNam ...

  10. mysql关联、子查询索引优化

    1.驱动表:加索引不起作用,因为全表扫描.表1 left join 表2 ,此时表1是驱动表 被驱动表:给这个加索引.  关联查询  子查询时 尽量不使用not in 或者not exists 而是用 ...

随机推荐

  1. Jmeter-接口测试(二)

    鉴权码获取: 1.通过接口获取 appid secret  (第三方用户唯一凭证, 第三方用户唯一凭证秘钥) 2.登录之后自动生成 username,password 一.jmeter 接口关联 1. ...

  2. VS2019创建WebAPI,本地发布WebAPI

    一.创建WebAPI 1.打开VS2019->创建新项目 2.ASP.NET Web应用程序->下一步 3.注意:.NET Framework版本必须高于4.0以上 4.选择"W ...

  3. P2330 繁忙的都市

    题目描述 城市C是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决定对其中的道路进行改造.城市C的道路是这样分布的:城市中有n个交叉路口,有些交叉路口之间有道路相连,两个交叉路口之间最多有一条 ...

  4. 任意的形如 z = F(x,y)的曲面生成与显示---基于OpenGL Core Profile

    运行结果:   (圆锥面) (抛物面) (马鞍面) 其中的做法是:从顶部看上去就是一个平面网格.每个点的 z.x的位置都是程序细分出来的(指定起始.结束.步长).比较固定.但高度 y 的计算使用 用户 ...

  5. java map重写 转大写、转驼峰

    /** * @author admin * @Description * 转大写 */ public class HashMapUpper<V> extends HashMap<St ...

  6. 【随便翻翻】Steam Deck现在(基本上)不通过预订就能购买到

    根据Valve的消息,你不再需要通过预订来购买这家公司于今年早些时候发售的掌上游戏机Steam Deck.每个型号现在都应该可以购买到.在撰写本文时(2022年10月7日),Valve预计所有型号的交 ...

  7. C/C++ 数据结构使用数组实现队列的基本操作

    //使用数组实现队列 #include <iostream> #include <Windows.h> using namespace std; #define MAXSIZE ...

  8. MySQL视频学习 1-18小节

    地址:https://www.bilibili.com/video/av39807944/?p=16 1-15:撘环境.建表.数据类型(https://www.runoob.com/mysql/mys ...

  9. 关于前端JS的一些常用方法和知识

    关于前端数据存储目前只解释有三种:cookie.localStorage.sessionStorage cookie解释:只针对当前session(会话)有效,关闭标签页即失效使用: 1 var ck ...

  10. ASP.NET Core Web API 接口限流

    前言 ASP.NET Core Web API 接口限流.限制接口并发数量,我也不知道自己写的有没有问题,抛砖引玉.欢迎来喷! 需求 写了一个接口,参数可以传多个人员,也可以传单个人员,时间范围限制最 ...