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

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

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

今天这篇分享数据库操作和 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 大牛来说,这些已经是耳熟能详了。会不会让你们产生一种灌水的错觉????哈哈~

相关文章:

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

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

机器视觉工程师国内出差必备神器

1) 充电宝 ,现在手机太重要了。出门可以不带钱包,不带银行卡,但是一定会带手机,手机必须保证有电,方便沟通,遇到紧急情况也可以报打110。 2)洗漱包,每次出差都会手忙脚乱…...

ReentrantLock 源码解读

一、ReentrantLock ReentrantLock 是 java JUC 中的一个可重入锁,在上篇文章讲解 AQS 源码的时候提到 ReentrantLock 锁是基于 AQS 实现的,那是如何使用的 AQS 呢,本篇文章一起带大家看下 ReentrantLock 的源码。 在 AQS 中,如果…...

【算法】六大排序 插入排序 希尔排序 选择排序 堆排序 冒泡排序 快速排序

本章的所有代码可以访问这里 排序 一 一、排序的概念及其运用1.1排序的概念1.2 常见的排序算法二、常见排序算法的实现1、直接插入排序2、希尔排序3、选择排序4、堆排序5、冒泡排序6、快速排序6.1霍尔法6.2挖坑法6.3前后指针法7、快速排序非递归一、排序的概念及其运用 1.1排序…...

类和对象万字详解

目录 一、面向对象与面向过程的区别 面向过程: 面向对象: 二、类的引入 class与struct爱恨情仇 class的语法 类的定义: 类的限定访问符 类的实例化 类对象模型 this指针的应用 三、封装 四、类的六个默认成员函数 构造函数 再谈…...

如何使用码匠连接 CouchDB

目录 在码匠中集成 CouchDB 在码匠中使用 CouchDB 关于码匠 CouchDB 是一种开源的 NoSQL 数据库服务,它使用基于文档的数据模型来存储数据。CouchDB 的数据源提供了高度可扩展性、高可用性和分布式性质。它支持跨多个节点的数据同步和复制,可以在多个…...

MySQL对表操作

结束了上一章内容,我们对数据库的操作有一定的了解,本章内容就是针对表中的数据进行操作的。 针对表中数据的操作绝大部分都是增删改查(CRUD),CRUD也就是四个单词的缩写: 增加(Create)、查询(Retrieve)、…...

springboot3整合mybatis遇到的坑

本人不经常写java,本文仅作问题记录,如有问题请把不吝赐教。 坑1、Property sqlSessionFactory or sqlSessionTemplate are required Caused by: java.lang.IllegalArgumentException: Property sqlSessionFactory or sqlSessionTemplate are required…...

SpringBoot+Spring常用注解总结

1. SpringBootApplication 这里先单独拎出SpringBootApplication 注解说一下,虽然我们一般不会主动去使用它。 SpringBootApplication public class SpringSecurityJwtGuideApplication {public static void main(java.lang.String[] args) {SpringApplication.ru…...

优化UnRaid容器的WebUI端口设置实现应用快捷访问的方法

文章目录前言详细流程前言 自从入了UnRaid的坑,发现Docker真是个好东西,各种各样的应用工具层出不穷,可以大大提高生产效率。然而在安装Docker应用后,对于如何方便的访问该应用,各个应用服务提供者给出的解决方案不是…...

Android Framework-管理Activity和组件运行状态的系统进程—— ActivityManagerService(AMS)

ActivityManagerService(AMS)是Android提供的一个用于管理Activity(和其他组件)运行状态的系统进程 AMS功能概述 和WMS一样,AMS也是寄存于systemServer中的。它会在系统启动时,创建一个线程来循环处理客户…...

【C语言】结构体和共用体

目录一、结构体(一)结构体声明(二)结构体变量定义(三)结构体变量的初始化(四)结构体的引用(五)结构体数组二、共用体(一)共用体定义&a…...

微搭低代码从入门到实战

低代码从21年起开始成为热点,至今已经发展了两年多的时间。微搭作为腾讯云旗下的低码产品也历经多轮优化。 不同人选择低代码有不同的理由,有的是初创企业希望低代码来提升运营效率的。有的是传统企业,希望借助低代码来改造现有系统提供移动…...

AM5728(AM5708)开发实战之安装Debian 10桌面操作系统

一 环境搭建 准备一个SD卡启动卡,能够正常引导板卡启动,后续会把Debian 10镜像安装到SD卡ext4分区 准备两个U盘,一个格式化成fat32文件系统,另一个格式化成ext4文件系统 下载Debian 10镜像,镜像名字为debian-10.4.0-a…...

ip-guardip-guard如何通过准入网关对指定的服务器进行通讯加密保护?

1、准入网关在高级配置设置受保护服务器; WEB管理界面【系统工具】,点击【配置管理】,点击参数设置,进入高级配置界面,输入配置内容即可。 [ControlServer]...

JavaScript基础语法

目录 1.初识JavaScript 1.1背景知识 1.2JS的三种书写方式 行内式 内嵌式 外部式 2.语法简介 2.1变量的使用 变量创建方法 动态类型 2.2基本数据类型 2.3数组 js数组创建方式 遍历方式 添加元素:尾插 ​编辑删除元素:splice 2.4函数 格式 函数表达式 作用域…...

《SQL基础》17. InnoDB引擎

InnoDB引擎InnoDB引擎逻辑存储结构架构内存结构磁盘结构后台线程事务原理事务基础redo logundo logMVCC基本概念隐式字段undo log版本链readView原理分析InnoDB引擎 逻辑存储结构 InnoDB的逻辑存储结构如下图所示: 表空间 表空间是InnoDB存储引擎逻辑结构的最高层…...

api接口详解大全

api接口详解大全?优秀的设计是产品变得卓越的原因设计API意味着提供有效的接口,可以帮助API使用者更好地了解、使用和集成,同时帮助人们有效地维护它每个产品都需要使用手册,API也不例外在API领域,可以将设计视为服务器和客户端之…...

为什么要用VR全景?5个答案告诉你

看中了刚上市的一款新车,再也不用等车展、去4s店才能仔细观赏,点开手机就能“置身”车内近距离观看每一处细节,点击关灯开灯、关门关门,除了摸不到,和在现场几乎没有区别; 准备买房的时候,没人愿…...

常用的深度学习优化方式

全连接层 PyTorch中的全连接层(Fully Connected Layer)也被称为线性层(Linear Layer),是神经网络中最常用的一种层。全连接层将输入数据的每个元素与该层中的每个神经元相连接,输出结果是输入数据与该层的…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)

概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...

条件运算符

C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...

vulnyx Blogger writeup

信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

免费数学几何作图web平台

光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...