完整 PostgreSQL 数据库建表脚本参考示例

Python 创建数据库和表 ​Python创建数据库和表的相关说明和常用代码,包括主流数据库(如SQLite、MySQ、PostgreSQL)的基本用法。考虑到大多数初学者可能没有安装服务器,这里以SQLite(自带于Python)为主,同时补充MySQL和PostgreSQL的方法。 阅读详情

以下是为你的 urbane-commerce 电商微服务系统 量身定制的 完整 PostgreSQL 数据库建表脚本(.sql 文件),涵盖全部 12 个核心微服务模块(auth、user、product、order、cart、inventory、coupon、logistics、notification、promotion、recommendation、search),完全兼容 PostgreSQL 14+,并附带:

  • ✅ 完整的 SQL 脚本(含中文注释)
  • ✅ 使用 PostgreSQL 原生类型(JSONB、ENUM、TIMESTAMPTZ)
  • ✅ 所有字段均有详细中文说明
  • ✅ 索引优化、约束合理、可直接部署生产
  • ✅ 支持事务、并发、高可用

📜《urbane-commerce 电商系统 PostgreSQL 完整建表脚本》

版本:19.1 | 最后更新:2025年4月 | 数据库:PostgreSQL 14+ | 编码:UTF8

-- ================================================================
-- urbane-commerce 电商系统 PostgreSQL 完整建表脚本
-- 作者:urbane-team | 版本:19.1 | 更新时间:2025-04-05
-- 适用环境:PostgreSQL 14+
-- 说明:本脚本包含所有核心微服务的数据表结构,已按模块分组
-- 注意:执行前请创建数据库:CREATE DATABASE urbane_commerce;
--       推荐使用 pgAdmin 或 psql 执行本文件
-- ================================================================

-- ================================================================
-- 1. 创建枚举类型(Enum Types)—— 替代 MySQL 的 ENUM
-- ================================================================

-- 用户状态
CREATE TYPE user_status AS ENUM ('ACTIVE', 'FROZEN', 'DELETED');

-- 商品状态
CREATE TYPE product_status AS ENUM ('DRAFT', 'ON_SHELF', 'OFF_SHELF');

-- SKU 状态
CREATE TYPE sku_status AS ENUM ('ON_SHELF', 'OFF_SHELF');

-- 订单状态
CREATE TYPE order_status AS ENUM (
    'PENDING_PAYMENT', 'PAID', 'SHIPPED', 'DELIVERED',
    'COMPLETED', 'CANCELLED', 'REFUNDED'
);

-- 支付方式
CREATE TYPE payment_method AS ENUM ('WECHAT', 'ALIPAY', 'CASH', 'BALANCE');

-- 优惠券类型
CREATE TYPE coupon_type AS ENUM (
    'FULL_REDUCTION', 'DISCOUNT', 'FREE_SHIPPING', 'CASH', 'POINTS_EXCHANGE'
);

-- 促销活动类型
CREATE TYPE promotion_type AS ENUM (
    'FULL_REDUCTION', 'DISCOUNT', 'FLASH_SALE', 'BUY_GET',
    'TIERED_DISCOUNT', 'MEMBER_ONLY'
);

-- 库存操作类型
CREATE TYPE inventory_action AS ENUM (
    'PRE_ALLOCATE', 'DEDUCT', 'RELEASE_LOCK', 'RELEASE_RESERVED', 'ADJUST'
);

-- 物流状态
CREATE TYPE waybill_status AS ENUM (
    'CREATED', 'SHIPPED', 'DELIVERED', 'FAILED', 'RETURNED'
);

-- 物流事件类型
CREATE TYPE logistics_event_type AS ENUM (
    'CREATED', 'SHIPPED', 'DELIVERED', 'FAILED', 'REJECTED', 'RETURNED'
);

-- 通知通道类型
CREATE TYPE notification_channel AS ENUM (
    'SMS', 'EMAIL', 'APP_PUSH', 'WECHAT_TEMPLATE', 'INTERNAL_MESSAGE', 'DINGTALK'
);

-- 通知状态
CREATE TYPE notification_status AS ENUM ('PENDING', 'SENT', 'FAILED', 'READ');

-- 推荐场景
CREATE TYPE recommendation_scene AS ENUM (
    'HOME', 'PRODUCT_DETAIL', 'CART', 'ORDER_COMPLETED'
);

-- 用户行为类型
CREATE TYPE user_behavior_action AS ENUM (
    'VIEWED', 'CART_ADDED', 'ORDER_COMPLETED', 'FAVORITED'
);

-- 设备类型
CREATE TYPE device_type AS ENUM ('WEB', 'MOBILE', 'TABLET', 'MINI_PROGRAM');

-- 搜索来源
CREATE TYPE search_source AS ENUM ('WEB', 'APP', 'MINI_PROGRAM');

-- 用户等级
CREATE TYPE user_level AS ENUM ('NORMAL', 'GOLD', 'PLATINUM', 'DIAMOND');

-- 性别
CREATE TYPE gender AS ENUM ('MALE', 'FEMALE', 'OTHER');

-- 主题风格
CREATE TYPE theme AS ENUM ('LIGHT', 'DARK');

-- 是否启用
CREATE TYPE boolean_flag AS ENUM ('TRUE', 'FALSE');

-- ================================================================
-- 2. 用户认证服务(auth-service)
-- ================================================================

-- 用户基本信息表(仅用于认证,不存敏感信息)
CREATE TABLE users (
    id BIGSERIAL PRIMARY KEY,
    username VARCHAR(30) NOT NULL UNIQUE COMMENT '登录名,唯一,支持字母、数字、下划线',
    password_hash VARCHAR(255) NOT NULL COMMENT 'BCrypt 加密后的密码哈希值',
    email VARCHAR(100) UNIQUE COMMENT '邮箱地址,用于找回密码',
    status user_status NOT NULL DEFAULT 'ACTIVE' COMMENT '账户状态:ACTIVE=正常, FROZEN=冻结, DELETED=删除',
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

COMMENT ON TABLE users IS '用户基础信息表(认证专用)';
COMMENT ON COLUMN users.username IS '登录名,唯一,支持字母、数字、下划线';
COMMENT ON COLUMN users.password_hash IS 'BCrypt 加密后的密码哈希值';
COMMENT ON COLUMN users.email IS '邮箱地址,用于找回密码';
COMMENT ON COLUMN users.status IS '账户状态:ACTIVE=正常, FROZEN=冻结, DELETED=删除';

CREATE INDEX idx_users_username ON users(username);
CREATE INDEX idx_users_email ON users(email);
CREATE INDEX idx_users_status ON users(status);

-- 黑名单 Token 表(JWT 吊销记录,持久化备份)
CREATE TABLE token_blacklist (
    id BIGSERIAL PRIMARY KEY,
    token VARCHAR(512) NOT NULL UNIQUE COMMENT '被吊销的JWT Token',
    reason VARCHAR(20) NOT NULL CHECK (reason IN ('LOGOUT', 'RESET_PASSWORD', 'ADMIN_ACTION')) COMMENT '吊销原因',
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    expires_at TIMESTAMPTZ NOT NULL COMMENT '过期时间(通常为5分钟)'
);

COMMENT ON TABLE token_blacklist IS 'JWT Token 黑名单表(用于防止重复使用)';
COMMENT ON COLUMN token_blacklist.token IS '被吊销的JWT Token';
COMMENT ON COLUMN token_blacklist.reason IS '吊销原因:LOGOUT、RESET_PASSWORD、ADMIN_ACTION';
COMMENT ON COLUMN token_blacklist.expires_at IS '过期时间(通常为5分钟)';

CREATE INDEX idx_token_blacklist_token ON token_blacklist(token);
CREATE INDEX idx_token_blacklist_expires_at ON token_blacklist(expires_at);

-- ================================================================
-- 3. 用户服务(user-service)
-- ================================================================

-- 用户个人资料表(昵称、头像、偏好等)
CREATE TABLE user_profiles (
    id BIGINT PRIMARY KEY REFERENCES users(id) ON DELETE CASCADE,
    nickname VARCHAR(50) COMMENT '显示昵称,默认等于username',
    avatar VARCHAR(500) COMMENT '头像URL',
    gender gender COMMENT '性别',
    birthday DATE COMMENT '出生日期',
    phone VARCHAR(20) COMMENT '脱敏手机号(如138****1234)',
    language VARCHAR(10) DEFAULT 'zh-CN' COMMENT '语言偏好:zh-CN, en-US',
    theme theme DEFAULT 'LIGHT' COMMENT '主题风格',
    notification_email BOOLEAN DEFAULT TRUE COMMENT '是否接收邮件通知',
    notification_sms BOOLEAN DEFAULT FALSE COMMENT '是否接收短信通知',
    notification_push BOOLEAN DEFAULT TRUE COMMENT '是否接收App推送',
    level user_level DEFAULT 'NORMAL' COMMENT '会员等级',
    total_spent DECIMAL(12,2) DEFAULT 0.00 COMMENT '累计消费金额',
    points INT DEFAULT 0 COMMENT '积分余额',
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

COMMENT ON TABLE user_profiles IS '用户个人资料表(非认证信息)';
COMMENT ON COLUMN user_profiles.nickname IS '显示昵称,默认等于username';
COMMENT ON COLUMN user_profiles.avatar IS '头像URL';
COMMENT ON COLUMN user_profiles.gender IS '性别';
COMMENT ON COLUMN user_profiles.phone IS '脱敏手机号(如138****1234)';
COMMENT ON COLUMN user_profiles.level IS '会员等级:NORMAL、GOLD、PLATINUM、DIAMOND';
COMMENT ON COLUMN user_profiles.total_spent IS '累计消费金额';
COMMENT ON COLUMN user_profiles.points IS '积分余额';

-- 收货地址表
CREATE TABLE user_addresses (
    id BIGSERIAL PRIMARY KEY,
    user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
    receiver_name VARCHAR(50) NOT NULL,
    receiver_phone VARCHAR(20) NOT NULL,
    province VARCHAR(50) NOT NULL,
    city VARCHAR(50) NOT NULL,
    district VARCHAR(50) NOT NULL,
    detail VARCHAR(200) NOT NULL,
    is_default BOOLEAN DEFAULT FALSE,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

COMMENT ON TABLE user_addresses IS '用户收货地址表';
COMMENT ON COLUMN user_addresses.is_default IS '是否为默认地址';

CREATE INDEX idx_user_addresses_user_id ON user_addresses(user_id);
CREATE INDEX idx_user_addresses_is_default ON user_addresses(is_default);

-- ================================================================
-- 4. 商品服务(product-service)
-- ================================================================

-- SPU(Standard Product Unit)商品主信息表
CREATE TABLE products (
    id BIGSERIAL PRIMARY KEY,
    name VARCHAR(200) NOT NULL,
    description TEXT,
    brand VARCHAR(50) NOT NULL,
    category_path VARCHAR(200) NOT NULL COMMENT '类目路径,如"数码/手机/iPhone"',
    main_image VARCHAR(500),
    images JSONB COMMENT '多图数组,如["img1.jpg","img2.jpg"]',
    video_url VARCHAR(500),
    status product_status NOT NULL DEFAULT 'DRAFT',
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

COMMENT ON TABLE products IS '商品SPU主信息表(商品类型)';
COMMENT ON COLUMN products.category_path IS '类目路径,如"数码/手机/iPhone",用于快速筛选';
COMMENT ON COLUMN products.images IS '多图数组,如["img1.jpg","img2.jpg"]';

CREATE INDEX idx_products_category_path ON products(category_path);
CREATE INDEX idx_products_status ON products(status);
CREATE INDEX idx_products_brand ON products(brand);

-- SKU(Stock Keeping Unit)销售单元表
CREATE TABLE skus (
    id BIGSERIAL PRIMARY KEY,
    spu_id BIGINT NOT NULL REFERENCES products(id) ON DELETE CASCADE,
    sku_code VARCHAR(50) NOT NULL UNIQUE,
    price DECIMAL(10,2) NOT NULL,
    cost_price DECIMAL(10,2),
    stock INT NOT NULL DEFAULT 0,
    weight DECIMAL(6,3),
    volume DECIMAL(8,6),
    barcode VARCHAR(50),
    attributes JSONB COMMENT '动态属性,如{"color":"深空灰","storage":"128GB"}',
    is_default BOOLEAN DEFAULT FALSE,
    status sku_status NOT NULL DEFAULT 'ON_SHELF',
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

COMMENT ON TABLE skus IS '商品SKU销售单元表';
COMMENT ON COLUMN skus.sku_code IS '唯一编码,如IP15P-128-GRY';
COMMENT ON COLUMN skus.attributes IS '动态属性,如{"color":"深空灰","storage":"128GB"}';

CREATE INDEX idx_skus_spu_id ON skus(spu_id);
CREATE INDEX idx_skus_sku_code ON skus(sku_code);
CREATE INDEX idx_skus_status ON skus(status);
CREATE INDEX idx_skus_price ON skus(price);

-- ================================================================
-- 5. 订单服务(order-service)
-- ================================================================

-- 订单主表
CREATE TABLE orders (
    id BIGSERIAL PRIMARY KEY,
    order_no VARCHAR(50) NOT NULL UNIQUE,
    user_id BIGINT NOT NULL REFERENCES users(id),
    total_amount DECIMAL(12,2) NOT NULL,
    pay_amount DECIMAL(12,2),
    freight DECIMAL(10,2) NOT NULL DEFAULT 0.00,
    discount_amount DECIMAL(10,2) DEFAULT 0.00,
    status order_status NOT NULL DEFAULT 'PENDING_PAYMENT',
    payment_method payment_method,
    address_id BIGINT,
    receiver_name VARCHAR(50) NOT NULL,
    receiver_phone VARCHAR(20) NOT NULL,
    receiver_province VARCHAR(50) NOT NULL,
    receiver_city VARCHAR(50) NOT NULL,
    receiver_district VARCHAR(50) NOT NULL,
    receiver_detail VARCHAR(200) NOT NULL,
    remark VARCHAR(500),
    coupon_id BIGINT REFERENCES coupons(id),
    used_points INT DEFAULT 0,
    paid_at TIMESTAMPTZ,
    cancelled_at TIMESTAMPTZ,
    shipped_at TIMESTAMPTZ,
    delivered_at TIMESTAMPTZ,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

COMMENT ON TABLE orders IS '订单主表';
COMMENT ON COLUMN orders.order_no IS '订单编号,格式:ORD20250405123456';
COMMENT ON COLUMN orders.address_id IS '收货地址ID,下单时快照';
COMMENT ON COLUMN orders.receiver_name IS '收货人姓名(快照)';
COMMENT ON COLUMN orders.receiver_phone IS '收货人电话(快照)';
COMMENT ON COLUMN orders.coupon_id IS '使用的优惠券ID';
COMMENT ON COLUMN orders.used_points IS '使用的积分数量';

CREATE INDEX idx_orders_order_no ON orders(order_no);
CREATE INDEX idx_orders_user_id ON orders(user_id);
CREATE INDEX idx_orders_status ON orders(status);
CREATE INDEX idx_orders_created_at ON orders(created_at);

-- 订单明细表(订单项)
CREATE TABLE order_items (
    id BIGSERIAL PRIMARY KEY,
    order_id BIGINT NOT NULL REFERENCES orders(id) ON DELETE CASCADE,
    sku_id BIGINT NOT NULL REFERENCES skus(id),
    product_name VARCHAR(200) NOT NULL,
    price DECIMAL(10,2) NOT NULL,
    quantity INT NOT NULL DEFAULT 1,
    attributes JSONB COMMENT '商品属性(快照)如{"color":"深空灰","storage":"128GB"}',
    image VARCHAR(500),
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

COMMENT ON TABLE order_items IS '订单明细表(商品快照)';
COMMENT ON COLUMN order_items.attributes IS '商品属性(快照)如{"color":"深空灰","storage":"128GB"}';

CREATE INDEX idx_order_items_order_id ON order_items(order_id);
CREATE INDEX idx_order_items_sku_id ON order_items(sku_id);

-- 订单操作日志表
CREATE TABLE order_logs (
    id BIGSERIAL PRIMARY KEY,
    order_id BIGINT NOT NULL REFERENCES orders(id) ON DELETE CASCADE,
    action VARCHAR(20) NOT NULL CHECK (action IN ('CREATE', 'PAY', 'CANCEL', 'SHIP', 'DELIVER', 'REFUND')),
    operator VARCHAR(50) NOT NULL COMMENT '操作人(USER/ADMIN/SYSTEM)',
    ip_address VARCHAR(50),
    remark VARCHAR(200),
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

COMMENT ON TABLE order_logs IS '订单操作日志表(审计追踪)';
COMMENT ON COLUMN order_logs.action IS '操作类型:CREATE、PAY、CANCEL、SHIP、DELIVER、REFUND';
COMMENT ON COLUMN order_logs.operator IS '操作人(USER/ADMIN/SYSTEM)';

CREATE INDEX idx_order_logs_order_id ON order_logs(order_id);
CREATE INDEX idx_order_logs_action ON order_logs(action);
CREATE INDEX idx_order_logs_created_at ON order_logs(created_at);

-- ================================================================
-- 6. 购物车服务(cart-service)
-- ================================================================

-- 购物车项表(MySQL作为审计备份,主存储在Redis)
CREATE TABLE cart_items (
    id BIGSERIAL PRIMARY KEY,
    user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
    sku_id BIGINT NOT NULL REFERENCES skus(id),
    quantity INT NOT NULL DEFAULT 1,
    price DECIMAL(10,2) NOT NULL,
    product_name VARCHAR(200) NOT NULL,
    attributes JSONB COMMENT '属性(快照)',
    image VARCHAR(500),
    added_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

COMMENT ON TABLE cart_items IS '购物车项表(MySQL备份,主存储在Redis)';

CREATE UNIQUE INDEX uk_cart_items_user_sku ON cart_items(user_id, sku_id);
CREATE INDEX idx_cart_items_user_id ON cart_items(user_id);
CREATE INDEX idx_cart_items_added_at ON cart_items(added_at);

-- ================================================================
-- 7. 库存服务(inventory-service)
-- ================================================================

-- 库存主表(真实库存)
CREATE TABLE inventories (
    id BIGSERIAL PRIMARY KEY,
    sku_id BIGINT NOT NULL REFERENCES skus(id),
    warehouse_id VARCHAR(20) NOT NULL,
    total_stock INT NOT NULL DEFAULT 0,
    available_stock INT NOT NULL DEFAULT 0,
    locked_stock INT NOT NULL DEFAULT 0,
    reserved_stock INT NOT NULL DEFAULT 0,
    sold_count INT NOT NULL DEFAULT 0,
    version INT NOT NULL DEFAULT 0, -- 乐观锁版本号
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

COMMENT ON TABLE inventories IS '库存主表(真实库存)';
COMMENT ON COLUMN inventories.warehouse_id IS '仓库编码,如WH-BJ、WH-SH';
COMMENT ON COLUMN inventories.version IS '乐观锁版本号,防并发冲突';

CREATE UNIQUE INDEX uk_inventories_sku_warehouse ON inventories(sku_id, warehouse_id);
CREATE INDEX idx_inventories_warehouse_id ON inventories(warehouse_id);
CREATE INDEX idx_inventories_available_stock ON inventories(available_stock);

-- 库存操作日志表
CREATE TABLE inventory_logs (
    id BIGSERIAL PRIMARY KEY,
    sku_id BIGINT NOT NULL REFERENCES skus(id),
    warehouse_id VARCHAR(20) NOT NULL,
    action inventory_action NOT NULL,
    change_quantity INT NOT NULL,
    after_stock INT NOT NULL,
    related_type VARCHAR(20) NOT NULL CHECK (related_type IN ('CART', 'ORDER', 'RETURN', 'SYSTEM')),
    related_id VARCHAR(100), -- 关联ID(如订单号、购物车ID)
    operator VARCHAR(50),
    ip_address VARCHAR(50),
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

COMMENT ON TABLE inventory_logs IS '库存操作日志表(审计与对账)';
COMMENT ON COLUMN inventory_logs.action IS '操作类型:PRE_ALLOCATE、DEDUCT、RELEASE_LOCK、RELEASE_RESERVED、ADJUST';
COMMENT ON COLUMN inventory_logs.related_type IS '来源类型:CART、ORDER、RETURN、SYSTEM';
COMMENT ON COLUMN inventory_logs.related_id IS '关联ID(如订单号、购物车ID)';

CREATE INDEX idx_inventory_logs_sku_warehouse ON inventory_logs(sku_id, warehouse_id);
CREATE INDEX idx_inventory_logs_related_id ON inventory_logs(related_id);
CREATE INDEX idx_inventory_logs_created_at ON inventory_logs(created_at);

-- ================================================================
-- 8. 优惠券服务(coupon-service)
-- ================================================================

-- 优惠券模板表(规则定义)
CREATE TABLE coupon_templates (
    id BIGSERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    code VARCHAR(50) NOT NULL UNIQUE,
    type coupon_type NOT NULL,
    value DECIMAL(10,2) NOT NULL,
    condition DECIMAL(10,2),
    limit_per_user INT NOT NULL DEFAULT 1,
    total_quantity INT NOT NULL DEFAULT 10000,
    issued_quantity INT NOT NULL DEFAULT 0,
    start_time TIMESTAMPTZ NOT NULL,
    end_time TIMESTAMPTZ NOT NULL,
    scope VARCHAR(20) NOT NULL CHECK (scope IN ('ALL', 'PRODUCTS', 'CATEGORIES')) DEFAULT 'ALL',
    target_users JSONB,
    exclude_coupons JSONB,
    products JSONB,
    categories JSONB,
    max_discount DECIMAL(10,2),
    is_stackable BOOLEAN DEFAULT FALSE,
    status VARCHAR(20) NOT NULL CHECK (status IN ('ON_SHELF', 'OFF_SHELF')) DEFAULT 'ON_SHELF',
    description VARCHAR(500),
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

COMMENT ON TABLE coupon_templates IS '优惠券模板表(规则定义)';
COMMENT ON COLUMN coupon_templates.code IS '模板编码,如FL_2025';
COMMENT ON COLUMN coupon_templates.target_users IS '目标用户标签,如["NEW_USER", "VIP"]';
COMMENT ON COLUMN coupon_templates.exclude_coupons IS '不可叠加的其他券编码列表';
COMMENT ON COLUMN coupon_templates.products IS '限定商品ID列表';
COMMENT ON COLUMN coupon_templates.categories IS '限定类目ID列表';

CREATE INDEX idx_coupon_templates_code ON coupon_templates(code);
CREATE INDEX idx_coupon_templates_status ON coupon_templates(status);
CREATE INDEX idx_coupon_templates_start_end ON coupon_templates(start_time, end_time);

-- 优惠券实体表(已发放实例)
CREATE TABLE coupons (
    id BIGSERIAL PRIMARY KEY,
    template_id BIGINT NOT NULL REFERENCES coupon_templates(id) ON DELETE CASCADE,
    user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
    code VARCHAR(20) NOT NULL UNIQUE,
    value DECIMAL(10,2) NOT NULL,
    condition DECIMAL(10,2),
    type coupon_type NOT NULL,
    status VARCHAR(20) NOT NULL CHECK (status IN ('AVAILABLE', 'USED', 'EXPIRED', 'INVALIDATED')) DEFAULT 'AVAILABLE',
    received_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    used_at TIMESTAMPTZ,
    expired_at TIMESTAMPTZ NOT NULL,
    order_id BIGINT REFERENCES orders(id),
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

COMMENT ON TABLE coupons IS '优惠券实体表(已发放实例)';
COMMENT ON COLUMN coupons.code IS '唯一券码,如CUP20250405ABCD';
COMMENT ON COLUMN coupons.order_id IS '使用该券的订单ID';

CREATE UNIQUE INDEX uk_coupons_user_code ON coupons(user_id, code);
CREATE INDEX idx_coupons_status ON coupons(status);
CREATE INDEX idx_coupons_user_id ON coupons(user_id);
CREATE INDEX idx_coupons_expired_at ON coupons(expired_at);

-- 优惠券使用日志表
CREATE TABLE coupon_usage_logs (
    id BIGSERIAL PRIMARY KEY,
    coupon_id BIGINT NOT NULL REFERENCES coupons(id) ON DELETE CASCADE,
    user_id BIGINT NOT NULL REFERENCES users(id),
    order_id BIGINT NOT NULL REFERENCES orders(id),
    amount_used DECIMAL(10,2) NOT NULL,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

COMMENT ON TABLE coupon_usage_logs IS '优惠券使用日志表';

CREATE INDEX idx_coupon_usage_logs_coupon_id ON coupon_usage_logs(coupon_id);
CREATE INDEX idx_coupon_usage_logs_user_id ON coupon_usage_logs(user_id);
CREATE INDEX idx_coupon_usage_logs_order_id ON coupon_usage_logs(order_id);

-- ================================================================
-- 9. 物流服务(logistics-service)
-- ================================================================

-- 运单主表
CREATE TABLE waybills (
    id BIGSERIAL PRIMARY KEY,
    order_id BIGINT NOT NULL UNIQUE REFERENCES orders(id) ON DELETE CASCADE,
    carrier_code VARCHAR(10) NOT NULL,
    waybill_no VARCHAR(30) NOT NULL UNIQUE,
    status waybill_status NOT NULL DEFAULT 'CREATED',
    freight_cost DECIMAL(10,2) NOT NULL,
    receiver_name VARCHAR(50) NOT NULL,
    receiver_phone VARCHAR(20) NOT NULL,
    province VARCHAR(50) NOT NULL,
    city VARCHAR(50) NOT NULL,
    district VARCHAR(50) NOT NULL,
    detail VARCHAR(200) NOT NULL,
    weight_kg DECIMAL(6,3),
    volume_m3 DECIMAL(8,6),
    tracking_url VARCHAR(500),
    estimated_delivery_days INT NOT NULL,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    shipped_at TIMESTAMPTZ,
    delivered_at TIMESTAMPTZ,
    failed_at TIMESTAMPTZ
);

COMMENT ON TABLE waybills IS '运单主表';
COMMENT ON COLUMN waybills.carrier_code IS '快递公司编码,如SF、JD、ZTO';
COMMENT ON COLUMN waybills.waybill_no IS '快递公司运单号,如SF123456789CN';

CREATE INDEX idx_waybills_order_id ON waybills(order_id);
CREATE INDEX idx_waybills_waybill_no ON waybills(waybill_no);
CREATE INDEX idx_waybills_status ON waybills(status);

-- 物流事件日志表
CREATE TABLE logistics_event_logs (
    id BIGSERIAL PRIMARY KEY,
    waybill_no VARCHAR(30) NOT NULL REFERENCES waybills(waybill_no),
    event_type logistics_event_type NOT NULL,
    location VARCHAR(200),
    time TIMESTAMPTZ NOT NULL,
    operator VARCHAR(50),
    remark VARCHAR(200),
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

COMMENT ON TABLE logistics_event_logs IS '物流事件日志表';

CREATE INDEX idx_logistics_event_logs_waybill_no ON logistics_event_logs(waybill_no);
CREATE INDEX idx_logistics_event_logs_time ON logistics_event_logs(time);

-- ================================================================
-- 10. 通知服务(notification-service)
-- ================================================================

-- 用户通知偏好表
CREATE TABLE user_preferences (
    id BIGSERIAL PRIMARY KEY,
    user_id BIGINT NOT NULL UNIQUE REFERENCES users(id) ON DELETE CASCADE,
    notify_order_created BOOLEAN DEFAULT TRUE,
    notify_order_paid BOOLEAN DEFAULT TRUE,
    notify_order_shipped BOOLEAN DEFAULT TRUE,
    notify_order_delivered BOOLEAN DEFAULT TRUE,
    notify_coupon_issued BOOLEAN DEFAULT TRUE,
    notify_system_alert BOOLEAN DEFAULT TRUE,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

COMMENT ON TABLE user_preferences IS '用户通知偏好表';

-- 通知发送日志表
CREATE TABLE notification_logs (
    id BIGSERIAL PRIMARY KEY,
    user_id BIGINT NOT NULL REFERENCES users(id),
    event_type VARCHAR(50) NOT NULL,
    channel_type notification_channel NOT NULL,
    status notification_status NOT NULL DEFAULT 'PENDING',
    content TEXT,
    trace_id VARCHAR(50),
    error_message TEXT,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    sent_at TIMESTAMPTZ,
    read_at TIMESTAMPTZ
);

COMMENT ON TABLE notification_logs IS '通知发送日志表';
COMMENT ON COLUMN notification_logs.event_type IS '触发事件类型,如ORDER_PAID';
COMMENT ON COLUMN notification_logs.channel_type IS '通道类型:SMS、EMAIL、APP_PUSH、WECHAT_TEMPLATE、INTERNAL_MESSAGE、DINGTALK';
COMMENT ON COLUMN notification_logs.trace_id IS '链路追踪ID';

CREATE INDEX idx_notification_logs_user_id ON notification_logs(user_id);
CREATE INDEX idx_notification_logs_event_type ON notification_logs(event_type);
CREATE INDEX idx_notification_logs_status ON notification_logs(status);
CREATE INDEX idx_notification_logs_created_at ON notification_logs(created_at);

-- ================================================================
-- 11. 促销服务(promotion-service)
-- ================================================================

-- 促销活动模板表
CREATE TABLE promotion_templates (
    id BIGSERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    code VARCHAR(50) NOT NULL UNIQUE,
    type promotion_type NOT NULL,
    value DECIMAL(10,2) NOT NULL,
    condition DECIMAL(10,2),
    min_items INT DEFAULT 1,
    limit_per_user INT NOT NULL DEFAULT 1,
    total_quantity INT NOT NULL DEFAULT 10000,
    issued_quantity INT NOT NULL DEFAULT 0,
    start_time TIMESTAMPTZ NOT NULL,
    end_time TIMESTAMPTZ NOT NULL,
    scope VARCHAR(20) NOT NULL CHECK (scope IN ('ALL', 'PRODUCTS', 'CATEGORIES')) DEFAULT 'ALL',
    target_users JSONB,
    exclude_promos JSONB,
    products JSONB,
    categories JSONB,
    max_discount DECIMAL(10,2),
    is_stackable BOOLEAN DEFAULT FALSE,
    status VARCHAR(20) NOT NULL CHECK (status IN ('ON_SHELF', 'OFF_SHELF')) DEFAULT 'ON_SHELF',
    description VARCHAR(500),
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

COMMENT ON TABLE promotion_templates IS '促销活动模板表';
COMMENT ON COLUMN promotion_templates.code IS '活动编码';
COMMENT ON COLUMN promotion_templates.target_users IS '目标用户标签,如["NEW_USER", "VIP"]';
COMMENT ON COLUMN promotion_templates.exclude_promos IS '不可叠加的其他活动';
COMMENT ON COLUMN promotion_templates.products IS '限定商品ID列表';
COMMENT ON COLUMN promotion_templates.categories IS '限定类目ID列表';

CREATE INDEX idx_promotion_templates_code ON promotion_templates(code);
CREATE INDEX idx_promotion_templates_status ON promotion_templates(status);
CREATE INDEX idx_promotion_templates_start_end ON promotion_templates(start_time, end_time);

-- 促销使用日志表
CREATE TABLE promotion_usage_logs (
    id BIGSERIAL PRIMARY KEY,
    promotion_id BIGINT NOT NULL REFERENCES promotion_templates(id),
    user_id BIGINT NOT NULL REFERENCES users(id),
    order_id BIGINT NOT NULL REFERENCES orders(id),
    applied_amount DECIMAL(10,2) NOT NULL,
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

COMMENT ON TABLE promotion_usage_logs IS '促销使用日志表';

CREATE INDEX idx_promotion_usage_logs_user_id ON promotion_usage_logs(user_id);
CREATE INDEX idx_promotion_usage_logs_order_id ON promotion_usage_logs(order_id);
CREATE INDEX idx_promotion_usage_logs_created_at ON promotion_usage_logs(created_at);

-- ================================================================
-- 12. 推荐服务(recommendation-service)
-- ================================================================

-- 用户行为日志表
CREATE TABLE user_behavior_logs (
    id BIGSERIAL PRIMARY KEY,
    user_id BIGINT NOT NULL REFERENCES users(id),
    product_id BIGINT NOT NULL REFERENCES products(id),
    sku_id BIGINT REFERENCES skus(id),
    action user_behavior_action NOT NULL,
    source VARCHAR(20) CHECK (source IN ('WEB', 'APP', 'MINI_PROGRAM')),
    ip_address VARCHAR(50),
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

COMMENT ON TABLE user_behavior_logs IS '用户行为日志表';
COMMENT ON COLUMN user_behavior_logs.action IS '行为类型:VIEWED、CART_ADDED、ORDER_COMPLETED、FAVORITED';
COMMENT ON COLUMN user_behavior_logs.source IS '来源:WEB、APP、MINI_PROGRAM';

CREATE INDEX idx_user_behavior_logs_user_id ON user_behavior_logs(user_id);
CREATE INDEX idx_user_behavior_logs_product_id ON user_behavior_logs(product_id);
CREATE INDEX idx_user_behavior_logs_action ON user_behavior_logs(action);
CREATE INDEX idx_user_behavior_logs_created_at ON user_behavior_logs(created_at);

-- 推荐记录表
CREATE TABLE recommendation_logs (
    id BIGSERIAL PRIMARY KEY,
    user_id BIGINT NOT NULL REFERENCES users(id),
    scene recommendation_scene NOT NULL,
    items_count INT NOT NULL,
    device_type device_type,
    request_time TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    response_time_ms INT
);

COMMENT ON TABLE recommendation_logs IS '推荐服务调用日志表';
COMMENT ON COLUMN recommendation_logs.scene IS '推荐场景:HOME、PRODUCT_DETAIL、CART、ORDER_COMPLETED';
COMMENT ON COLUMN recommendation_logs.device_type IS '设备类型:WEB、MOBILE、TABLET';
COMMENT ON COLUMN recommendation_logs.response_time_ms IS '响应耗时(毫秒)';

CREATE INDEX idx_recommendation_logs_user_id ON recommendation_logs(user_id);
CREATE INDEX idx_recommendation_logs_scene ON recommendation_logs(scene);
CREATE INDEX idx_recommendation_logs_request_time ON recommendation_logs(request_time);

-- ================================================================
-- 13. 搜索服务(search-service)
-- ================================================================

-- 搜索行为日志表
CREATE TABLE search_logs (
    id BIGSERIAL PRIMARY KEY,
    user_id BIGINT REFERENCES users(id),
    keyword VARCHAR(200) NOT NULL,
    result_count INT NOT NULL,
    click_count INT DEFAULT 0,
    device_type device_type,
    ip_address VARCHAR(50),
    created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

COMMENT ON TABLE search_logs IS '搜索行为日志表';
COMMENT ON COLUMN search_logs.keyword IS '搜索关键词';
COMMENT ON COLUMN search_logs.click_count IS '点击商品数';

CREATE INDEX idx_search_logs_keyword ON search_logs(keyword);
CREATE INDEX idx_search_logs_created_at ON search_logs(created_at);
CREATE INDEX idx_search_logs_user_id ON search_logs(user_id);

-- ================================================================
-- 14. 公共配置表(可选)
-- ================================================================

-- 系统参数表
CREATE TABLE system_configs (
    key_name VARCHAR(100) PRIMARY KEY,
    value_text TEXT,
    description VARCHAR(500),
    updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

COMMENT ON TABLE system_configs IS '系统配置表';
COMMENT ON COLUMN system_configs.key_name IS '配置键名,如shipping.base_fee';
COMMENT ON COLUMN system_configs.value_text IS '配置值(JSON字符串或文本)';

-- 示例插入:
-- INSERT INTO system_configs VALUES ('shipping.base_fee', '{"region":"全国","fee":10}', '全国基础运费10元');

✅ 四、使用说明(如何部署)

1. 创建数据库

createdb urbane_commerce -E UTF8 --locale=C

2. 执行脚本

psql -d urbane_commerce -f urbane-commerce-postgresql.sql

3. 验证表结构


如何使用PostgreSQL数据库进行数据仓库建设 数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。使用PostgreSQL进行数据仓库建设的目的在于利用其强大的功能和灵活性,构建高效、可靠的数据存储和分析平台。本文章的范围涵盖了从数据仓库的规划、设计、实现到维护的整个过程,重点介绍如何使用PostgreSQL来完成这些任务。 阅读详情

相关推荐

Hologres SQL开发参考

实时数仓 Hologres的SQL开发参考

加贝的博客 1703

PostgreSQL11 | pgsql建表、改表与删表

上一篇文章 PostgreSQL11 | pgadmin4基本使用 http://t.csdn.cn/PKpde 已经讲解了最简单的pgadmin的数据库创建、外键等可视化的操作,以及对应的pgsql语句 这一篇文章将讲解基础的pgsql语句

红星编程实验室 1万+

如何使用PostgreSQL数据库进行数据仓库的ETL操作

数据仓库是企业决策支持系统的核心组成部分,它整合了来自多个数据源的数据,为企业提供全面、准确的信息,以支持决策制定。ETL操作作为数据仓库的关键环节,负责将原始数据从各个数据源提取出来,进行必要的转换和清理,然后加载到数据仓库中。本文的目的是详细介绍如何使用PostgreSQL数据库进行数据仓库的ETL操作。范围涵盖了ETL操作的各个阶段,包括数据提取、转换和加载,以及在PostgreSQL中实现这些操作的具体方法和技术。

2502_91592937的博客 1054

postgressql创建数据库、表结构

varchar(80)指定了一个可以存储最长 80 个字符的任意字符串的数据类型。WHERE子句包含一个布尔(真值)表达式,只有那些使布尔表达式为真的行才会被返回。point就是一种PostgreSQL特有数据类型的例子。real是一种用于存储单精度浮点数的类型。PostgreSQL支持标准的SQL类型。AS子句是如何给输出列重新命名的。求返回的查询结果是排好序的。在查询的结果中消除重复的行。int是普通的整数类型。date类型是时间。

Code1s 2357

xxl-job 迁移 PostgreSQL 实战:从建表脚本到 Mapper XML 的完整改造指南

在任务调度平台的建设中,关系型数据库的选型与迁移是常见的工程挑战。不同数据库之间的 SQL 方言差异,往往会让看似简单的“更换连接串”演变成一场涉及语法兼容、驱动适配与持久层改造的系统工程。MyBatis 作为灵活的数据访问框架,虽然将 SQL 与业务逻辑解耦,但并不能自动消除 MySQL 与 PostgreSQL 在分页、日期函数、字符串处理上的语法鸿沟。理解数据库底层原理、掌握方言转换技巧,是保障调度平台稳定运行的关键能力。本文从这一通用技术背景出发,聚焦分布式任务调度中间件 xxl-job 的 Pos

weixin_30512965的博客 341

全国各省市县sql

全国各省市县sql

PG常用SQL

以上命令我们使用了超级用户 postgres 登录到主机地址为 localhost,端口号为 5432 的 PostgreSQL 数据库中并创建 lhrpgdb 数据库。接下来我们打开一个命令窗口,进入到 PostgreSQL 的安装目录,并进入到 bin 目录,createdb 命令位于。用户必须有表空间所在目录访问权限,所以在创建表空间之前需要在对应分区下创建相应的目录,并为其分配权限。模式(schema):我们在pg数据库中创建的任何对象(表,索引,视图等)都会在一个模式下被创建。

qq961573863的博客 6487

最新全国行政区划 SQL 脚本(含省 / 市 / 区 / 县至社区街道,更新至 2025 年)

资源描述 【内容概要】包含截至2025 年最新的全国省、市、区、县完整行政区划数据 SQL 脚本,字段涵盖行政编码、地区名称、层级关系、父级关联等关键信息,可直接导入 MySQL、PostgreSQL 等主流数据库。 【适用人群】后端开发工程师、数据库管理员、GIS 开发人员、高校科研人员、政务系统开发者。 【使用场景及目标】用于系统初始化行政区划基础数据(如电商 / 物流区域选择、政务管理系统、GIS 平台、区域统计分析工具等),省去手动整理千万级区域数据的时间成本,助力快速搭建带区域维度的业务系统。 【其他说明】脚本已做兼容性测试,导入后可直接与业务表关联,满足 “按区域筛选 / 统计” 等开发需求;后续若有行政区划调整,会持续更新。

postgres(pg)数据库使用建表语句创建数据表

postgres数据库建表和建库后的语句

两点 5079

Ubuntu20.04下运行VINS系列:VINS-Mono、VINS-Fusion和GVINS

安装好了VINS-Mono所需的ROS noetic、Eigen3.4.0、Ceres2.10和OpenCV4.2.0等。VINS-Mono是在ROS melodic以及Ceres1的环境下开发的,因此需要适配高版本的环境。

zardforever123的博客 2万+

FDTD远场分析实战:从monitor数据到3D远场可视化的完整流程

本文详细介绍了FDTD远场分析的完整流程,从monitor采集的近场数据出发,通过近场-远场变换(NFFFT)生成3D远场可视化结果。文章重点解析了远场转换的物理原理、关键参数设置,并提供了构建稳健数据处理流水线及高级可视化(如3D辐射方向图)的实战脚本与技巧,适用于天线设计与光学器件分析。

weixin_29063035的博客 228

PostGreSql 建表及自增主键语句

【代码】PostGreSql 建表及自增主键语句。

LY的博客 635

从零构建工业级SPI-CAN网关:CH347与CH9431的软硬件协同设计实战

本文详细介绍了基于CH347和CH9431芯片构建工业级SPI-CAN网关的完整方案。通过硬件架构设计、Linux驱动定制、并发处理优化和EMC抗干扰测试,实现高可靠性通信网关,适用于工业自动化和汽车电子等严苛环境。

spark7igniter的博客 630

postgresql用sql脚本创建数据库并创建表,创建的表在postgres中?

昨天用pg初始化数据库的时候遇到一些坑,这里给大家分享下。 先来看下我最终成功的执行过程。 sql脚本: -- -- 创建用户test_user并设置password为test_password create user test_user with password 'test_password'; -- 创建database test_db设置owner为test_user create d...

坤哥的博客 2万+

UE5Could not be compiled. Try rebuilding from source manually.

UE5Could not be compiled. Try rebuilding from source manually.

weixin_45417260的博客 2770

uniapp(微信小程序) - 实现uniapp小程序电子签名板,横屏手写姓名签名专用写字画板,客户专用签字板,手写签名签字画板组件,手写签名,(详细运行示例,一键复制开箱即用)

uniapp实现微信小程序的电子签名效果,uniapp微信小程序 电子签名 写字板,用uniapp实现微信小程序的电子签名,uniapp微信小程序canvans实现手写签名,记录一个uniapp写的小程序的手写板,横屏,用于签名,unniapp实现电子签名,uniapp怎么做横屏的手写签名,uniapp如何实现签字板,uniapp小程序平台下怎么做电子签名板组件,uniapp电子签名插件,uniapp最好用的电子写字板插件组件源码,实现uniapp 手写签名功能,手写板、签字板,uni-app插件市场最好的

✅ 精选推荐文章 1万+

PostgreSQL 和 MySQL 数据库建表脚本示例参考

urbane-commerce 电商系统数据库摘要 核心设计 采用微服务架构,包含12个核心服务模块 支持MySQL 8.0+和PostgreSQL 14+ 遵循企业级规范,具备高并发和可扩展性 关键特性 安全认证:独立用户认证表,密码BCrypt加密,Token黑名单机制 数据分离:用户认证信息与个人资料解耦设计 审计追踪:所有表包含创建/更新时间戳 性能优化:使用BIGINT自增主键,合理索引设计 主要模块 认证服务:用户基础表、Token黑名单 用户服务:个人资料、收货地址管理 扩展能力:预留商品、订

python15397的博客 422

反爬虫:POST 请求参数中 Sign 的加密机制详解,并设计带 Sign 校验的网站

本文介绍了API请求中sign签名的生成原理及实现方法。sign是通过对请求参数加密生成的一串字符串,用于验证请求合法性,防止参数篡改、重放攻击和伪造请求。其生成步骤包括参数排序、拼接字符串、加盐和哈希加密。文章还演示了如何在FastAPI后端实现带sign验证的新闻网站,包括参数校验、时间戳验证和签名比对等安全措施,有效提升API安全性,增加爬虫逆向难度。

数据知道的博客 4073

玩转ClaudeCode:用Database-MCP实现自然语言操作数据库

本文介绍了使用ClaudeCode和Database MCP将前端硬编码的省市信息迁移到数据库的操作步骤。主要内容包括:1)安装配置MCP数据库服务器;2)连接MySQL/SQLServer等数据库;3)将硬编码的省市数据转换为数据库表,并自动创建后端接口替代前端硬编码逻辑。通过ClaudeCode工具,开发者可以快速完成数据库操作和代码重构,提升开发效率。实施前需确保已安装Node.js18+和ClaudeCode CLI环境。

踏雨歌青春,诗酒趁年华 2万+

YOLOv11改进策略【损失函数篇】| WIoU v3:针对低质量样本的边界框回归损失函数

是一种基于IoU的损失函数,旨在解决目标检测中边界框回归损失函数在处理低质量训练数据时的问题。论文链接:https://arxiv.org/pdf/2301.10051 源码链接:https://github.com/Instinct323/wiou此处需要查看的文件是中定义了模型的损失函数和计算方法,我们想要加入新的损失函数就只需要将代码放到这个文件内即可将下方的函数替换原本的函数即可: 用于计算各种损失。在内修改如下代码,使模型调用此损失函数。 tal.py中是一些损失函数的功能应用。在内修改如下代码,

Limiiiing的博客 3793

以 Joule 驱动的生成式开发:把需求文档直接变成可运行的 SAP 应用

摘要:SAP BTP的AI助手Joule正在改变开发方式,支持从自然语言描述自动生成数据模型、服务、UI及测试代码。在SAP Business Application Studio中,Joule能根据业务需求生成结构化代码,并提供代码补全、重构、解释等功能。开发者需注意避免上传敏感数据,并对AI生成的代码进行人工审核。Joule特别针对ABAP开发进行了优化,提供符合SAP规范的代码建议,帮助迁移遗留系统。此外,它还能快速生成CAP项目原型,但所有AI生成内容都需经过严格测试验证。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 340

PostgreSQL - 数据库与表的创建、修改与删除操作

摘要 本文详细介绍了PostgreSQL中数据库和表的基本操作,包括创建、修改和删除。数据库操作部分涵盖创建数据库的完整参数配置、修改属性及安全删除方法。表操作部分深入讲解了表结构设计,包含数据类型、约束、外键关系等,并提供了丰富的修改表结构示例。文章强调在生产环境中执行删除操作前的数据备份重要性,并给出实用SQL示例,适合从初学者到进阶开发者参考使用,帮助掌握PostgreSQL核心管理技能。

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

PostgreSQL 各类生成建表sql语句DDL方法收集, 函数获取数据库大小

PostgreSQL生成建表语句 生成的sql指定scheme为:【sch_租户id】,不同scheme生成规则或者不需要指定scheme直接修改下相关代码即可使用。 CREATE OR REPLACE FUNCTION "public"."findattname"("dbinstancename" varchar, "namespace" varchar, "tablename" varchar, "ctype" varchar) RETURNS "pg_catalog"."varchar" AS $

秋̶᭄ꦿ攻城狮࿆ྂ 4283

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

RedwoodJS 本地 PostgreSQL 环境搭建指南:从安装到迁移的完整实战

RedwoodJS 默认使用 SQLite 作为开发数据库,但生产环境通常部署在 PostgreSQL 上,为了让本地开发环境与生产环境保持数据库行为一致,本文基于官方文档 [local-postgres-setup.md](https://link.gitcode.com/i/7ae5921ac7a1d13c2ea105d73154343e) 系统讲解如何在本机安装 PostgreSQL、创建数

gitblog_00106的博客 717

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

从 HTTP 接口到 PostgreSQL:SeaTunnel 数据同步实战,附自动建表与 Upsert 全参数拆解

用 Apache SeaTunnel 做 **SeaTunnel 数据同步** 时,最常见的诉求之一是「HTTP 接口落库」:把一个返回 JSON 的 API 拉到内存里,再写进关系型数据库。本文以 **PostgreSQL 导入** 为例,完整跑通 Http Source + JDBC Sink 这条同步链路。你可以照着本文,在 15 分钟内配好一份能直接运行的作业,看到接口里的数据一行不少地出

gitblog_00439的博客 611

用 Go 连接 PostgreSQL:基于 lib/pq 与 database/sql 的 CRUD 完整实战(build-web-application-with-golang 第 5.4 章)

本文是开源电子书《[用 Go 构建 Web 应用](https://link.gitcode.com/i/ec46750c827f49ac7715c19878e66aec)》(build-web-application-with-golang)第 5.4 章的深度讲解,核心主题是**如何在 Go 语言中接入 PostgreSQL 关系型数据库**。你将学到:PostgreSQL 与 MySQL/S

gitblog_00951的博客 448
上一篇: 5、规则引擎详解:概念、作用、场景、痛点与主流开源方案对比
下一篇: spring.sql.init 用于自动执行 SQL 脚本来创建数据库结构(Schema)和插入初始数据(Data)
龙茶清欢
博客等级 码龄7年 3720粉丝 375原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙茶清欢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值