SQL(1)

说明:
1、适用MySQL,其余DBMS语法会略有差异,具体操作参考对应手册。

2、由于篇幅限制,多表查询、子查询、窗口函数见后续笔记

3、在夜曲编程课程的基础上结合《SQL基础教程(第2版)》整理的笔记。

前者:一笔带过了不少细节。但总算建立了基本框架,知道都有啥。

后者:比较《SQL必知必会(第4版)》后选择了基础教程,主要在于整体排版阅读起来非常舒适;图表展示很清晰,尤其是提示了NULL值这点很受益(参见“聚合统计”一节)

但最推荐的还是宋红康老师的全套视频和讲义,边敲代码边对照讲义讲解很清晰;同一道题会展示多种查询方法,演绎式(问题式)和归纳式教学相结合,还融入了阿里开发要求;易错点等细节听视频时更有记忆点。【宋红康】MySQL数据库(mysql安装/基础/高级/优化)_哔哩哔哩_bilibili

#顺便唠一下挑选学习资料:

1、入门还是把基础学的扎实些,网上给出的重点框架更多是学完后对照看有无遗漏的。

2、选择一个老师的视频/一本教材先踏实跟下来,没有完美的资料,建立基本框架后再针对性查缺补漏。

3、资料选择标准:播放量/推荐量;视频、讲义完整,别人做的笔记;评论里多为关于课程内容本身的讨论的,确切指出课程优缺点的,往往不错;边敲代码边讲的(拒绝纯念PPT的!!!)

初步筛选后,挑某个章节,完整听下来不同老师的讲课风格,自然就做出更适合自己的选择了。

目录

基础查找

SQL子句书写顺序:

SQL子句执行顺序:

SELECT

WHERE

ORDER BY

LIMIT

聚合统计

聚合函数

COUNT计数函数

SUM(列名) 和AVG(列名)

MAX(列名)和MIN(列名)

业务——ROI

日期函数

 字符串函数

转换函数

算术函数

 分组与数据统计

 使用GROUP BY和聚合函数需要注意的要点:

 HAVING子句注意要点

 ORDER BY排序注意要点

  业务——RMF模型

业务——互联网流量分析

业务——互联网复购分析

MySQL运行环境

对Windows系统进行MYSQL安装

 如何用VScode操作MySQL

python与MySQL的交互

数据库——表格——数据

数据库的创建(CREATE)

表格的创建、增加、修改和删除(CREATE,ALTER,DROP)

 数据的插入、更新和修改(INSERT INTO……VALUES;UPDATE;DELETE;INSERT……SELECT)

数据库与SQL

数据库概要

 SQL语句种类:DDL(数据库和表)、DML(数据;90%)、DCL

SQL基本书写规则

 表的命名规则

数据类型

主键和外键的概念


基础查找

SQL子句书写顺序:

SELECT——FROM——JOIN——ON——WHERE——GROUP BY——HAVING——ORDER BY——LIMIT

命令结束用分号结尾。

SQL子句执行顺序:

FROM——ON——JOIN——WHERE——GROUP BY——HAVING——SELECT——DISTINCT——ORDER BY——LIMIT

# MySQL中,GROUP BY及之后的语句中可以使用SELECT语句中的别名。(不同DBMS有所差异,其他DBMS的判断标准:SELECT之后的语句可以使用SELECT语句中的别名,SELECT之前的语句如GROUP BY,HAVING不可以)

MySQL SQL语句书写顺序和执行顺序 - 楼兰胡杨 - 博客园

SELECT

1.查询的内容即为最终所要呈现的所有字段;多个字段用逗号隔开。

2.SELECT * 表示查询表格中的所有字段。

WHERE

相当于Python中的if条件,常见判断场景如下:

1.比较运算符

1)= 表等于,在SQL中可以用于对数值、时间、字符的比较;时间数据和字符数据要加引号;时间数据若只限定到"x年-x月-x日",SQL数据会默认为这一天的零点整。

# python:==表等于;=表赋值

2)<> 表不等于;!= 表不等于。

#python:!= 表不等于

2.缺失值表示无法提供有效数据

# 某行数据为空
WHERE phone_number IS NULL
# 某行数据不为空
WHERE phone_number IS NOT NULL

3.BETWEEN...AND...在两个范围之间;

...IN (a,b,c,d) 可筛选多个范围,表示 或。

多个条件的连接:1)AND 且;OR 并; NOT 非。2)可用小括号指定优先级(注意列中有NULL值的情况)

 4.关键字LIKE和通配符的搭配使用

% 表0到任意数量个常规字符;_ 表一个常规字符(写2个__就表示2个常规字符啦)

# 找11月份的订单
WHERE order_time LIKE '%-11-%'
# 找带买家秀的评论(即含图片)
WHERE text LIKE '%<img%'

ORDER BY

# ORDER BY 默认升序排列,写省略ASC;DESC为降序排列。
# 对于时间来说,数值从小到大为升序:2019年——2020年——2021年(ASC);
# 2021年——2020年——2019年(DESC)
ORDER BY total_price (ASC),order_time DESC

LIMIT

# 取前3位 
LIMIT 3 
# 跳过前3位再取10个数据,即第4位到13位的数据;注意不同于Python函数,不需要用小括号
LIMIT 3,10

DISTINCT:对某个字段去重。

聚合统计

聚合函数

聚合函数:对一组值进行计算,并返回单个值。

除COUNT(*)外,其余聚合函数会将NULL值排除在外。

所有聚合函数都可以用DISTINCT去重。

所有聚合函数都可以进行列与列之间的加减乘除运算。

COUNT计数函数

COUNT(*)  统计包含NULL的所有行数

COUNT(列名)  统计NULL以外的行数

COUNT(DISTINCT 列名)  统计去重后的行数

SUM(列名) 和AVG(列名)

都会删除NULL值再进行计算;

只适用于数值类型的列;

注意:

若8行数据中有2行NULL值,AVG()计算时分母为6;

也可将NULL值作为0计算,此时分母为8。

MAX(列名)和MIN(列名)

都会删除NULL值再进行计算;

几乎适用于所有类型的列。如时间类型date列:2020-1-1;2021-12-1;2022-1-5。此时MAX(date)=2022-1-5;如text列:C;B;A。此时MAX(text)=C.

图3-1  Product 表的内容_《SQL基础教程》

 

思考:订单数量要和平均数的计数口径一致吗?

业务——ROI

投资回报率ROI=产出/投入=销售收入/成本

ROI>1时,表示收益大于投入费用,可以继续投入。

ROI=1时,表示投入效果和收益持平,一般可以继续投入。

ROI<1时,除非有特殊用途,如烧钱扩大知名度,一般情况下会停止投入。

日期函数

# SQL的日期函数大部分依存于各自的DBMS,因此在不同的DBMS中语法略有差异,使用时建议查阅各个DBMS的官方手册。时间函数MySQL官方文档链接如下:

MySQL :: MySQL 5.7 Reference Manual :: 12.7 Date and Time Functions

CURRENT_DATE  当前日期2016-05-25

CURRENT_TIME  当前时间17:26:50.995+09

CURRENT_TIMESTAMP  当前日期和时间2016-04-25 18:31:03.704+09

# 以上3个函数没有参数,因此无需使用括号

EXTRACT(日期元素 from 日期)  截取日期元素,截取出“年”、“月”、“分”、“小时”、“秒”等。

DATE(日期表达式)  提取日期部分 

NOW()  当前日期和时间

TIMESTAMPDIFF(YEAR, 较远日期, 较近日期)  计算日期中的整数差

DATEDIFF(日期表达式1,日期表达式2)  日期之差

 DATE_ADD(日期表达式,INTERVAL 数字 DAY/YEAR)  增加时间间隔

DATE_SUB(日期表达式,INTERVAL 数字 DAY/YEAR)  减去时间间隔

 字符串函数

字符串函数官方文档如下:

MySQL :: MySQL 5.7 Reference Manual :: 12.8 String Functions and Operators

CONCAT(字符1,字符2,字符3……)  连接字符串函数

SUBSTR(对象字符串, 截取开始位置,截取的字符数)  截取字符串函数,顺序从1开始

LEFT(对象字符串,字符数)  左截取指定字符数

RIGHT(对象字符串,字

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值