当前位置: 首页 > news >正文

零基础快速自学SQL,2天足矣。

此文是《10周入门数据分析》系列的第6篇。

想了解学习路线,可以先行阅读“ 学习计划 | 10周入门数据分析 ”


上一篇分享了数据库的基础知识,以及如何安装数据库,今天这篇分享数据库操作和SQL。

SQL全称是 Structured Query Language,翻译后就是结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

至于 ORACLE、DB2、Sybase、SQLServer、MySQL、MS Access等都是数据库,虽然语法上有差异,但是基本上都是大同小异。作为一名数据从业者,虽然市面上有很多很智能很自助的数据工具,甚至有的拖拖拽拽就能实现,但作为一名报表工程师、数据分析师,不懂一点SQL是绝逼不行的。

之前很多文章对于SQL都一笔带过,轻描带写,略忽视这项基本技能的重要性,所以今天就来讲讲如何学习SQL。

市面上都大量的书籍和教学视频,这里就帮大家提炼核心要点,给个学习方向。

本次的文章主要从以下几个方面进行说明,大家可以参考着学习。

  • SQL快速学习路线
  • 数据库表基础操作
  • SQL基础语句
  • SQL高级语句

SQL快速学习路线

零基础自学SQL时通常会遇到2个坑:

一坑:学习之前先安装数据库软件,可以是SQL Sever,也可以是MySQL。对于新人而言,安装数据库软件挺费时间,坑太多。我刚上大学那会要求2天内自学SQL,结果我花了1天时间安装SQL Sever。前一篇文章分享了MySQL的安装教程,刚开始学用不上太庞杂的功能,所以推荐小而美的MySQL,SQL Sever也是可以的。

二坑:一上来就背SQL语法。我看过太多新人在那边吭哧吭哧做笔记背SQL,个人不赞成这种学法,不实践记不住。就和Excel函数一样,理解含义和如何使用,关键时候去w3school查询一下就行了,以后用得多了自然就掌握了。(后台回复关键词“SQL”获得)

SQL学习路线

1、下载安装MySQL,或者安装软件phpstudy(这个软件自带了mysql数据库,而且安装启动方便)。

2、我这里用的是phpstudy,打开phpstudy后,点击下图中的启动,点击后数据库服务就会启动了。fc9114004d194282982973c7d8fbad4b.png

3、下载安装Navicat软件

这个软件可以轻松连接数据库,我们可以在这个软件中练习学习SQL语法

4、使用Navicat建立数据库连接

点击文件——新建连接,连接名随便填写,比如我写的是“本地”。主机名、端口都不需要修改,用户名和密码都是root(因为我们安装的phpstudy里的mysql默认用户名密码就是root),点击连接测试显示为成功后点确定保存。

以后再次访问时,双击即可。48ccab45f70e47c9a8511c090396e09f.png

 

5、下载习题进行学习,内含习题需要用到的数据表。

6、导入第5步中下载的数据表。(后台回复关键词“SQL”获得)

右击第4步中的“本地”,新建一个数据库test1,双击打开新建的数据库(打开后颜色是绿色)。

拖拽刚才下载的数据表文件(sqltest1.sql)到test1上面。


310c1f4c1900483aa979e445cebf2b5e.png

 

这时会出现上述弹窗,点击开始,等待导入完成后,点击关闭

在左侧空白处右击,选择“刷新”,即可看到刚才导入的数据表了。070ede7952c54e15bdbec03e116aec93.png

 

7、打开sql语法编辑器

如下图点击查询——新建查询,在空白处输入sql语法,点击运行,如果输入错误会有报错,输入正确则会返回查询内容。

0b48174650334611910d5afb6f0d3cb2.png

 

8、边做边学

打开第一部分习题,边做边学,通过查询w3c的sql语法手册完成

9、巩固练习

尝试不看sql语法手册,独立完成第二部分习题。

以上是sql的学习路径,接下来是sql语句的学习,掌握使用场景和含义,具体语法就不做解释了,大家参考w3c的sql语法手册学习。这里我归了下类,挑重点讲。

数据库表基础操作

首先数据库表必掌握的基础操作,建表、删表、往表里增数据、往表里删数据以及最重要的取数等等。

1、CREATE TABLE(建表)

怎么着也得先建立表~7cfc71bcdfa54828b4cc3ef939b717af.png

 当你建表成功后,发现忘记添加主键,或者忘记添加外键,莫着急。使用以下咒语即可:7bb10018ef444cc48b60baec364a2458.png

 建好的表如下:48bb3eaff42b4068b05972324424842a.png

06fdad1d211a4301a32249637613616a.png 

 

2、INSERT(插入)

向表中插入数据2255ce3c584842c3b018fac39c254690.png

7ca82758d2eb4e658e4620b852776d4f.png 

6758568d96d842a6bfd4a45f1489fc28.png 

488705afd498444aabfb0e9347ee3c9d.png 

 3、UPDATE(更新)d05139b2ec4f4d03bb0fe10f38574be4.png

4、DELETE(删除)96f9dff91b064efda40d1c63517686c3.png 

 

在使用delete删除emp表中数据时,要注意该表与其他表是否存在关联关系,比如:外键。emp表id是表orders的外键,如果要删除emp表中的id,得先删除orders表中的外键。

5、distinct(去重)

在表中,可能会包含重复值,这并不成问题。不过,有时你也许希望仅仅返回唯一不同的值。使用distinct关键字进行处理,用于返回唯一不同的值。

注意:distinct关键字是去重!去重!去重!*把列中的重复值去掉!

曾经我在笔试的时候,有道SQL考题:请写出表中所有重复的name的所有数据。我当时没反应过来,直接就用了distinct关键字,后来就....7da0e0cb0ef843a3aa686027564f0dff.png

f7d628b70ee24ff39e9018e97cd54758.png 

 

6、Select(取数)

SELECT 语句用于从表中选取数据,结果被存储在一个结果表中(称为结果集)。这是以后最常用的操作,占据你90%。

SQL SELECT 语法

SELECT 列名称 FROM 表名称

以及:

SELECT * FROM 表名称

比如需获取名为 "LastName" 和 "FirstName" 的列的内容(从名为 "Persons" 的数据库表),请使用类似这样的 SELECT 语句:

SELECT LastName,FirstName FROM Persons

SELECT通常结合其他函数和语法使用。

SQL基础语句

在实际的SQL使用中,肯定会涉及到有关函数的使用,这里简单介绍几种初学时必学的函数类型。

1、AVG()

AVG 函数返回数值列的平均值。NULL 值不包括在计算中。d5f59758f4ff48e0939b15e9a43afada.png

 

2、COUNT()

COUNT( ) 函数用于返回匹配指定条件的行数。84c79bfac6ae4646aca05a59ffcb1d91.png

 

3、MAX()

MAX函数返回指定列的最大值,NULL值不包括在计算中cadf4215d4654045b54d6a7c8746728e.png

 

4、MIN()

MIN函数返回的指定列的最小值,NULL值不包括在计算中b9ece28b34ad4e49aab1e831ae0b0a93.png

 

5、SUM()

SUM函数返回指定列的总数8742efeef509494789f71f8beaa0513d.png

 

6、ROUND()

ROUND 函数用于把数值字段舍入为指定的小数位数bfd459106919495aa7decf1751141020.png

                       round函数需要的参数

dd4770faeca54ef7bd14542db9acc281.png

 

7、FORMAT()

FORMAT 函数用于对字段的显示进行格式化


d90c5810e033481c86cd852e2ec1c72b.pngformat函数需要的参数

SQL高级语句

这一部分的内容是通常用到的,属于最开始学习SQL知识时必须要熟练的,我这里大致列出几项。

1、LIMITc10b3212debd4924b9928c5ece00b5d7.png

 

2、LIKE

一般配合where使用,搜索条件中的指定模式c6c3a7e78e974b468cdbaad63a9eaa35.png

 

在上面我们可以看到,通配符“%”的使用方法,所以通配符必须要配合like 运算符一块使用。

通配符还有以下几种:59cd60f0c28349f7b830af0dc113a03c.png

 

3、IN

从字面意思就可以知道它的作用是什么了757fea1a9bdb40aeb8a29ae9c7f8d1ed.png

4、JOIN

联表运算符JOIN,该运算符是用于将两个或者两个以上的表进行关联,并从这些表中查询数据。

对于联表来说,通过使用主键(primary key)和外键(foreign key)也可以建立连接。6e1d382a22734b64a58d3f3d8486c873.png

 除了上述直接使用条件关联,下面我们可以用可读性更高的INNER JOIN来写1886d2fc9c274d17ab7afe827272ff76.png

 

还有其他几种方连接方式(外连接):

  • LEFT JOIN:就算右表中没有匹配,也从左表返回所有的行
  • RIGHT JOIN:即使左表没有匹配,也行右表返回所有的行
  • FULL JOIN:只要有一个表存在着匹配,就返回行

5、ALTER

穿插介绍一下alter,前面的例子中已经包含了几种alter使用方法。308015c4cd804298bd72db16795b0054.png

 

6、UNION

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

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

上面引用的意思就是:道不同,不相为谋!

UNION和UNION ALL命令几乎是等效的,不过加了“ALL”,就会列出所有的值。786629c44d334bef887d4995a0f34b08.png

 注意:因为其也具有“唯一性”,容易和PRIMARY KEY混淆。面试或笔试常考两者的不同,在这里说明一下:

与PRIMARY KEY不同的是,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。

为表添加UNION,这里给出使用的SQL语法。

d78fde31df1a467bb153a092c3119de4.png 

 

7、AUTO-INCREMENT(自增)

在运用中,我们希望在每添加一条数据后,自动的为我们的主键创建值。20219437db674b618a21896e95ce0658.png

 

8、ORDER BY

在前面中已经使用到了有关order by的SQL语句,order by该语句用于对结果集进行排序,默认是进行ASC正序排序(从小到大)。

排序的两种方式:

  • ASC:升序(从小到大)
  • DESC:降序(从大到小)

举栗:4a4d0ecb585b4c47979df8ccea198ead.png

a7a845a544f94d07b63fb45ab2397cef.png 

                                 ASC排序

对于DESC排序,这里就不进行举例了,大家可以自己写SQL试一下。

9、GROUP BY

通常配合合计函数使用,根据一个或多个列对结果集进行分组。

 e0a03c636d634f52872f0ba12ede60bb.png

 

具体的用法在介绍函数时会涉及到。

10、HAVING

在上面的例子中,我们使用where关键字来增加查询条件,这里增加having字句是因为,where关键字无法与合计函数一起使用

同样引用上面的SQL语句。

具体的用法在介绍函数时会涉及到。

11、DEFAULT

DEFAULT约束用于向列中插入默认值。7ed3b6080e2f45079dc48e127f1db6bf.png

本次文章中写的相关知识点是我以前在学习中随手记录的,对一些SQL大牛来说,这些已经是耳熟能详了。会不会让你们产生一种灌水的错觉????哈哈~

此文是《10周入门数据分析》系列的第6篇。

 

相关文章:

零基础快速自学SQL,2天足矣。

此文是《10周入门数据分析》系列的第6篇。 想了解学习路线,可以先行阅读“ 学习计划 | 10周入门数据分析 ” 上一篇分享了数据库的基础知识,以及如何安装数据库,今天这篇分享数据库操作和SQL。 SQL全称是 Structured Query Language&#x…...

Meta开源数字水印Stable Signature,极大增强生成式AI安全

全球社交、科技巨头Meta(Facebook、Instagram等母公司)在官网宣布,开源数字水印产品Stable Signature,并公开论文。 据悉,Stable Signature是由Meta和INRIA(法国国家信息与自动化研究所)联合开…...

python实现分词器

在Python中实现分词有很多方法,具体取决于你的应用场景和数据。下面我会介绍一种常用的分词库——jieba。如果你的数据是英文,你也可以使用nltk库。 中文分词 使用jieba进行中文分词: 首先,你需要安装jieba库。如果还未安装&am…...

第五十二章 学习常用技能 - Global 映射

文章目录 第五十二章 学习常用技能定义数据库定义命名空间Global映射 第五十二章 学习常用技能 定义数据库 创建本地数据库: 登录管理门户。选择系统管理 > 配置 > 系统配置 > 本地数据库。选择创建新数据库以打开数据库向导。输入新数据库的以下信息&a…...

vue实现瀑布流

1、在 src 目录下创建 component文件夹&#xff0c;在文件夹中创建 vue文件。 2、在 Vue文件中写入以下内容 <div class"pubu"><div class"left"><div class"pubu-item" v-for"item in left" :key"item.id"…...

【虹科干货】Redis Enterprise 自动分层技术:大数据集高性能解决方案

越来越多的应用程序依赖于庞大的数据集合&#xff0c;而这些应用程序必须快速响应。借助自动分层&#xff0c;Redis Enterprise 7.2 帮助开发人员轻松创建超快的应用程序。何乐而不为&#xff1f; Redis将数据存储在内存中&#xff0c;因此应用程序能以最快的速度检索和处理数…...

代码随想录训练营二刷第五十四天 | 300.最长递增子序列 674. 最长连续递增序列 718. 最长重复子数组

代码随想录训练营二刷第五十四天 | 300.最长递增子序列 674. 最长连续递增序列 718. 最长重复子数组 一、300.最长递增子序列 题目链接&#xff1a;https://leetcode.cn/problems/longest-increasing-subsequence/ 思路&#xff1a;定义dp[i]表示从0到i的闭区间的最长子序列长…...

LeetCode 2562. 找出数组的串联值【数组,相向双指针】1259

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…...

SpringBoot使用的时间与空间计量单位

SpringBoot支持JDK8提供的时间与空间计量单位 //时间单位DurationUnit(ChronoUnit.MINUTES)private Duration serverTimeOut;//存储空间单位DataSizeUnit(DataUnit.MEGABYTES)private DataSize dataSize; 在springboot中的具体使用&#xff1a; Component Data ConfigurationPr…...

【使用 TensorFlow 2】02/3 使用 Lambda 层创建自定义激活函数

一、说明 TensorFlow 2发布已经接近2年时间&#xff0c;不仅继承了Keras快速上手和易于使用的特性&#xff0c;同时还扩展了原有Keras所不支持的分布式训练的特性。3大设计原则&#xff1a;简化概念&#xff0c;海纳百川&#xff0c;构建生态.这是本系列的第三部分&#xff0c;…...

docker--使用docker login 报错解决方案

我们在本地使用 docker login 命令登录时报错&#xff0c;可以尝试一下先 docker logout 命令退出登录后&#xff0c;在使用 docker login命令进行登录操作&#xff1b; docker logout...

leetcode oj

150. 逆波兰表达式求值 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;定义一个名为 Solution 的类&#xff0c;并在其中定义了一个名为 evalRPN 的公共函数。这个函数接受一个由字符串组成的向量 tokens 作为输入&#xff0c;并返回一个整数。 在代码中&#xff0…...

黑马点评-05缓存穿透问题及其解决方案,缓存空字符串或使用布隆过滤器

缓存穿透问题(缓存空) 缓存穿透的解决方案 缓存穿透(数据穿透缓存直击数据库): 缓存穿透是指客户端请求访问缓存中和数据库中都不存在的数据,此时缓存永远不会生效并且用户的请求都会打到数据库 数据库能够承载的并发不如Redis这么高&#xff0c;如果大量的请求同时访问这种…...

Flink之窗口聚合算子

1.窗口聚合算子 在Flink中窗口聚合算子主要分类两类 滚动聚合算子(增量聚合)全窗口聚合算子(全量聚合) 1.1 滚动聚合算子 滚动聚合算子一次只处理一条数据,通过算子中的累加器对聚合结果进行更新,当窗口触发时再从累加器中取结果数据,一般使用算子如下: aggregatemaxmaxBy…...

K8S:Rancher管理 Kubernetes 集群

文章目录 一.Rancher 简介1.Rancher概念2.Rancher 和 k8s 的区别 二.Rancher 安装及配置1.安装 rancher2.登录 Rancher 平台3.Rancher 管理已存在的 k8s 集群4.Rancher 部署监控系统5.使用 Rancher 仪表盘管理 k8s 集群 三.拓展1.Rancher和kubesphere相比较2.K3S和K8S相比较 一…...

后台运行python程序并查看运行的python 进程

nohup python -u Job.py > log.log 2>&1 &说明&#xff1a; 末尾的“&”&#xff1a;表示后台运行程序 “nohup” &#xff1a;保证程序不被挂起 “python”&#xff1a;是执行python代码的命令 “-u”&#xff1a;表示不启用缓存&#xff0c;实时输出打印…...

树莓派部署.net core网站程序

1、发布你的项目 使用mobaxterm上传程序 回到mobaxterm,f进入目录输入&#xff1a; cd webpublish 运行程序&#xff1a;dotnet WebApplication1.dll 访问地址为&#xff1a;http://localhost:5000,尝访问如下&#xff1a; 已经出现 返回的json&#xff0c;证明是可以访问的…...

淘宝商品评论数据接口,淘宝商品评论API接口

淘宝商品评论数据接口可以通过淘宝开放平台API获取。 通过构建合理的请求URL&#xff0c;可以向淘宝服务器发起HTTP请求&#xff0c;获取商品评论数据。接口返回的数据一般为JSON格式&#xff0c;包含了商品的各种评价信息。获取到商品评论数据后&#xff0c;可以对其进行处理…...

455. 分发饼干

假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i]&#xff0c;这是能让孩子们满足胃口的饼干的最小尺寸&#xff1b;并且每块饼干 j&#xff0c;都有一个尺寸 s[j] …...

GEE:数据预处理的细节(处理顺序。比如, select() 和 filter() 要优先于 map())

作者:CSDN @ _养乐多_ 大家在数据预处理的时候,是不是随意进行处理,并没有考虑 Google Earth Engine(GEE)性能的问题?比如选择数据集的时候,先执行map函数,再按时间选择数据?不同的处理顺序会导致不同的计算成本。 因此,本文将探讨如何在 GEE 中筛选和选择数据集合…...

label-studio的使用教程(导入本地路径)

文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马&#xff08;服务器方面的&#xff09;的原理&#xff0c;连接&#xff0c;以及各种木马及连接工具的分享 文件木马&#xff1a;https://w…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

省略号和可变参数模板

本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效&#xff0c;稳定&#xff0c;易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

Golang——7、包与接口详解

包与接口详解 1、Golang包详解1.1、Golang中包的定义和介绍1.2、Golang包管理工具go mod1.3、Golang中自定义包1.4、Golang中使用第三包1.5、init函数 2、接口详解2.1、接口的定义2.2、空接口2.3、类型断言2.4、结构体值接收者和指针接收者实现接口的区别2.5、一个结构体实现多…...