当前位置:首页 > 技术知识 > 正文内容

技术栈:《SQL必知必会》学习记录总结 1-5 课

maynowei10个月前 (09-11)技术知识96

前两年做 PM,每次拉数据都直接找开发,之前怕把数据库搞坏了。换了家公司,开启自力更生。

早上在地铁上,疯狂翻看《SQL必知必会》,其实看不太懂,一定要在 PC 端,边看边在数据库试验。

因为英文输入法、某个符号不知道怎么输入(" `) ,查询多次报错,幸好有 AI ,粘进去帮我改了,我再 copy 出来看看具体是哪里错了。

AI 还有一个不知疲倦的“逐词翻译”的功能,很好用,疯狂用。

奋发图强学习的原因还有一个原因是,昨天开发突然“水灵灵”地说没办法和我解释,我不懂业务也不懂代码怎么写…… 我剩下的就只有专业度,不带情绪地沟通技巧了 hhhhhhhhh 排除她胡说的成分,我的能力确实可以再精进。

系统学一下 SQL

初学者最佳打开模式 -- EXPLAIN

# 这是一条注释:先看单一表的表结构
EXPLAIN item

输出的内容是 item 表里面的列名

基本规则

database数据库table表column列row行primary key主键SQL专门用来与数据库沟通的语言syntax语法

检索 -- SELECT FROM

1、所需的列名写在 SELECT 关键字之后,FROM 关键字指出从哪个表中检索数据

SELECE item_id
FROM item

iten id
95,684
188,429
5,244,533
5,903,092

2、形式变换

# 检索
SELECT item_id,user_id,create_time,PID,URL
--查找多列
FROM item

SELECT*
--查找所有列
FROM item

SELECT*
-- 注释:学会加注释 英文下两个连字符,之后加空格
FROM item;
-- 注释

# 多行注释
/* SELECT item_id,user_id,create_time,PID,URL --查找多列
FROM item

SELECT * --查找所有列
FROM item*/


SELECT*
-- 注释:学会加注释 英文下两个连字符,之后加空格
FROM item;
-- 注释

排序 -- ORDER BY

ORDER BY 子句取一个或多个列的名字,据此对输出进行排序。

# 排序
SELECT item_id, user_id, PID, URL
FROM item
ORDERBY user_id
-- 按 user_id 排序

# 按多列排序
ORDERBY PID, user_id
-- 先按 PID 排序, 然后按 user_id 排序 ,能查出都买过同一pid商品的用户有哪些

# 按列位置排序
ORDERBY3, 2
-- 先按 PID 排序, 然后按 user_id 排序 ,用数字代表列

# 指定排序方向
SELECT item_id, user_id, PID, unit_price
FROM item
ORDERBY4desc
-- 先按 unit_price 排序,然后倒序,能查出 最高价商品

# 指定排序方向
SELECT item_id, user_id, PID, unit_price
FROM item
ORDERBY4desc ,2desc
-- 先按 unit_price 排序,然后倒序,能查出 最高价商品,user_id 默认降序排列,先看到新用户
limit 100

# 指定排序方向
SELECT item_id, user_id, PID, unit_price
FROM item
ORDERBY4desc ,2
-- 先按 unit_price 排序,然后倒序,能查出 最高价商品,user_id 默认升序排列 asc ,先看到老用户
limit 100


过滤 -- WHERE

where子句操作符说明=等于<>不等于!=不等于<=小于等于!<不小于>=大于等于!>不大于BETWEEN在指定的两个值之间IS NULL为空值

# 过滤
SELECT item_id, user_id, PID, unit_price
FROM item
WHERE user_id =2252365
ORDERBY4desc
--按照价格降序排列
limit 100

# 高级过滤数据
-- AND
SELECT item_id, user_id, PID, unit_price
FROM item
WHERE user_id =2252365AND unit_price <10000
-- 用户购买<1w日元的商品
ORDERBY4desc
limit 100

# 高级过滤数据据
-- or
SELECT item_id, user_id, PID, unit_price
FROM item
WHERE user_id =2252365or unit_price <10000
-- 用户购买>1w日元的商品
ORDERBY4desc
limit 100


# 高级过滤数据据 -- in
SELECT item_id, user_id, PID, unit_price
FROM item
WHERE user_id in (2252365 , 2226146)
-- 查两个用户购物记录
ORDERBY4desc
limit 100

# 高级过滤数据据
-- or
SELECT item_id, user_id, PID, unit_price
FROM item
WHERE user_id =2252365OR user_id =2226146
-- 查两个用户购物记录
ORDERBY4desc
limit 100

为什么要使用 IN 操作符?其优点如下。

  • 在有很多合法选项时,IN 操作符的语法更清楚,更直观。
  • 在与其他 AND 和 OR 操作符组合使用 IN 时,求值顺序更容易管理。
  • IN 操作符一般比一组 OR 操作符执行得更快(在上面这个合法选项很少的例子中,你看不出性能差异)。
  • IN 的最大优点是可以包含其他 SELECT 语句,能够更动态地建立 WHERE 子句。

# 使用 not in,数字用英文 () 即可
# 高级过滤数据据
-- not in
SELECT item_id, user_id, PID, unit_price
FROM item
WHERE user_id NOTIN (2252365,2226146)
-- 查除了这两个用户,其余所有用户的购物记录
ORDERBY4desc
limit 100


# 使用 <>,数字要用英文引号隔开
# 高级过滤数据据
-- <>
SELECT item_id, user_id, PID, unit_price
FROM item
WHERE user_id <> "2252365" "2226146"
-- 查除了这两个用户,其余所有用户的购物记录
ORDERBY4desc
limit 100

如果你看到很感兴趣,想看看我在数据库查到的数据,或者你在写的过程中,遇到什么问题,可以私信我,一起讨论~

相关文章

登录注册产品需求自检清单,你都写全了没?

来人人都是产品经理【起点学院】,BAT实战派产品总监手把手系统带你学产品、学运营。自己挖的坑一定要让别人给填好!一、登录(从PC端到移动端)移动端的登录沿袭了很多PC端的经验,但也有其独特的演变,我收...

[三菱PLC] 用&quot;C语言&quot;玩转PLC,三菱PLC使用ST语言超详细教程

ST语言,全称为结构化文本(Structured Text),是一种高级编程语言,专为工业自动化和控制系统设计。我们学习PLC一般是用梯形图,梯形图学会后,学习SFC,但是我发现梯形图和SFC虽然简单...

微软明年要停止SQL Server 2005的技术支持了

站长之家(Chinaz.com)12月28日消息据外媒消息称,微软将于明年停止为SQL Server 2005提供技术支持,即不再为其提供新的安全补丁、新功能、应用升级等服务。且表示在停止技术支持后,...

android培训学习的大纲(安卓app培训)

第一阶段android基础:1.基础javaJava概述,进制,数据类型,常量变量,运算符,表达式关系运算符,逻辑运算符,if语句,switch语句while循环,do...while循环,for循环...

Go语言进阶:时间轮(golang时间轮)

时间轮概念时间轮(Timing Wheel)是一种高效的定时任务调度数据结构,特别适合处理大量定时任务。它通过一个循环数组(轮盘)和多个槽位(buckets)来组织定时任务,每个槽位代表一个时间间隔。...

从 async/await 到虚拟线程:Python 并发的再思考

演进之路:从async/await到线程的反思首先必须明确的是,async/await对Python并非全无裨益:它最大的价值,是让更多人接触到了并发编程。通过在编程语言中嵌入语法元素,并发编程的门槛...