广告
返回顶部
首页 > 资讯 > 数据库 >如何快速上手SQL
  • 343
分享到

如何快速上手SQL

2024-04-02 19:04:59 343人浏览 独家记忆
摘要

这篇文章主要为大家展示了“如何快速上手sql”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何快速上手SQL”这篇文章吧。两张示例表为了方便练习SQL语法,特地

这篇文章主要为大家展示了“如何快速上手sql”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何快速上手SQL”这篇文章吧。

两张示例表


为了方便练习SQL语法,特地准备了两张Hive表,ide_test.flightside_test.airports, 表结构如下面的建表语句。另外两张表中各有数行测试数据,可以在练习SQL时直接使用。

Flights表

CREATE TABLE `ide_test.flights`(
  `year` string COMMENT 'year', 
  `month` string COMMENT 'month', 
  `day` string COMMENT 'day', 
  `dep_time` string COMMENT '起飞时间', 
  `crs_dep_time` string COMMENT '计划起飞时间', 
  `arr_time` string COMMENT '到达时间', 
  `crs_arr_time` string COMMENT '计划到达时间', 
  `carrier_code` string COMMENT '航空公司代号', 
  `flight_num` string COMMENT '航班号', 
  `actual_elapsed_time` string COMMENT '实际耗时', 
  `crs_elapsed_time` string COMMENT '计划耗时', 
  `air_time` string COMMENT '飞行时间', 
  `arr_delay` string COMMENT '到达延迟', 
  `dep_delay` string COMMENT '起飞延迟', 
  `origin` string COMMENT '起飞机场', 
  `dest` string COMMENT '目标机场', 
  `distance` string COMMENT '距离')
COMMENT '测试数据-航班信息'

Airports表

CREATE TABLE `ide_test.airports`(
  `name` string COMMENT 'name', 
  `country` string COMMENT 'country', 
  `area_code` string COMMENT 'area_code', 
  `code` string COMMENT 'code')
COMMENT '测试数据-机场信息'

SQL示例


简单select查询

使用select语句可以查看表里的数据

select用法

select name from ide_test.airports limit 5  --查询ide_test.airports表中的name列,返回5行
select * from ide_test.airports limit 5  --使用 '*'代表表中所有列

特别提示:限制SQL返回的行数是一个好习惯,如上面的 limit 5, 表示最多返回5行数据

资料: 深入理解Hive Select语法

使用where语句按条件筛选

使用where语句,可以根据指定的条件刷选数据,例如查看航班号为335的航班信息

where用法

select
    *   -- 返回表里所有列
from
    ide_test.flights
where
    flight_num= '335' --返回flight_num列为'335'的记录
limit 5

Tips: where后面跟的是一个逻辑表达式,多个逻辑表达式用 AND、OR来连接

使用distinct语句排重

某一列(或多列)时常会有重复的值,有时候需要去重之后再查看,可以使用distinct语句来完成这个功能。例如查看ide_test.flights表中包含了那几年的数据,可以使用下面的SQL语句来完成:

distinct 用法

select
    distinct year  -- distinct会对year列的值去重之后,再返回
from
    ide_test.flights
limit 10

Tips**:**查看某列包含了哪些值,有更好的写法,这里只是展示下distinct语句的用法

使用order by语句对查询结果排序

找出起飞时间最晚的5个航班

order by 用法

select
    origin, dest, flight_num, dep_time
from
    ide_test.flights
order by dep_time desc    -- 按照起飞时间倒序排列, desc表示由大到小排序, asc(或者是省略不写)表示由小到大排序 
limit 5

使用sum/count/avg计算总和/计数/平均值等

使用count()函数可以计数,比如要看一下ide_test.flights表里一共有多少个航班信息,则可以这么写:

count 用法

select
    count(flight_num) as cnt -- count函数表示计数
from
    ide_test.flights
limit 10

sum()表示按照指定的列求和,比如计算一下335号航班一共飞行了多少公里

sum 用法

select
    sum(cast(distance as int)) as total_distance --sum函数表示求和
from
    ide_test.flights
where
    flight_num = '335'
limit  10

Tips: count/sum这种函数叫聚合函数,还有其他聚合函数,比如avg/max/min分别用户求平均值、最大值和最小值

资料: 深入理解Hive函数

使用group by按照分组计算

group by语句的用处很大,它可以先对数据分组、然后再计算,看个例子就明白了。比如,要计算每个航班飞行的里程数,并按照总数由大到小取前10个,写法如下:

group by 用法

select
    flight_num, sum(distance) as total_distance --除了sum/count/avg/min/max这些聚合函数之外,明确写在select之后的列,必须同时出现在group by的后面
from
    ide_test.flights
group by flight_num  --按照航班号分组,对每一组的里程数求和
order by total_distance desc
limit  10

还有一种情况,查询总飞行里程数大于3000的航班号,这时having语句就排上用场了

having 语法

select
    flight_num --写在select之后的列,必须同时出现在group by的后面
from
    ide_test.flights
group by flight_num
having sum(distance) > 3000 --刷选出飞行总里程大于3000的航班
limit  5

小思考:为什么这种情况下要使用having来作为筛选条件,而不是使用where?

资料: 深入理解Hive Group by语法

子查询

要计算飞行总里程大于3000的航班数量,SQL可以这么写

子查询用法

select count(1) as cnt 
from
(
    select flight_num
    from  ide_test.flights
    group by flight_num
    having sum(distance) > 3000
) t

Tips: 子查询的用法和普通hive表是一样的,一般为了清晰,会使用括号’()’把子查询包含起来

资料:深入理解Hive 子查询

使用join从多张表中查询数据

假如,我们计划查询每个航班的飞行里程和起始机场名称,因为这两个信息分别存储在两张不同的hive表中,因此需要同时查询两张hive表才能得到结果,写法如下

join 用法

select
    p.flight_num, -- 从flights表取出航班号
    p.distance, --从flights表取出飞行里程
    q.name  --从airports表取出出发的机场名称
from
    ide_test.flights p
left join ide_test.airports q 
on p.origin = q.code
limit 10

Tips**:**

left join**:**左表关联右表,当坐标中存在某值而右表不存在时,则右表对应信息使用null代替

inner join**:**只有左表和右表都存在对应值的时候,才出现的结果中

right join**:**与left join相反

full outer join**:**当左表或右表不存在相应值时,使用null代替

注意:

如果A中有m条记录,B中有n条记录,A join B的时候,则最多会产生m\n*条记录,想想为什么?

资料

深入理解Hive Join语法

使用uNIOn all拼接多份数据

UNioN 语句符用于合并两个或多个 SELECT 语句的结果集。

选出飞行里程大于1000或小于100的航班,SQL写法如下:

注意:这里只是为了展示union用法,显然应该有更好的写法,自己思考下:)

union 用法

select flight_num
from ide_test.flights
where distance > 1000 
union 
select flight_num
from ide_test.flights
where distance < 100

Tips: 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同

资料:深入理解Hive Union语法

使用case when控制列输出

查询航班的飞行距离,按照距离分成“长、中、短”三个级别,可以借助case when语句来实现,示例写法:

case when 用法

select flight_num,
distance,
case when distance > 3000 then '长距离航班'
    when distance > 1000 then '中距离航班'
    else '近距离航班'
end as flight_level
from ide_test.flights
limit 10

以上是“如何快速上手SQL”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: 如何快速上手SQL

本文链接: https://www.lsjlt.com/news/62244.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何快速上手SQL
    这篇文章主要为大家展示了“如何快速上手SQL”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何快速上手SQL”这篇文章吧。两张示例表为了方便练习SQL语法,特地...
    99+
    2022-10-18
  • 如何快速上手GitHub
    这篇文章给大家分享的是有关如何快速上手GitHub的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。GitHub 是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名 Git...
    99+
    2023-06-27
  • 如何快速上手coLinux
    这篇文章给大家分享的是有关如何快速上手coLinux的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。colinux位是一款可以帮助用户创建虚拟系统的工具,通过该软件,您可以在电脑上运行Linux系统,支持在win中...
    99+
    2023-06-27
  • 如何快速上手Rollup
    本篇内容主要讲解“如何快速上手Rollup”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何快速上手Rollup”吧!什么是rollup?系统的了解rollup...
    99+
    2022-10-19
  • 如何快速上手Vue3
    这篇文章主要讲解了“如何快速上手Vue3”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何快速上手Vue3”吧!Vue2 与 Vue3 的对比对 TypeS...
    99+
    2022-10-19
  • 如何快速上手PostgreSQL
    本篇内容介绍了“如何快速上手PostgreSQL”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、安装首先,安装PostgreSQL客户端。...
    99+
    2023-06-27
  • 如何快速上手MMdnn
    这篇“如何快速上手MMdnn”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何快速上手MMdnn”文章吧。MMdnn 是微软...
    99+
    2023-06-27
  • 如何快速上手SaltStack
    这篇文章给大家分享的是有关如何快速上手SaltStack的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。SaltStack是一个服务器基础架构集中化管理平台,具备配置管理、远程执行、监控等功能,基于Python语言...
    99+
    2023-06-27
  • 如何快速上手Picasso
    这篇文章将为大家详细讲解有关如何快速上手Picasso,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Picasso是Square公司出品的一款非常优秀的开源图片加载库,是目前Android开发中超级流行的...
    99+
    2023-06-27
  • 如何快速上手MongoDB
    小编给大家分享一下如何快速上手MongoDB,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。...
    99+
    2023-06-27
  • GN快速上手
    文章目录 背景GN快速入门使用GN建立构建环境交叉编译添加tutorial目标BUILD.gn配置说明 使用config使用默认配置 使用参数了解GN构建过程查找依赖GN文件执行脚...
    99+
    2023-09-12
    linux harmonyos
  • Scrapy快速上手
    超详细官方教程解析 https://blog.csdn.net/fly_yr/article/details/51540269   实战过程: 创建一个Scrapy项目 定义提取的Item 编写爬取网站的 spider 并提取 Item...
    99+
    2023-01-31
    上手 快速 Scrapy
  • Linux中如何快速上手Samba
    这篇文章主要介绍了Linux中如何快速上手Samba,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,有服务...
    99+
    2023-06-27
  • 如何快速上手LINQ to XML
    如何快速上手LINQ to XML,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。操作XML的技术有很多种:1)DOM(Document O...
    99+
    2022-10-19
  • 如何快速上手python爬虫
    这篇“如何快速上手python爬虫”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“如何快速上手python爬虫”文章吧。“爬虫...
    99+
    2023-06-27
  • linux中如何快速上手cpustat
    小编给大家分享一下linux中如何快速上手cpustat,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!cpustat ,一个用于linux下,非常简单的CPU使用...
    99+
    2023-06-27
  • 带你快速上手Servlet
    目录一、Servlet与Tomcat的关系二、什么是Servlet三、Servlet的类结构四、ServletConfig类五、ServletContext类六、Servlet的生命...
    99+
    2022-11-12
  • OneFlow怎么快速上手
    本文小编为大家详细介绍“OneFlow怎么快速上手”,内容详细,步骤清晰,细节处理妥当,希望这篇“OneFlow怎么快速上手”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。安装 O...
    99+
    2022-10-19
  • Vue表单快速上手
    目录普通表单初始数据与自动校验与动态赋值发布表单普通表单 我们先可以创建一个普通的表单,我们知道的是表单是相对比较复杂的,antv被我们诟病为就是其表单,这个设计出来的理念就是和别的...
    99+
    2022-11-13
  • 怎么快速上手vue3
    这篇“怎么快速上手vue3”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么快速上手vue3”文章吧。全局 API 和应用 ...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作