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

news2024/12/23 0:03:24

此文是《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篇。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1074054.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是Web组件(Web Components)?它们的主要部分有哪些?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

深度学习笔记之优化算法(五)AdaGrad算法的简单认识

机器学习笔记之优化算法——AdaGrad算法的简单认识 引言回顾:动量法与Nesterov动量法优化学习率的合理性AdaGrad算法的简单认识AdaGrad的算法过程描述 引言 上一节对 Nesterov \text{Nesterov} Nesterov动量法进行了简单认识,本节将介绍 AdaGrad \text{…

华为云云耀云服务器L实例评测|测试CentOS的网络配置和访问控制

目录 引言 1 理解几个基础概念 2 配置VPC、子网以及路由表 3 配置安全组策略和访问控制规则 3.1 安全组策略和访问控制简介 3.2 配置安全组策略 3.3 安全组的最佳实践 结论 引言 在云计算时代,网络配置和访问控制是确保您的CentOS虚拟机在云环境中安全运行的…

每个前端都要学的【前端自动化部署】,Devops,CI/CD

原文发布于:2023-09-21 11:50 作者:65岁退休Coder 原文链接:https://juejin.cn/post/7102360505313918983 DevOps 当我们提到 Jenkins,大家首先想到的概念就是 CI/CD,在这之前我们应该再了解一个概念。 DevOps&#…

3.springcloudalibaba gateway项目搭建

文章目录 前言一、搭建gateway项目1.1 pom配置1.2 新增配置如下 二、新增server服务2.1 pom配置2.2新增测试接口如下 三、测试验证3.1 分别启动两个服务,查看nacos是否注册成功3.2 测试 总结 前言 前面已经完成了springcloudalibaba项目搭建,接下来搭建…

js 之让人迷惑的闭包

文章目录 一、闭包是什么? 🤦‍♂️二、闭包 😎三、使用场景 😁四、使用场景(2) 😁五、闭包的原理六、思考总结一、 更深层次了解闭包,分析以下代码执行过程二、闭包三、闭包定义四、…

每日一题 2578. 最小和分割(简单,模拟)

思路: 拆分 num 的每一位数字,将他们排序。最大的两个放在个位,其次两个放十位,以此类推。注意并不需要重新组合出 num1 和 num2 ,他只要和即可。优化,可以不使用排序,因为只有 0 到 9 一共十个…

【Hello Algorithm】暴力递归到动态规划(一)

暴力递归到动态规划(一) 斐波那契数列的动态规划机器人走路初级递归初级动态规划动态规划 先后选牌问题初级递归初级动态规划动态规划 我们可以一句话总结下动态规划 动态规划本质是一种以空间换时间的行为 如果你发现有重复调用的过程 在经过一次之后把…

jmeter怎样的脚本设计才能降低资源使用

官网地址:Apache JMeter - Users Manual: Best Practices 1、用好断言 频繁的使用断言会加大资源的消耗,尽可能减少断言的使用,或者在使用的过程中断言数据文本尽量精简 2、使用命令执行 启动的时候就提示我们在执行压测的时候应该用命令执…

自动化测试框架有哪些?怎么选?今天我来告诉你

前言 随着软件开发过程中的复杂度不断提高,自动化测试成为了一个必要的手段。Python作为一种灵活易用的编程语言,已经成为自动化测试领域的一种主流工具。Python自动化测试框架可以使得我们更加方便地进行测试脚本的编写和执行,同时也可以提…

【力扣】2. 两数相加

题目描述 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外,这两个数都…

Centos指令合集

2023-10-09 防火墙 开启 systemctl start firewalld自启动 systemctl enable firewalld.service关闭 systemctl stop firewalld禁用 systemctl disable firewalld.service查看状态 systemctl status firewalld

OpenCV4(C++)—— 仿射变换、透射变换和极坐标变换

文章目录 一、仿射变换1. getRotationMatrix2D()2. warpAffine() 二、透射变换三、极坐标变换 一、仿射变换 在OpenCV中没有专门用于图像旋转的函数,而是通过图像的仿射变换实现图像的旋转。实现图像的旋转首先需要确定旋转角度和旋转中心,之后确定旋转…

Windows10打开应用总是会弹出提示窗口的解决方法

用户们在Windows10电脑中打开应用程序,遇到了总是会弹出提示窗口的烦人问题。这样的情况会干扰到用户的正常操作,给用户带来不好的操作体验,接下来小编给大家详细介绍关闭这个提示窗口的方法,让大家可以在Windows10电脑中舒心操作…

Java Agent初探

1:Java Agent简介 Java Agent 这个技术出现在 JDK1.5 之后,对于大多数人来说都比较陌生,但是多多少少又接触过,实际上,我们平时用的很多工具,都是基于 Java Agent 实现的,例如常见的热部署 JRe…

电脑中的opencl.dll丢失怎么办,三步解决opencl.dll丢失

最近有不少用户都遇到了opencl.dll丢失的情况,其实解决opencl.dll丢失的办法很简单,今天就来教大家如何用三步解决opencl.dll丢失的问题。 一.了解opencl.dll opencl.dll是OpenCL的动态链接库文件。OpenCL(Open Computing Language&#xff…

上班第一天同事让我下载个小乌龟,我就去百度小乌龟。。。。

记得那会儿是刚毕业,去上班第一天,管我的那个上级说让我下载个小乌龟,等下把代码拉一下,我那是一脸懵逼啊,我在学校只学过git啊,然后开始磨磨蹭蹭吭吭哧哧的不知所措,之后我想也许百度能救我&am…

华为云云耀云服务器L实例评测 | 实例使用教学之高级使用:配置 Git SSH Key 进行自动识别拉代码

华为云云耀云服务器L实例评测 | 实例使用教学之高级使用:配置 Git SSH Key 进行自动识别拉代码 介绍华为云云耀云服务器 华为云云耀云服务器 (目前已经全新升级为 华为云云耀云服务器L实例) 华为云云耀云服务器是什么华为云云耀云…

05-进程控制

1. 学习目标 了解进程相关的概念掌握fork/getpid/getppid函数的使用熟练掌握ps/kill命令的使用熟练掌握execl/execlp函数的使用说出什么是孤儿进程什么是僵尸进程熟练掌握wait函数的使用熟练掌握waitpid函数的使用 2 进程相关概念 2.1 程序和进程 程序,是指编译好…

mysql数据库root密码忘记了,这里有一个简单的方法可以解决

mysql安装久了,就容易忘记root密码,那么下面这个找回密码的方法将解决你的问题: 特别注意事项: 本方法只适合mysql数据库密码遗忘(忘记了) 这个解决方案的前提是你的电脑里安装了navicat(其他…