Docker Desktop | 本地化挂载 Postgresql

Docker Desktop | 本地化挂载 Postgresql

挂载

夸克网盘链接:PowerShell,创建postgre

(1) 简单

(2)想自定义的

UTC

CST

在Docker Desktop中查看信息

State

Env

查看信息

版本目录差别

测试

postgresql 复制代码
-- ============================================================
-- seed.sql ------ myapp 测试数据(可重复执行,会先清空重建)
-- ============================================================

DROP TABLE IF EXISTS order_items CASCADE;
DROP TABLE IF EXISTS orders       CASCADE;
DROP TABLE IF EXISTS products     CASCADE;
DROP TABLE IF EXISTS users        CASCADE;

-- 用户表(顺便演示 PG 特色:JSONB 和数组类型)
CREATE TABLE users (
                       id            BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
                       username      VARCHAR(50)   NOT NULL UNIQUE,
                       email         VARCHAR(100)  NOT NULL UNIQUE,
                       password_hash TEXT          NOT NULL,
                       profile       JSONB         NOT NULL DEFAULT '{}',
                       tags          TEXT[]        NOT NULL DEFAULT '{}',
                       is_active     BOOLEAN       NOT NULL DEFAULT TRUE,
                       created_at    timestamp   NOT NULL DEFAULT now()
);

-- 商品表
CREATE TABLE products (
                          id          BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
                          name        VARCHAR(100)  NOT NULL,
                          price       NUMERIC(10,2) NOT NULL CHECK (price >= 0),
                          stock       INT           NOT NULL DEFAULT 0 CHECK (stock >= 0),
                          description TEXT,
                          created_at  TIMESTAMPTZ   NOT NULL DEFAULT now()
);

-- 订单表
CREATE TABLE orders (
                        id         BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
                        user_id    BIGINT        NOT NULL REFERENCES users(id),
                        status     VARCHAR(20)   NOT NULL DEFAULT 'pending'
                            CHECK (status IN ('pending','paid','shipped','completed','cancelled')),
                        total      NUMERIC(12,2) NOT NULL DEFAULT 0,
                        created_at TIMESTAMPTZ   NOT NULL DEFAULT now()
);

-- 订单明细
CREATE TABLE order_items (
                             id         BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
                             order_id   BIGINT        NOT NULL REFERENCES orders(id) ON DELETE CASCADE,
                             product_id BIGINT        NOT NULL REFERENCES products(id),
                             quantity   INT           NOT NULL CHECK (quantity > 0),
                             unit_price NUMERIC(10,2) NOT NULL
);

-- 索引
CREATE INDEX idx_orders_user    ON orders(user_id);
CREATE INDEX idx_orders_status  ON orders(status);
CREATE INDEX idx_items_order    ON order_items(order_id);
CREATE INDEX idx_users_tags     ON users USING GIN (tags);   -- 数组字段的 GIN 索引,MySQL 没有

-- ========== 测试数据 ==========
INSERT INTO users (username, email, password_hash, profile, tags) VALUES
                                                                      ('alice',   'alice@example.com',   'fakehash1', '{"age": 28, "city": "北京"}', ARRAY['vip','early-adopter']),
                                                                      ('bob',     'bob@example.com',     'fakehash2', '{"age": 35, "city": "上海"}', ARRAY['vip']),
                                                                      ('charlie', 'charlie@example.com', 'fakehash3', '{"age": 22, "city": "深圳"}', ARRAY[]::TEXT[]),
                                                                      ('diana',   'diana@example.com',   'fakehash4', '{"age": 31, "city": "广州"}', ARRAY['beta-tester']),
                                                                      ('eve',     'eve@example.com',     'fakehash5', '{"age": 26, "city": "杭州"}', ARRAY['vip']);

INSERT INTO products (name, price, stock, description) VALUES
                                                           ('机械键盘 K870',  399.00, 120, '红轴 87 键'),
                                                           ('无线鼠标 M220',  129.00, 300, '2.4G + 蓝牙双模'),
                                                           ('4K 显示器 27寸', 1899.00,  45, 'IPS 面板'),
                                                           ('USB-C 扩展坞',   249.00,  80, '8 合 1'),
                                                           ('降噪耳机 HC45',  799.00,  60, '主动降噪');

INSERT INTO orders (user_id, status, total) VALUES
                                                (1, 'completed',  528.00),   -- alice: 键盘 + 鼠标
                                                (1, 'pending',    799.00),   -- alice: 耳机
                                                (2, 'paid',      1899.00),   -- bob: 显示器
                                                (3, 'shipped',    258.00),   -- charlie: 鼠标 x2
                                                (4, 'cancelled',  129.00),   -- diana: 鼠标(已取消)
                                                (5, 'paid',      1047.00);   -- eve: 键盘x2 + 扩展坞

INSERT INTO order_items (order_id, product_id, quantity, unit_price) VALUES
                                                                         (1, 1, 1, 399.00),
                                                                         (1, 2, 1, 129.00),
                                                                         (2, 5, 1, 799.00),
                                                                         (3, 3, 1, 1899.00),
                                                                         (4, 2, 2, 129.00),
                                                                         (5, 2, 1, 129.00),
                                                                         (6, 1, 2, 399.00),
                                                                         (6, 4, 1, 249.00);

-- ========== 验证查询 ==========
-- 每个用户的订单数和实际消费(排除已取消)
SELECT u.username,
       COUNT(o.id)                    AS order_count,
       COALESCE(SUM(o.total), 0)      AS total_spent
FROM users u
         LEFT JOIN orders o ON o.user_id = u.id AND o.status <> 'cancelled'
GROUP BY u.id, u.username
ORDER BY total_spent DESC;

-- 卖得最好的商品
SELECT p.name, SUM(i.quantity) AS sold
FROM order_items i
         JOIN products p ON p.id = i.product_id
GROUP BY p.id, p.name
ORDER BY sold DESC;

由于UTC,所以我们在进入客户端查看的时候也需要配置时区

客户端配置时区

√ 有设置

× 无设置

相关推荐
码间留白4 小时前
手把手把 GitHub 推上阿里云 ECS:Actions CI/CD 全链路避坑实录(折腾好几天,到 2 分钟见绿)
运维·阿里云·ci/cd·docker·devops·github actions
Vex2une4 小时前
Docker Desktop WSL2后端:2026年性能调优与避坑实战指南
windows·docker·desktop·gpu容器·容器开发·virtiofs·buildkit
程序员老赵5 小时前
Docker 部署青龙面板:轻松搭建定时任务管理平台
前端·docker·开源
TTATTC5 小时前
为什么单会话聊天做不好复杂工程?Claude Code 创作者的并发 Worktree 与记忆闭环实践
docker·开源
TTATTC5 小时前
状态机驱动长事务,还是 DAG 编排高并发?高可靠业务流程引擎的双核架构设计
docker·开源
殷忆枫5 小时前
告别依赖地狱!在 Ubuntu 上用 Docker 极速部署 Home Assistant 与 MQTT,并接入 Siri 与嵌入式 C 终端
linux·ubuntu·docker
qq_白羊座7 小时前
:: 符号(Postgres / Hologres)
postgresql
千桐科技7 小时前
qModel算法模型平台功能解析:从源码到 Docker 镜像,部署能自动完成哪些工作?
运维·docker·容器·qmodel
mengge.cloud9 小时前
1019Namespace ,Contexts ,Kubernetes Pod
运维·服务器·网络·云原生·容器·kubernetes·云计算
江湖有缘9 小时前
Docker实战 | 使用Docker部署Imagor Studio图片编辑工具
java·docker·eureka