2025.10.22学习记录

news/2025/10/22 20:04:59/文章来源:https://www.cnblogs.com/haoihaoiyyl/p/19158854

2025.10.22课程总结
本次学习聚焦 设计规范、查询技术、高级功能 三大模块,目标是掌握从表结构设计到复杂数据查询的全流程能力,为后续数据分析、系统开发奠定基础。

范式理论
核心观点:范式是电商数据结构化的基础,避免冗余与数据异常(如重复存储客户地址、产品分类)
三大范式对比(电商场景版):
范式 核心要求 反例(不规范) 正例(规范)
1NF 字段原子性 订单地址:“北京市朝阳区 XX 街道 123 号 - 收件人:张三” 收件地址:“北京市朝阳区 XX 街道 123 号”;收件人:“张三”
2NF 消除部分依赖 订单表主键(订单 ID + 产品 ID),字段 “产品名称”(仅依赖产品 ID) 拆分产品表(产品 ID→产品名称 + 单价)、订单表(订单 ID + 产品 ID→数量 + 金额)
3NF 消除传递依赖 客户表(客户 ID→会员等级→会员折扣) 客户表(客户 ID→会员等级 ID)、会员等级表(会员等级 ID→等级名称 + 折扣)

约束体系
核心观点:约束数据完整性(如避免无效订单、重复产品)
主键约束、外键约束、非空约束、唯一约束
eg:电商核心表结构(简化):
-- 客户表CREATE TABLE customer (
cust_id INT PRIMARY KEY, -- 主键约束
cust_name VARCHAR(50) NOT NULL, -- 非空约束
cust_level VARCHAR(20) NOT NULL, -- 非空约束(普通/银/金)
reg_date DATE NOT NULL -- 非空约束(注册日期));
-- 产品表CREATE TABLE product (
prod_id INT PRIMARY KEY, -- 主键约束
prod_name VARCHAR(100) NOT NULL UNIQUE, -- 非空+唯一约束
prod_price DECIMAL(10,2) NOT NULL, -- 非空约束(单价)
prod_category VARCHAR(30) NOT NULL -- 非空约束(分类:家电/数码/服饰));

基础查询语法
SELECT 字段1, 字段2 -- 提取需要的电商数据
FROM 表名 [别名] -- 指定电商表(客户/产品/订单)
WHERE 筛选条件 -- 筛选目标数据(如特定分类产品、特定会员订单)
GROUP BY 分组字段 -- 按维度分组(如产品分类、客户等级)
HAVING 分组筛选 -- 筛选分组结果(如订单金额≥1000的分类)
ORDER BY 排序字段 -- 结果排序(如产品单价降序)

eg:查询 “数码” 分类单价 1000-2000 元的产品,按单价升序
SELECT prod_name, prod_price, prod_category
FROM product
WHERE prod_category = '数码' AND prod_price BETWEEN 1000 AND 2000
ORDER BY prod_price ASC;

表连接查询
内连接:
eg:查询有订单的客户姓名、产品名称、订单金额
SELECT c.cust_name, p.prod_name, o.order_amount
FROM customer cINNER JOIN orders o ON c.cust_id = o.cust_id
INNER JOIN product p ON o.prod_id = p.prod_id;

左外连接:
eg:查询所有客户的订单情况(无订单显示 “无订单”)
SELECT
c.cust_name,
IF(o.order_id IS NULL, '无订单', CONCAT(p.prod_name, '-', o.order_amount, '元')) AS order_info
FROM customer c
LEFT JOIN orders o ON c.cust_id = o.cust_id
LEFT JOIN product p ON o.prod_id = p.prod_id;

自关联:
eg:查询购买过 “智能手表” 的客户还购买了哪些产品(同客户跨订单关联)
SELECT DISTINCT c.cust_name, p2.prod_name
FROM customer c
JOIN orders o1 ON c.cust_id = o1.cust_id
JOIN product p1 ON o1.prod_id = p1.prod_id
JOIN orders o2 ON c.cust_id = o2.cust_id
JOIN product p2 ON o2.prod_id = p2.prod_id
WHERE p1.prod_name = '智能手表' AND p2.prod_name != '智能手表';

子查询应用
核心逻辑:用子查询解决电商复杂查询需求(如基于特定条件筛选订单、产品)

两种常用子查询:

标量子查询(单行单列):
eg:查询订单金额高于平台平均订单金额的订单 ID、客户姓名
SELECT o.order_id, c.cust_name, o.order_amount
FROM orders o
JOIN customer c ON o.cust_id = c.cust_id
WHERE o.order_amount > (SELECT AVG(order_amount) FROM orders);

列子查询(多行单列):
eg:查询 “金” 等级客户的所有订单记录
SELECT o.order_id, p.prod_name, o.order_date
FROM orders o
JOIN product p ON o.prod_id = p.prod_id
WHERE o.cust_id IN (SELECT cust_id FROM customer WHERE cust_level = '金');

函数应用
核心价值:用函数快速处理电商数据(日期格式化、金额计算、字符串拼接)
常用函数:
日期函数:
eg:格式化订单日期为 “YYYY 年 MM 月 DD 日”,查询 2024 年 4 月的订单
SELECT
order_id,
DATE_FORMAT(order_date, '%Y年%m月%d日') AS formatted_date,
order_amount
FROM orders
WHERE YEAR(order_date) = 2024 AND MONTH(order_date) = 4;

字符串函数:
eg:拼接客户姓名和会员等级(如 “李明 - 银会员”)
SELECT CONCAT(cust_name, '-', cust_level, '会员') AS customer_info FROM customer;

聚合函数:
eg:统计每个产品分类的订单总金额、订单数
SELECT
p.prod_category,
SUM(o.order_amount) AS total_sales,
COUNT(o.order_id) AS order_count
FROM product p
JOIN orders o ON p.prod_id = o.prod_idGROUP BY p.prod_category;

事务与分组技巧
eg:电商事务应用:订单创建全流程(扣库存→创建订单→扣余额),保障原子性,事务逻辑如下:
START TRANSACTION; -- 开启事务
UPDATE product SET stock = stock - 1 WHERE prod_id = 2001; -- 扣库存
INSERT INTO orders (order_id, cust_id, prod_id, order_amount) VALUES (3005, 1001, 2001, 1299.00); -- 创建订单
UPDATE customer SET balance = balance - 1299.00 WHERE cust_id = 1001; -- 扣余额
COMMIT; -- 提交事务(全部成功)/ ROLLBACK; -- 回滚(任一环节失败)

事务 ACID 特性体现:
原子性:扣库存、创建订单、扣余额要么全成,要么全滚(避免库存扣了但订单未创建)
隔离性:并发创建订单时,互不干扰(避免超卖)

分组高级技巧:
eg:用 WITH ROLLUP 统计电商产品分类销售额及总计
SELECT
IFNULL(prod_category, '总销售额') AS category,
SUM(order_amount) AS total_sales
FROM product p
JOIN orders o ON p.prod_id = o.prod_id
GROUP BY p.prod_category WITH ROLLUP; -- 最后一行显示所有分类总销售额

知识点总结:
设计层:以电商场景为核心,用 “范式 + 约束” 保障数据质量(如避免无效订单、重复产品)
查询层:用 “连接 + 子查询” 挖掘电商数据价值(如客户购买行为、产品销售统计)
进阶层:用 “函数 + 事务” 解决电商实战问题(如订单流程保障、数据快速处理)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/943695.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeeCode_101对称二叉树

给你一个二叉树的根节点 root , 检查它是否轴对称。 示例 1:输入:root = [1,2,2,3,4,4,3] 输出:true class Solution { public:bool isSameTree(TreeNode* p, TreeNode* q){if(p == nullptr || q == nullptr){retu…

TRAE 设计团队如何玩转 Vibe Coding(上)|高美感页面生成篇

资料来源:火山引擎-开发者社区本内容分为上下两篇,主要和大家分享 TRAE 设计团队基于 TRAE 工具的 Vibe Coding 探索实践,包括三类场景的搭建和价值收益的案例,帮助设计师探索如何通过 Vibe Coding 放大设计价值 /…

详细介绍:观察者模式(Observer Pattern)定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。

详细介绍:观察者模式(Observer Pattern)定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。2025-10-22 19:58 tlnshuju 阅读(0) 评论(0) 收藏 举报pre …

LeeCode_226反转二叉树

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1:输入:root = [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] //法一: class Solution { public:TreeNode* invertTree(TreeNode* root){if(root =…

TRAE 设计团队如何玩转 Vibe Coding(下)|设计工具生成与提效篇

资料来源:火山引擎-开发者社区本内容分为上下两篇,主要和大家分享 TRAE 设计团队基于 TRAE 工具的 Vibe Coding 探索实践,包括三类场景的搭建和价值收益的案例,帮助设计师探索如何通过 Vibe Coding 放大设计价值 /…

衡量效率,质量,运维的效率指标

目录背景和价值一、效率类指标(一)开发效率(二)运维效率二、质量类指标(一)代码质量(二)产品质量(三)测试质量(四)运维质量参考资料 背景和价值 在IT团队中,衡量效率和质量的指标可从多个维度进行定义,以…

2025多校冲刺CSP模拟赛7 总结

比赛:2025多校冲刺CSP模拟赛7 日期:\(25.10.22\),场地:\(\text{accoder}\),排名:\(56/73\)! 估分:\(30+0+[80,100]+0=110\) 终分:\(30+0+80+0=110\) 应该得分:\(100+100+[80,100]+?=280\) 失分 比赛决策问题…

详细介绍:wpf之 Popup

详细介绍:wpf之 Popuppre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &quo…

? #4

100 + 60 + 50 + 100 = 310, Rank 1/6.怎么 swap(min(B,C),D) /wx2024暑期CSP-S&NOIP模拟赛第2套 链接:link 题解:link 的题解区 时间:4h (2025.10.22 14:00~18:00) 题目数:4 难度:A B C D\(\color{#F39C11} …

结对项目-生成四则运算

这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/Class34Grade23ComputerScience/这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/Class34Grade23ComputerScience/homework/13479姓名 学号 GitHu…

CSS3 超实用属性:pointer-events (可穿透图层的鼠标事件)

🧑‍💻 写在开头 点赞 + 收藏 === 学会🤣🤣🤣 CSS3 pointer-events 属性:实现可穿透图层的鼠标事件 在网页开发中,我们通常会遇到多个元素重叠的情况。在这种情况下,如何使得被遮挡的元素仍然能够响应鼠标…

C++开源库使用:nlohmann/json - 指南

C++开源库使用:nlohmann/json - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mona…

实用指南:JAVA学习-预科部分(路线、博客、预备基础)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【比赛记录】2025CSP+NOIP 冲刺模拟赛合集Ⅱ

2025CSP-S模拟赛65(HZOJ CSP-S模拟37)A B C D Sum Rank100 40 15 - 155 7/12HZOJ 上也有这场比赛,但我没看见。放过去大概是个 14/24 左右吧。 A. gcd&xor (gcdxor) 首先打表,发现对于所有合法的 \((x,y)\),都…

取证-windbg和dmp,以及文件分析基本流程

.dmp文件及Dump Flie,是一种内存快照文件 说到内存快照就不得不提一下文件类型 说明 常见用途.raw 原始磁盘映像文件(Raw Image),完整保存磁盘或内存的原始二进制数据。 虚拟机快照、数字取证、系统备份。.dmp 内存…

20232422 2025-2026-1 《网络与系统攻防技术》实验二实验报告

后门原理与实践 1.1实验内容 这次的实验主要练了几种获取主机操作权限和收集信息的方法。先是用netcat配合Linux的cron定时任务,还有socat搭配系统任务计划,分别搞到了主机的操作Shell,拿到了控制主机的入口。然后用…

羊驼二次免疫的六大风险:纳米抗体制备不可忽视的 “隐形陷阱”

随着纳米抗体在肿瘤治疗、病原体检测、工业酶固定化等领域的应用拓展,对羊驼免疫及 VHH 筛选的需求持续攀升。羊驼因饲养、运输、免疫成本显著高于小鼠、兔子,市场上逐渐出现 “二次免疫” 操作 —— 即利用已免疫过…

完整教程:C++项目:仿muduo库高并发服务器-------connection模块

完整教程:C++项目:仿muduo库高并发服务器-------connection模块pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "…

营销数字化专家要求

目录背景和价值高级营销数字化专家(整合营销)职位描述任职要求参考资料 背景和价值高级营销数字化专家(整合营销) 深圳市 | 产品及解决方案类 职位描述营销数字化转型规划:对整合营销端到端流程,KOL营销、社媒营…