<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>子查询 on 老张开工了</title>
    <link>/%E5%AD%90%E6%9F%A5%E8%AF%A2/</link>
    <description>Recent content in 子查询 on 老张开工了</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <lastBuildDate>Sun, 09 Feb 2025 10:00:00 +0800</lastBuildDate>
    <atom:link href="/%E5%AD%90%E6%9F%A5%E8%AF%A2/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>JOIN 与子查询</title>
      <link>/posts/2025/02/join-and-subquery/</link>
      <pubDate>Sun, 09 Feb 2025 10:00:00 +0800</pubDate>
      <guid>/posts/2025/02/join-and-subquery/</guid>
      <description>真实世界的数据很少只存在于一张表中。JOIN 和多表关联是 SQL 最核心的能力之一。&#xA;创建练习数据集 -- 客户表 CREATE TABLE customers ( customer_id SERIAL PRIMARY KEY, name VARCHAR(100) NOT NULL, city VARCHAR(50), member_level VARCHAR(10) DEFAULT &amp;#39;普通&amp;#39;, created_at TIMESTAMP DEFAULT NOW() ); -- 订单表 CREATE TABLE orders ( order_id SERIAL PRIMARY KEY, customer_id INTEGER REFERENCES customers(customer_id), order_date DATE NOT NULL, total_amount NUMERIC(10,2) NOT NULL, status VARCHAR(10) DEFAULT &amp;#39;已完成&amp;#39; CHECK (status IN (&amp;#39;已完成&amp;#39;, &amp;#39;已取消&amp;#39;, &amp;#39;退款中&amp;#39;)) ); -- 订单明细表 CREATE TABLE order_items ( item_id SERIAL PRIMARY KEY, order_id INTEGER NOT NULL REFERENCES orders(order_id), product_name VARCHAR(100) NOT NULL, price NUMERIC(10,2) NOT NULL, quantity INTEGER NOT NULL ); -- 插入客户数据 INSERT INTO customers (name, city, member_level) VALUES (&amp;#39;张三&amp;#39;, &amp;#39;北京&amp;#39;, &amp;#39;金卡&amp;#39;), (&amp;#39;李四&amp;#39;, &amp;#39;上海&amp;#39;, &amp;#39;银卡&amp;#39;), (&amp;#39;王五&amp;#39;, &amp;#39;广州&amp;#39;, &amp;#39;金卡&amp;#39;), (&amp;#39;赵六&amp;#39;, &amp;#39;深圳&amp;#39;, &amp;#39;普通&amp;#39;), (&amp;#39;陈七&amp;#39;, &amp;#39;杭州&amp;#39;, &amp;#39;银卡&amp;#39;), (&amp;#39;周八&amp;#39;, &amp;#39;成都&amp;#39;, &amp;#39;普通&amp;#39;); -- 从未下单的客户 -- 插入订单数据（陈七从未下单） INSERT INTO orders (customer_id, order_date, total_amount, status) VALUES (1, &amp;#39;2025-01-05&amp;#39;, 8997, &amp;#39;已完成&amp;#39;), (2, &amp;#39;2025-01-08&amp;#39;, 5295, &amp;#39;已完成&amp;#39;), (3, &amp;#39;2025-01-12&amp;#39;, 3500, &amp;#39;已完成&amp;#39;), (1, &amp;#39;2025-01-15&amp;#39;, 399, &amp;#39;已完成&amp;#39;), (4, &amp;#39;2025-01-18&amp;#39;, 1500, &amp;#39;已完成&amp;#39;), (5, &amp;#39;2025-01-20&amp;#39;, 2500, &amp;#39;已完成&amp;#39;), (2, &amp;#39;2025-01-22&amp;#39;, 880, &amp;#39;已取消&amp;#39;), (1, &amp;#39;2025-01-25&amp;#39;, 12000, &amp;#39;已完成&amp;#39;), (3, &amp;#39;2025-01-28&amp;#39;, 599, &amp;#39;退款中&amp;#39;), (5, &amp;#39;2025-02-01&amp;#39;, 1800, &amp;#39;已完成&amp;#39;); -- 插入订单明细 INSERT INTO order_items (order_id, product_name, price, quantity) VALUES (1, &amp;#39;笔记本电脑&amp;#39;, 5999, 1), (1, &amp;#39;手机&amp;#39;, 3999, 1), -- 订单1：5999+3999 = 9998-.</description>
    </item>
  </channel>
</rss>
