数据分析基础--SQL

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 我们在做数据分析的工作时,会用到大量的数据,而这些数据都来自于数据库,SQL可以让我们很方便的去访问和查询数据库。作为一个数据分析师,我们需要掌握一些SQL的核心技能

1.数据库

什么是数据库?

对于这个问题每个人都有自己的理解

数据库(Database):就是一个存储数据的仓库,其本身其实是一张张表格,每张表格间又通过一定的联系连接在一起,就这样组成了一个数据库。


可以这样理解

数据库中最基本的元素为表(table),每张表都有一个主键(用于对表的身份进行标识,主键具有唯一性),表中包含列和行,列为名称标签,行为记录具体数据。


在数据库中如何关联其他的表后面会讲到


选取主流的数据库

市场上主流的数据有MySQL、Oracle、SQL Server等,而MySQL 是一个开源的关系型的数据库管理系统,应用非常广泛,因而选择使用Mysql学习sql是个不错的选择。

mysql的安装与配置非常简单,我们从官网下载社区版本安装,windows用户可以选择安装MSI安装(Windows Installer),一直默认安装,到了数据库用户和密码设置时,设置即可。


选取MySQL的GUI工具

这样的工具有很多种,每个人都有自己的喜好,我用的是HeidiSQL

该工具操作简单方便这里不过多叙述使用方法


SQL的基本操作

创建数据库,含有一个简单的数据表,并进行C(创建)U(更新)R(读取,查询)D(删除)操作数据表

image.png

创建数据库

CREATE DATABASE 数据库名称

CREATE DATABASE STUDENTS

打开数据库

USE 数据库名称

USE STUDENTS

查看所有数据库

#查看所有数据库
SHOW DATABASES
#查看当前打开的数据库
SELECT DATABASE()

删除数据库

DROP DATABASES 数据库名称

DROP DATABASE STUDENTS

在数据库中创建数据表,根据具体数据类型,选择想用数据长度

CREATE TABLE tb1(
  ID INT(20) NOT NULL,
  姓名 varchar(20),
  性别 varchar(5)
      )
#查看数据表
SHOW TABLES FROM STUDENTS
#查看数据表结构
SHOW COLUMNS FROM STUDENTS

向表中写入记录

INSERT 表名称 (列1, 列2,...) VALUES (值1, 值2,....)

INSERT tb1(ID, 姓名, 性别) VALUES(1,'张三', '男');
INSERT tb1(ID, 姓名, 性别) VALUES(2,'李四', '女');
INSERT tb1(ID, 姓名, 性别) VALUES(3,'王五', '男');
INSERT tb1(ID, 姓名, 性别) VALUES(4,'赵六', '女');

删除记录的数据

DELETE FROM 表名 WHERE 列名称 = 某值

DELETE FROM tb1 WHERE 姓名 = '赵六' 

更新记录的数据

UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

UPDATE persons SET 性别 = '男' WHERE 姓名 ='赵六'

ALTER TABLE 语句用于在已有的表中添加、修改或删除列


2.SQL重点知识


我们在进行数据分析时,最常用的功能就是查询功能,所以首先我们要明确SQL中一些语句的执行顺序


select---from---where---groupby---having---orderby


一、基础知识

列出一些关键字


  • select.....from
  • where
  • group by --having
  • order by
  • like
  • distinct
  • 常用函数:sum,count, max, min,avg
  • case when then else end


select :选取数据,查看数据,指定返回的列 from: 需要从哪个数据表选取数据

select 列名称 from 表名称
select * from 表名称 #获取所有列

where : 设置条件筛选数据

WHERE 列 运算符 值

需要理解筛选的条件,合理利用运算符获取数据


group by:对指定的字段进行分组,产生汇总信息,一般结合sum,count函数使用。

select 字段1,字段2 from Table1  
GROUP BY 字段1,字段2

group by 使用中需要注意的问题


1,注意返回结果集的字段,,这些字段要么要包含在Group By语句的后面,作为分组的依据;要么就要被包含在聚合函数中

2,where 搜索条件在进行group by 分组操作之前应用,不能使用聚合函数

3, having 搜索条件在进行分组操作之后应用,可以使用聚合函数


order by : 根据指定的列对结果集进行排序, 默认按照升序,降序用desc

ORDER BY 字段1,字段2

like:模糊搜索,用于在 WHERE 子句中搜索列中的指定模式,结合“%”通配符使用

where column_namelike pattern

还可以用正则表达式来进行搜寻,REGEXP pattern(后续研究正则再详细减少)

distinct: 去重字段,需注意,只能放在select 语句首字段中

SELECT DISTINCT 列名称 FROM 表名称

sum:返回数值列的总数、 avg: 返回列的平均值、 count()返回表中的记录数

max():返回最大值、 min():返回最小值

二、连接(join)查询


  • 内连接
  • 外连接


内连接

等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。

不等值连接:在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。

自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。


多表内连接:将多张表连接在一起,只列出匹配的记录

FROM  表1 [INNER] JOIN 表2 ON〈联接条件〉

自连接(特殊的内 联 接): 将一张表,在逻辑上分为两张表,每张表取不同的别名来区别

FROM  表1 表名1 [INNER] JOIN 表1 表名2 ON〈联接条件〉

外连接

包括,左、右连接,返回所有的行

FROM  表1 LEFT JOIN 表2 ON〈连接条件〉

内联接 inner Join,找出两张表共有的字段;

左联接 left join,以 join 前面一张表为主,返回其所有行,如果与右表有相同的字段,全部返回,否则为空,右联接刚好与之相反。

全连接 Full join, 两张表全部返回

image.png

三、子查询

说白了就是嵌套查询,包含在某个查询中,如果子查询依赖于外部条件,则被称为相关子查询;

反之为非相关子查询

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7月前
|
SQL 存储 数据挖掘
大模型与数据分析:探索Text-to-SQL(下)
大模型与数据分析:探索Text-to-SQL(下)
795 3
|
7月前
|
SQL 自然语言处理 数据挖掘
大模型与数据分析:探索Text-to-SQL(上)
大模型与数据分析:探索Text-to-SQL(上)
3474 0
|
7月前
|
SQL 自然语言处理 数据挖掘
大模型与数据分析:探索Text-to-SQL(中)
大模型与数据分析:探索Text-to-SQL(中)
1201 0
|
7月前
|
SQL 分布式计算 数据可视化
Spark SQL案例【电商购买数据分析】
Spark SQL案例【电商购买数据分析】
|
29天前
|
SQL 数据挖掘 Python
数据分析编程:SQL,Python or SPL?
数据分析编程用什么,SQL、python or SPL?话不多说,直接上代码,对比明显,明眼人一看就明了:本案例涵盖五个数据分析任务:1) 计算用户会话次数;2) 球员连续得分分析;3) 连续三天活跃用户数统计;4) 新用户次日留存率计算;5) 股价涨跌幅分析。每个任务基于相应数据表进行处理和计算。
|
4月前
|
SQL 数据挖掘
7张图总结:SQL 数据分析常用语句!
7张图总结:SQL 数据分析常用语句!
|
4月前
|
前端开发 Java JSON
Struts 2携手AngularJS与React:探索企业级后端与现代前端框架的完美融合之道
【8月更文挑战第31天】随着Web应用复杂性的提升,前端技术日新月异。AngularJS和React作为主流前端框架,凭借强大的数据绑定和组件化能力,显著提升了开发动态及交互式Web应用的效率。同时,Struts 2 以其出色的性能和丰富的功能,成为众多Java开发者构建企业级应用的首选后端框架。本文探讨了如何将 Struts 2 与 AngularJS 和 React 整合,以充分发挥前后端各自优势,构建更强大、灵活的 Web 应用。
61 0
|
4月前
|
SQL 数据挖掘 关系型数据库
SQL中的聚合函数:数据分析的强大工具
【8月更文挑战第31天】
130 0
|
4月前
|
SQL 数据采集 算法
【电商数据分析利器】SQL实战项目大揭秘:手把手教你构建用户行为分析系统,从数据建模到精准营销的全方位指南!
【8月更文挑战第31天】随着电商行业的快速发展,用户行为分析的重要性日益凸显。本实战项目将指导你使用 SQL 构建电商平台用户行为分析系统,涵盖数据建模、采集、处理与分析等环节。文章详细介绍了数据库设计、测试数据插入及多种行为分析方法,如购买频次统计、商品销售排名、用户活跃时间段分析和留存率计算,帮助电商企业深入了解用户行为并优化业务策略。通过这些步骤,你将掌握利用 SQL 进行大数据分析的关键技术。
229 0
|
4月前
|
SQL 数据挖掘 Serverless
SQL 窗口函数简直太厉害啦!复杂数据分析的超强利器,带你轻松攻克数据难题,快来一探究竟!
【8月更文挑战第31天】在数据驱动时代,高效处理和分析大量数据至关重要。SQL窗口函数可对一组行操作并返回结果集,无需分组即可保留原始行信息。本文将介绍窗口函数的分类、应用场景及最佳实践,助您掌握这一强大工具。例如,在销售数据分析中,可使用窗口函数计算累计销售额和移动平均销售额,更好地理解业务趋势。
72 0