mysql的查询--子查询,order by,group by,having
一、
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的更多相关文章
- oracle 基础SQL语句 多表查询 子查询 分页查询 合并查询 分组查询 group by having order by
select语句学习 . 创建表 create table user(user varchar2(20), id int); . 查看执行某条命令花费的时间 set timing on: . 查看表的 ...
- MySQL里面的子查询
一.子查询定义 定义: 子查询允许把一个查询嵌套在另一个查询当中. 子查询,又叫内部查询,相对于内部查询,包含内部查询的就称为外部查询. 子查询可以包含普通select可以包括的任何子句,比如:dis ...
- MySQL的查询,子查询,联结查询,联合查询
MySQL的查询,子查询,联结查询,联合查询 一.mysql查询的五种子句where(条件查询).having(筛选).group by(分组).order by(排序).limit(限制结果数) 二 ...
- MYSQL 查询方法 统计查询 链接查询 子查询
mysql表格查询方法: 查询: 1.简单查询 select * from Info --查所有数据select Code,Name from Info --查指定列的数据select Code as ...
- 【MySQL】02_子查询与多表查询
子查询 指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从MySQL 4.1开始引入. SQL 中子查询的使用大大增强了 SELECT 查询的能力,因为很多时候查询需要从结果集中获取数据,或者 ...
- MySQL中IN子查询会导致无法使用索引
今天看到一个博客园的一篇关于MySQL的IN子查询优化的案例,一开始感觉有点半信半疑(如果是换做在SQL Server中,这种情况是绝对不可能的,后面会做一个简单的测试.)随后动手按照他说的做了一个表 ...
- MySQL中in子查询会导致无法使用索引问题(转)
MySQL的测试环境 测试表如下 create table test_table2 ( id int auto_increment primary key, pay_id int, pay_time ...
- mysql 数据操作 多表查询 子查询 介绍
子查询就是: 把一条sql语句放在一个括号里,当做另外一条sql语句查询条件使用 拿到这个结果以后 当做下一个sql语句查询条件mysql 数据操作 子查询 #1:子查询是将一个查询语句嵌套在另一个 ...
- MySQL数据库:子查询的应用
子查询 子查询是一种常用计算机语言SELECT-SQL语言中嵌套查询下层的程序模块.当一个查询是另一个查询的条件时,称之为子查询. # 子查询的用法 # 在字段 select (select cNam ...
- mysql关联、子查询索引优化
1.驱动表:加索引不起作用,因为全表扫描.表1 left join 表2 ,此时表1是驱动表 被驱动表:给这个加索引. 关联查询 子查询时 尽量不使用not in 或者not exists 而是用 ...
随机推荐
- expected expression before')'token
如上图所示,今天遇到的一个编译问题,明明用法跟其他地方的一摸一样,在主程序里编译就没问题,动态库里死活都编译不过去,可把我折磨死了,最后没办法,只能请教大佬,大佬过来几分钟就找到了问题,真正出错的地方 ...
- Winform多线程访问UI控件问题
Winform多线程无法访问UI控件,考虑使用委托方法解决.
- python 购物小程序
要求: 1.启动程序后,让用户输入预算,然后打印商品列表 2.允许用户根据商品编号购买商品 3.用户选择商品后,检测余额够不够,够就直接付款,不够就提醒 4.可随时退出,推出时打印已购买商品和余额 ...
- mysql_记录操作
在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括 使用INSERT实现数据的插入 UPDATE实现数据的更新 使用DELETE实现数据的删除 使用SELECT查询数据以及 ...
- 字典方法 setdefault()、pprint;迭代、递归的区别
计算一个字符串中每个字符出现的次数 import pprint message = 'It was a bright cold day in April, ' \ 'and the clocks we ...
- 量化交易基础-ICIR
IC - information coefficient r=1.5+a1+a2+...+a81 ai={-1,1}随机序列 ()收益序列 E(r)=1.5 期望 cov(r)=81 协方差 std( ...
- 10.14 2020 实验 7:OpenDaylight 实验——Python 中的 REST API 调用
一.实验目的 对 Python 调用 OpenDaylight 的 REST API 方法有初步了解. 二.实验任务 本实验需要用另一种方法完成上一个实验相同的功能,即通过 Python 程序 ...
- GreenPlum tidb 性能比较
主要的需求 针对大体量表的OLAP统计查询,需要找到一个稳定,高性能的大数据数据库,具体使用 数据可以实时的写入和查询,并发的tps不是很高 建立数据仓库,模式上主要采用星星模型.雪花模型,或者宽表 ...
- 入门级java开发环境的配置安装
为了能够在计算机上开发Java程序和运行Java程序,就需要在Windows操作系统上配置Java开发环境. 首先,安装JDK: 1.在Oracle官网上下载JavaSE: 2.在Download下载 ...
- Linux调用python文件的同时传参
创建python文件内容如下: 计算两个数相加并打印,需要传递两个参数 vi sum.py import sys def calc(a,b): c=a+b return c a1=int(float( ...