邻桌为何一天就学完了SQL基础语法,数据分析必学的SQL,满满硬货

2023-11-07

因为开学原因,导致好久没有更新博客了,谁家大学生一周五天早八,
在这里插入图片描述

今天这篇分享数据库操作和 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 学习路线

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

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

在这里插入图片描述

3、下载安装 Navicat 软件

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

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

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

以后再次访问时,双击即可。
在这里插入图片描述

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

6、导入第 5 步中下载的数据表。
右击第 4 步中的“本地”,新建一个数据库 test1,双击打开新建的数据库(打开后颜色是绿色)。拖拽刚才下载的数据表文件(sqltest1.sql)到 test1 上面。

在这里插入图片描述

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

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

在这里插入图片描述

7、打开 sql 语法编辑器

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

在这里插入图片描述

8、边做边学

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

9、巩固练习

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

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

数据库表基础操作

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

1、CREATE TABLE(建表)

怎么着也得先建立表~

在这里插入图片描述

当你建表成功后,发现忘记添加主键,或者忘记添加外键,莫着急。使用以下咒语即可:
在这里插入图片描述

建好的表如下:
在这里插入图片描述

emp 表
在这里插入图片描述

orders 表

2、INSERT(插入)

向表中插入数据

在这里插入图片描述

在这里插入图片描述

插入数据后的 emp 表
在这里插入图片描述

插入数据后的 orders 表

在这里插入图片描述

3、UPDATE(更新)
在这里插入图片描述

4、DELETE(删除)

在这里插入图片描述

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

5、DISTINCT(去重)

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

distinct 关键字进行处理,用于返回唯一不同的值。

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

在这里插入图片描述

我见过有道 SQL 考题:请写出表中所有重复的 name 的所有数据。我当时没反应过来,直接就用了 distinct 关键字,后来就…

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 值不包括在计算中。

2、COUNT()**在这里插入图片描述

COUNT( ) 函数用于返回匹配指定条件的行数。
在这里插入图片描述3、MAX()

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

在这里插入图片描述

4、MIN()

MIN 函数返回的指定列的最小值,NULL 值不包括在计算中
在这里插入图片描述

5、SUM()

SUM 函数返回指定列的总数

**6、ROUND()**

ROUND 函数用于把数值字段舍入为指定的小数位数
在这里插入图片描述

round 函数需要的参数

在这里插入图片描述

7、FORMAT()

FORMAT 函数用于对字段的显示进行格式化
在这里插入图片描述

format 函数需要的参数

SQL 高级语句

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

1、LIMIT

在这里插入图片描述

2、LIKE

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

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

3、IN

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

在这里插入图片描述

4、JOIN

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

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

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

在这里插入图片描述

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

  • LEFT JOIN:就算右表中没有匹配,也从左表返回所有的行

  • RIGHT JOIN:即使左表没有匹配,也行右表返回所有的行

  • FULL JOIN:只要有一个表存在着匹配,就返回行

5、ALTER

穿插介绍一下 alter,前面的例子中已经包含了几种 alter 使用方法。
在这里插入图片描述

6、UNION

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

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

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

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

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

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

KEY 约束。

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

在这里插入图片描述

7、AUTO-INCREMENT(自增)

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

在这里插入图片描述

8、ORDER BY

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

排序的两种方式:

  • ASC:升序(从小到大)

  • DESC:降序(从大到小)
    举栗:

在这里插入图片描述

ASC 排序

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

9、GROUP BY

通常配合合计函数使用,根据一个或多个列对结果集进行分组。
在这里插入图片描述

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

10、HAVING

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

同样引用上面的 SQL 语句。

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

11、DEFAULT

DEFAULT 约束用于向列中插入默认值。
在这里插入图片描述

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

邻桌为何一天就学完了SQL基础语法,数据分析必学的SQL,满满硬货 的相关文章

  • 限制分页页数

    objConnect mysql connect localhost root or die mysql error objDB mysql select db Test strSQL SELECT FROM UserAddedRecord
  • 使用 Proc sql 和 Teradata 在 SAS 中编写高效查询

    编辑 这是一组更完整的代码 它准确地显示了下面的答案所发生的情况 libname output data files jeff let DateStart 01Jan2013 d let DateEnd 01Jun2013 d proc s
  • 司机和提供商之间的区别

    数据库中的驱动程序和提供程序有什么区别 有没有解释一下 不胜感激 样本 ADO NET driver for MySQL vs providerName System Data EntityClient 来自 MSDN 论坛 驱动程序是安装
  • 如何避免连接两个表时重复

    Student Table SID Name 1 A 2 B 3 C Marks Table id mark subject 1 50 physics 2 40 biology 1 50 chemistry 3 30 mathematics
  • 如何在审计触发器中使用system_user但仍使用连接池?

    我想做以下两件事 在我的数据库表上使用审计触发器来识别哪个用户更新了什么 使用连接池来提高性能 对于 1 我在数据库触发器中使用 system user 来识别进行更改的用户 但这阻止我执行需要通用连接字符串的 2 有没有一种方法可以让我充
  • SQL Server 2008 R2 内连接无法匹配 varchar 字段,因为它包含特殊字符

    我们正在将 Microsoft SQL Server 2008 R2 用于我们的经典 ASP 应用程序之一 我们有两张表 TableA TableB TableA有以下列 InstName varchar 1024 TableB有这些列 I
  • 根据最大值连接表

    这是我正在谈论的内容的一个简化示例 Table students exam results id name id student id score date 1 Jim 1 1 73 8 1 09 2 Joe 2 1 67 9 2 09 3
  • 如何为“%abc%”搜索创建文本索引?

    我想对查询进行索引x like abc 如果我有一个如下表 create table t data varchar 100 我想创建一个索引以便能够有效地执行以下操作 select from t where contains abc 和这个
  • MySQL 5:我的 GROUP BY 字段的顺序重要吗?

    Peeps 我的 MySQL 查询中有一些聚合 计算字段 我的 GROUP BY 子句是动态生成的 具体取决于用户在 Web 表单中选择的选项 很好奇 GROUP BY 子句中列出的字段顺序是否会对计算产生任何影响 例如 SUM AVERA
  • 查询获取每条记录的最小日期[重复]

    这个问题在这里已经有答案了 我想获取表中每条记录的最小日期 该表具有多个带有一个主键的日期条目 看看我的桌子 CaseNo Entry date ABC 001 2 12 13 ABC 002 2 09 13 ABC 001 1 01 13
  • 在内连接中重用 mysql 子查询

    我正在尝试优化查询 试图避免重复用 指示的查询 复杂查询 使用两次 结果相同 原始查询 SELECT news FROM news INNER JOIN SELECT myposter FROM SELECT COMPLEX QUERY U
  • 使用显式创建表语句与 select into 创建表

    使用显式创建表语句和加载数据与选择数据之间是否存在性能差异 此示例仅显示 2 列 但问题是针对使用非常大的表 下面的示例也使用临时表 尽管我也想知道使用常规表的效果 我认为无论表格类型如何 它们都是相同的 临时表场景 Explicitly
  • PL/SQL 过程:如何返回 select 语句?

    我想创建一个存储过程 on ORACLE数据库服务器我的问题是 我不知道如何返回 select 语句 这是程序中应包含的逻辑 输入参数 过滤器1 int 过滤器2 字符串 with cte as select val1 val2 stdde
  • 如何获取Postgres当前的可用磁盘空间?

    在开始在数据库中进行某些工作之前 我需要确保至少有 1Gb 的可用磁盘空间 我正在寻找这样的东西 select pg get free disk space 是否可以 我在文档中没有找到任何相关内容 PG 9 3 操作系统 Linux Wi
  • 我们可以使用sql列出MS Access数据库中的所有表吗?

    我们可以使用 sql 找到 ms access 中的所有表吗 就像我们在 sql server 中所做的那样 select from sys tables 在sqlite中 SELECT FROM sqlite master where t
  • 如何删除MySQL中的所有事件

    如果我想删除某个事件 我需要查询类似的内容 DROP EVENT IF EXISTS eventname 但我找不到一次性删除所有事件的命令 必须一项一项地删除 有没有一次性删除所有事件的SQL DROP EVENT IF EXISTS S
  • PostgreSQL WHERE 计数条件

    我在 PostgreSQL 中有以下查询 SELECT COUNT a log id AS overall count FROM Log as a License as b WHERE a license id 7 AND a licens
  • INTEGER 到 DATETIME 的转换与 VB6 不同

    我正在查看一些遗留的 VB6 代码 比我的时代早很多年 它对 SQL 2005 数据库运行查询 它提供了日期限制WHERE子句 其中日期作为整数值给出CLng VB6 中的日期 e g WHERE SomeDateField gt 4006
  • 索引在 NOT IN 或 <> 子句中起作用吗?

    我读过 至少 Oracle 数据库中的普通索引基本上是 B 树结构 因此存储处理适当根节点的记录 小于 根的记录被迭代地存储在树的左侧部分 而 大于 根的记录被存储在右侧部分 正是这种存储方法有助于通过树遍历实现更快的扫描 因为深度和广度都
  • Postgres 按查询分组

    我正在尝试在 postgres 的查询中使用 group by 我无法让它按照我想要的方式工作 以便根据需要对结果进行分组 这是另一个堆栈问题的扩展我刚刚回答过的递归查询 https stackoverflow com questions

随机推荐

  • SpringBoot日志

    application properties logging level com atguigu trace spring profiles active dev logging path 不指定路径在当前项目下生成springboot l
  • 启用springboot security后登录web页面需要用户名和密码之默认的用户名和密码

    问题 注意 本人使用的Spring Boot 2 0 2 对1 5 x系列未必有用 官方文档在这里 直接解决办法 0 移除spring boot starter security依赖 如果没有实际使用security的功能 可以直接移除sp
  • RHEL 7.3 根密码重置

    环境 win10 RedHat Enterprise Linux 7 2 目的 重置Root 用户密码 操作 1 界面选择首项 e 进入编辑界面 2 linuxefi vmlinuz 3 10 0 327 末尾UTF 8 后添加 rd br
  • JS:颜色的格式转换(rgb、十六进制)

    简介 偶尔需要转换颜色格式 然后使用 如rgb和十六进制之间的互相转换 具体实现 使用 import TzColorExchangeStyle from colorExchange js console log TzColorExchang
  • 搜狗双拼口诀

    今天给大家介绍一下搜狗双拼口诀 掌握搜狗双拼输入法的难点是将其26个韵母对应的字母键位记忆到脑海中 比如 自然码方案的ang韵母对应于H键 ao韵母对应于K键 如果你没记住对应关系 那么搜狗双拼输入也就无从谈起了 通过搜狗双拼口诀 你可以很
  • IDEA添加自定义浏览器

    比如添加搜狗浏览器 1 打开setting 2 Tools gt Web Browsers 点 添加浏览器 3 点击文件夹图标 修改浏览器路径 4 找到搜狗浏览器的exe文件 5 修改浏览器的名字 然后点ok 6 完成 运行直接点击图标即可
  • Windows下php和apache的安装及启动

    php版本 php5 6 httpd版本 apache2 4 php5 6 在D盘下创建php文件夹 并在其下解压压缩包 修改系统变量PATH 末尾新增 D php D php ext httpd2 4 在D盘下创建Apache24文件夹
  • 操作系统复习知识点(第三章)

    处理机调度 1 高级调度 中级调度 低级调度 高级调度 根据某种算法 把外存上处于后备队列中的那些作业调入内存 作业调度 中级调度 为了提高内存利用率和系统吞吐量 使那些暂时不能运行的进程不再占用内存资源 将它们调至外存等待 把进程状态改为
  • HDU--1233:还是畅通工程 (并查集 & 最小生成树Prim)

    1 题目源地址 http acm hdu edu cn showproblem php pid 1233 2 简单思路 先对村庄距离从小到大排序 然后使用并查集的查找 一边查找一边加上村庄之间的距离 从而得到可以走通所有村庄的最短距离 3
  • 根据年月日计算星期几的函数

    大部分日期计算正常 2014 04 01 星期2 计算出来的星期不正确 原因 计算出来的 w可能出现负值 求负数的余数需要特殊处理 需要按数论的计算方式求余数 网上很多代码存在此问题 少数日期计算不正确 解决 负数先转为正数求余 然后求补
  • Android源码编译环境搭建

    一 前言 Google自 2021 年 6 月 22 日起 不再支持在 MacOS 上进行Android平台开发 某些芯片厂家提供的Android SDK不支持低版本的Ubuntu 16 04 LTS及以下 故本篇文章以Ubuntu18 0
  • GNU AWK

    awk awk官方给出的是 pattern scanning and processing language即模式扫描处理语言 我们CentOS一般用的是GNU AWK 官方给出的语法有五种 我们只举例前两种使用格式 下面是语法 gawk
  • 使用java geotools进行坐标转换

    java geotools支持不同的坐标系之间进行转换 只需要转换的时候指定坐标系即可 pom依赖文件如下
  • 现在的00后,实在是太卷了

    现在的小年轻真的卷得过分了 前段时间我们公司来了个00年的 工作没两年 跳槽到我们公司起薪18K 都快接近我了 后来才知道人家是个卷王 从早干到晚就差搬张床到工位睡觉了 最近和他聊了一次天 原来这位小老弟家里条件不太好 一大家子指望他一个人
  • Vulnhub入门实战-Wakanda

    下载链接 描述 1 探测主机的IP地址 2 使用nmap查看靶机开放端口 开放了4个端口 老样子先从http下手 3 进去发现没什么可以点的 于是进行目录扫描 状态码都是200 但是size为0 所以返回的都是空页面 查看主页源代码 发现一
  • Scrapy----Scrapy架构及工作流程

    原文链接 Scrapy Scrapy架构及工作流程 一 Scrapy架构图 scrapy的架构图如下 红色箭头表示工作流程 二 Scrapy的组成 Scrapy Engine Scrapy Engine主要用来协调数据流在Scrap各个组件
  • [蓝桥杯][2014年第五届真题]兰顿蚂蚁

    题目 题目链接 题解 DFS 没什么难的吧 可能实现的时候用时长短 代码简洁程度不同而已 代码 include
  • 《响应式Web设计实践》学习笔记

    第1章 无处不在的Web 1 4 成为响应式的 Ethan Marcotte利用三种已有工具 媒介查询 media queries 流动布局 fluid grids 和自适应图片 scalable images 创建了一个在不同分辨率屏幕下
  • 每日一道基础编程题目(牛客网)--基础编程篇(NO.1)

    文章目录 1 每日一道基础编程题目 牛客网 前言 题目引入 结语 1 每日一道基础编程题目 牛客网 前言 从今天起 我会日更一些编程题目 比较基础的 适合期末复习的题目 分享给大家 和大家一起进步 题目引入 首先我们先看一下这个代码 这个的
  • 邻桌为何一天就学完了SQL基础语法,数据分析必学的SQL,满满硬货

    因为开学原因 导致好久没有更新博客了 谁家大学生一周五天早八 今天这篇分享数据库操作和 SQL SQL 全称是 Structured Query Language 翻译后就是结构化查询语言 是一种数据库查询和程序设计语言 用于存取数据以及查