优秀的编程知识分享平台

网站首页 > 技术文章 正文

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

nanyue 2025-09-03 05:57:06 技术文章 10 ℃

前两年做 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

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

最近发表
标签列表