MySQL的数据查询功能

SQL查询的7个关键词——以链家二手房数据为例

在实际工作中,使用最多的就是数据库的查询功能了。在数据查询过程中,通常会用到以下7个核心关键词:

SELECT <select_list>
FROM <table_list>
[WHERE <where_condition>]
[GROUP BY <group_by_list>]
[HAVING <having_condition>]
[ORDER BY <order_by_list> ASC|DESC]
[LIMIT <limit_number>]

其中,SELECT和FROM两个关键词是必选项,也就是说,只要是数据查询功能,都需要使用这两个关键词,其他的5个关键词,可以根据查询的实际情况有针对性的选择和使用。

(1) SELECT

主要作用就是告诉数据库,在提取数据时需要选择的字段名称。这里的字段名称可以是数据表中已经有的名称,也可以是依据已有名称衍生出来的名称。需要注意的是如果要查看表中所有数据,只需要在SELECT后面直接写一个星号(*)即可;如果需要提取多个字段,在SELECT关键词后面逐一写出字段名称,并且字段名称之间需要用逗号(英文状态下)隔开。

(2) FROM

主要作用就是告诉数据库,在提取数据时需要选择的数据源(也就是表)名称。
通常来说SELECT和FROM两个关键词都是一起使用的。

# 选择指定的数据库
use test;
# 查看链家二手房所有数据
select * from sec_buildings;
# 查看链家二手房的小区名称、户型、面积、单价和总价;
select fname,ftype,size,price_unit,tot_amt from sec_buildings;
# 查看链家二手房的平均单价和平均总价
select avg(price_unit),avg(tot_amt) from sec_buildings;

(3) WHERE

主要作用就是限定数据查询的条件,也就是实现数据子集的提取。通常情况下,查询条件可以包含算术运算符、比较运算符、逻辑运算符、区间运算符和通配符。

# 选择指定的数据库
use test;
# 查看链家二手房所有数据
select * from sec_buildings;
# 查看链家二手房的小区名称、户型、面积、单价和总价;
select fname,ftype,size,price_unit,tot_amt from sec_buildings;
# 查看链家二手房的平均单价和平均总价
select avg(price_unit),avg(tot_amt) from sec_buildings;# 1.查询所有两室一厅的二手房信息
select * from sec_buildings where ftype="2室1厅";
# 2.查询2014年建的浦东、静安、闵行的二手房信息
select * from sec_buildings where built_date="2014年建" and region in ("浦东","静安","闵行");
# 3.查询闵行区房价在1000万以上的二手房名称、户型、面积、朝向和楼层
select fname,ftype,size,direction,floor from sec_buildings where region="闵行" and tot_amt>1000;
# 4.查询浦东新区面积在60-70平米的二手房名称、户型、面积和总价
select fname,ftype,size,tot_amt from sec_buildings where region="浦东" and size between 60 and 70; #前后都包含
# 5.查询浦东新区所有阳台朝南或者朝南北的二手房信息
select * from sec_buildings where region="浦东" and (direction="朝南" or direction="朝南北");
select * from sec_buildings where region="浦东" and direction in("朝南","朝南北");
#运算优先级 not and or
# 6.查询浦东新区阳台不是朝南的二手房信息
select * from sec_buildings where region="浦东" and direction!="朝南";
select * from sec_buildings where region = "浦东" and not direction="朝南";
# 7.查询小区名称中包含“新天地”字样的二手房信息
select * from sec_buildings where fname like "%新天地%";

(4)GROUP BY

主要用于统计时的分组操作,通常和聚合函数一起搭配使用。在SQL语法中,可以使用的聚合函数主要有以下5种:

select * from fruits;select count(*) from fruits;
select count(f_name) from fruits;
select count(s_id) from fruits;select distinct s_id from fruits;
select count(distinct s_id) from fruits;

group by 应用实例:

# 1.查询各个行政区域下二手房的数量、总的可居住面积、平均总价格、最大总价格和最小单价
select region,count(*) as counts,sum(size) as tot_size,avg(tot_amt) as avg_amt, max(tot_amt) as max_amt,min(price_unit) as min_price
from sec_buildings group by region;

需要注意的是,如果对多个字段进行分组统计,那么需要将所有字段都写到关键词group by后面,并以逗号(英文状态下)隔开。

# 2.查询各个行政区域下每年二手房的数量、总的可居住面积、平均总价格、最大总价格和最小单价
select region,built_date,count(*) as counts,sum(size) as tot_size,avg(tot_amt) as avg_amt, max(tot_amt) as max_amt,min(price_unit) as min_price from sec_buildings group by region,built_date;

这里尝试用SQL计算RFM模型中的R、F、M值。这里将Excel RFM案例中的order数据集导入到MySQL中,需要注意的是导入之前,需要对数据集做一些处理,否则导不成功:

  • 1.将数据集中所有中文列名改成英文
  • 2.将数据存储方式改成csv
  • 3.将数据编码方式改成utf-8
# 提取出RFM模型关键字段
select buyer_id,datediff("2017-06-01",max(payment_time)) as R,count(buyer_id) as F,avg(actual_amt) as M from orders
where payment_time between "2017-05-01 00:00:00" and "2017-05-31 23:59:59"
group by buyer_id;

MySQL中所有函数:https://www.runoob.com/mysql/mysql-functions.html

(5)HAVING

having关键词与where关键词的作用有一些相似

我们继续看链家二手房数据,现在的要求是按照地区、户型、楼层和阳台朝向分组统计静安区和浦东区二手房的平均单价和总数量,并筛选出平均单价超过100000元的记录:

# 按照地区、户型、楼层和阳台朝向分组统计静安区和浦东区二手房的平均单价和总数量,并筛选出平均单价 超过100000元的记录
select region,ftype,floor,direction, avg(price_unit) as avg_price,count(*) as counts from sec_buildings
where region in ("静安","浦东")
group by region,ftype,floor,direction
having avg_price > 100000;

(6)ORDER BY

用于查询结果的排序,排序过程中可以按照某个或者某些字段进行升序或者降序的排列。默认是按照升序方式排序,如果需要降序排列的话,需要在字段后面跟上一个关键词DESC。

# 按面积降序、总价升序的方式查询出所有2室1厅的二手房信息
select * from sec_buildings
where ftype = "2室1厅"
order by size desc,tot_amt; select * from sec_buildings
where ftype = "2室1厅"
order by tot_amt,size desc;

体会一下上面两个查询结果。
需要注意的是order by关键词后面的字段的顺序是有意义的,排在前面的优先级就比后面的要高。

(7)LIMIT

用于限定查询返回的记录行数,可以选择返回前几行,中间几行或者是末尾几行。需要注意的是这个关键词后面最多可以写两个整数型的值:

LIMIT n:表示返回查询结果的前n行
LIMIT m,n:表示从第m+1行开始,连续返回n行的数据

# 查询出建筑时间最悠久的5套二手房
select * from sec_buildings
order by built_date
limit 5; # 查询出建筑时间最新的6套二手房
select * from sec_buildings
order by built_date desc
limit 6; # 查询出浦东新区2013年建的二手房,并且总价排名在6-10
select * from sec_buildings
where region="浦东" and built_date = "2013年建"
order by tot_amt desc
limit 5,5;

以上,就是查询中常用的7个关键词,同时也是数据提取时要用到的最基本的关键词,同学们一定要掌握每个关键词的作用和语法。

MySQL——MySQL的数据查询功能相关推荐

  1. python连接MySQL并进行数据查询

    python连接MySQL并进行数据查询 #建立数据库的连接 mydb = mysql.connector.connect(host="0.0.0.0",user="ro ...

  2. PHP群发300万,mysql 300万数据查询500多秒如何优化

    mysql 300万数据查询500多秒怎么优化啊 本帖最后由 dz215136304 于 2013-08-15 11:33:52 编辑 linux下 mysql 300万数据查询500多秒怎么优化啊, ...

  3. 【MySQL练习】数据查询(02)-简易版

    ---------------------MYSQL练习题:数据查询(02)-简易版---------------------- 提供了数据查询进阶版练习题的各种目录文件,便于对照自己思索练习: 增强 ...

  4. Mysql数据库入门---数据查询常用方法(包含条件查询和排序查询)

    Mysql数据库入门-数据查询 Author:qyan.li Date:2022.2.21 文章目录 ``Mysql``数据库入门---数据查询 1. ``select``关键字 2.条件查询 3.排 ...

  5. Hive的JDBC连接和数据查询功能

    实验材料及说明 在Ubuntu系统的/学号(每个人之间的学号)/salesInfo目录下,有买家的购买记录文件Sales,该文件记录了买家的id,购买商品的id以及购买日期,文件为名为Sales.Sa ...

  6. MySQL中的数据查询

    文章目录 1 简单查询 1.1 查询所有字段数据 1.2 查询指定字段数据 1.3 DISTINCT查询 1.4 IN查询 1.5 BETWEEN AND查询 1.6 LIKE模糊查询 1.7 对查询 ...

  7. 用 canal 监控 binlog 并实现mysql定制同步数据的功能

    作者:何白白 cnblogs.com/hebaibai/p/10911899.html 业务背景 写任何工具都不能脱离实际业务的背景.开始这个项目的时候是因为现有的项目中数据分布太零碎,零零散散的分布 ...

  8. MySQL数据库之数据查询

    1.集函数查询 1.1 集合 在数学的概念中,指定的某些对象的全体称为一个集合.在MySQL中的集合是指查询结果中的全体记录. 1.2 函数 计算机中的函数是实现固定运算功能的一个程序段或子程序.计算 ...

  9. MySQL:DQL 数据查询语句盘点

    本篇内容包括:DQL 的简介.SELECT 语句.WHERE 条件语句.JOIN 连接查询(多表查询)和分组.过滤.排序.分页.子查询的使用. 一.DQL 简介 DQL(Data QueryLangu ...

最新文章

  1. 万字干货|逻辑回归最详尽解释
  2. Python 语言介绍
  3. Git 技术篇 - GitHub克隆私有仓库方法,新主机绑定并同步github私有库实例演示
  4. 第十九期:HTTPS虐我千百遍,我却待她如初恋!
  5. mysql filck_顺序全局id生成方案-flickr(转载)
  6. Python笔记:变量的作用域
  7. hihocoder 1465 : 后缀自动机五·重复旋律8(后缀自动机+最长公共子串)
  8. PG Vs MySQL ,到底谁更强?
  9. java流程控制图_Java流程控制结构
  10. php中怎么设置透明背景图片,css怎样设置背景透明
  11. 科学发明家特斯拉传记
  12. 微电子计算机是信息技术的,信息技术说第三十五说,计算机微电子技术
  13. python 0基础学习笔记6:OS模块、窗口控制、语言、内存修改
  14. 植物DNA甲基化专题 | nature:油棕Karma转座子表观遗传重要发现
  15. supermap javascript 点聚合
  16. vmware虚拟机 配置动态 静态 固态IP 三种模式: 桥接模式 nat模式和仅主机模式 Host-only模式
  17. 年已过,新的一年如何过?
  18. i59300h处理器能带动matlab,i5-9300h相当于什么层次 在做选择
  19. OSAL初始化流程分析
  20. Atom终端命令行插件

热门文章

  1. linux vnc的小黑点和鼠标不同步_vnc连接windows,推荐三款非常好用的vnc连接windows软件...
  2. java深度优先迷宫生成_通过深度优先搜索产生的迷宫的Java代码
  3. QMouseEvent
  4. mysql查询特定时间数据视频_mysql查询特定时间段内的数据
  5. vue 渲染函数处理slot_面试官:Vue 和 React 对于组件的更新粒度有什么区别?
  6. java master work_并发编程之Master-Worker模式
  7. 结构体指针struct stu *p;和结构体变量struct stu p;结构体为什么要用指针引用而不用变量引用
  8. 如何了解这个世界(社会)运行的本质
  9. C++ 重载运算符和重载函数(一)
  10. 列出5个python标准库_Python常用标准库使用(一)