数据库表模板大全 免费复制即用

精选高频数据库表结构设计模板,覆盖用户、订单、商品、购物车等场景,SQL 可直接复制到 MySQL / PostgreSQL 使用

12+
精选表模板
MySQL
兼容数据库
免费
全部模板
即用
复制即建表

为什么需要数据库表模板?

数据库表设计是每个后端开发的起点,但很多开发者(尤其是前端转全栈、独立开发者)在设计表结构时会踩坑——漏字段、数据类型选错、索引设计不合理。这套数据库表模板大全整理了电商、社交、管理后台等常见场景中最高频使用的表结构,直接参考或复制即可。

💡 所有模板都在 YesApi 平台的实战项目中验证过,字段设计考虑了扩展性和性能优化。

模板一:用户表(user)

最基础也是最核心的表,几乎每个项目第一个要建的表。

CREATE TABLE `user` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '用户ID',
  `username` VARCHAR(50) NOT NULL COMMENT '用户名',
  `password_hash` VARCHAR(255) NOT NULL COMMENT '密码哈希',
  `phone` VARCHAR(20) DEFAULT NULL COMMENT '手机号',
  `email` VARCHAR(100) DEFAULT NULL COMMENT '邮箱',
  `avatar` VARCHAR(500) DEFAULT NULL COMMENT '头像URL',
  `nickname` VARCHAR(50) DEFAULT NULL COMMENT '昵称',
  `gender` TINYINT DEFAULT 0 COMMENT '性别 0未知 1男 2女',
  `birthday` DATE DEFAULT NULL COMMENT '生日',
  `status` TINYINT DEFAULT 1 COMMENT '状态 1正常 0禁用',
  `last_login_time` DATETIME DEFAULT NULL COMMENT '最后登录时间',
  `last_login_ip` VARCHAR(45) DEFAULT NULL COMMENT '最后登录IP',
  `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_username` (`username`),
  UNIQUE KEY `uk_phone` (`phone`),
  KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';

模板二:订单表(order)

电商/支付类项目必备,注意分表策略(可按用户ID或时间分表)。

CREATE TABLE `order` (
  `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '订单ID',
  `order_no` VARCHAR(32) NOT NULL COMMENT '订单号',
  `user_id` INT UNSIGNED NOT NULL COMMENT '用户ID',
  `total_amount` DECIMAL(10,2) NOT NULL COMMENT '订单总金额',
  `pay_amount` DECIMAL(10,2) NOT NULL COMMENT '实付金额',
  `discount_amount` DECIMAL(10,2) DEFAULT 0 COMMENT '优惠金额',
  `status` TINYINT DEFAULT 0 COMMENT '0待付款 1已付款 2已发货 3已完成 4已取消 5退款中 6已退款',
  `pay_type` VARCHAR(20) DEFAULT NULL COMMENT '支付方式 alipay/wxpay',
  `pay_time` DATETIME DEFAULT NULL COMMENT '付款时间',
  `delivery_time` DATETIME DEFAULT NULL COMMENT '发货时间',
  `receiver_name` VARCHAR(50) DEFAULT NULL COMMENT '收货人',
  `receiver_phone` VARCHAR(20) DEFAULT NULL COMMENT '收货电话',
  `receiver_address` VARCHAR(500) DEFAULT NULL COMMENT '收货地址',
  `remark` VARCHAR(500) DEFAULT NULL COMMENT '用户备注',
  `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_order_no` (`order_no`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_status` (`status`),
  KEY `idx_created_at` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单表';

模板三:商品表(product)

CREATE TABLE `product` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(200) NOT NULL COMMENT '商品名称',
  `category_id` INT UNSIGNED DEFAULT NULL COMMENT '分类ID',
  `price` DECIMAL(10,2) NOT NULL COMMENT '售价',
  `original_price` DECIMAL(10,2) DEFAULT NULL COMMENT '原价',
  `stock` INT DEFAULT 0 COMMENT '库存',
  `sales` INT DEFAULT 0 COMMENT '销量',
  `cover_image` VARCHAR(500) DEFAULT NULL COMMENT '封面图',
  `images` TEXT COMMENT '详情图JSON数组',
  `description` TEXT COMMENT '商品描述',
  `detail` MEDIUMTEXT COMMENT '商品详情(富文本)',
  `is_on_sale` TINYINT DEFAULT 1 COMMENT '是否上架 1是 0否',
  `sort` INT DEFAULT 0 COMMENT '排序',
  `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
  `updated_at` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `idx_category` (`category_id`),
  KEY `idx_on_sale` (`is_on_sale`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品表';

更多表模板速览

模板名称核心字段适用场景
购物车表 (cart)user_id, product_id, quantity, selected电商App/小程序
收货地址表 (address)user_id, name, phone, province, city, detail, is_default电商/配送类应用
字典表 (dict)code, name, parent_id, value, sort任何需要下拉选项的系统
发票信息表 (invoice)user_id, title, tax_no, type, email企业采购/开票系统
签到记录表 (sign_in)user_id, sign_date, points, continuous_days积分/会员系统
文件上传表 (file)user_id, filename, path, size, mime_type任何需要文件管理的系统
微信用户表 (wx_user)openid, unionid, nickname, avatar, session_key微信小程序/公众号
多级字典表 (region)id, name, parent_id, level, code省市联动、组织架构

数据库表设计的最佳实践

📝

1. 字段注释不可省

每个字段必须加 COMMENT,否则三个月后连你自己都不知道这个字段干什么用。

🔑

2. 主键用自增INT或BIGINT

除非有特殊需求,不要用UUID做主键——索引碎片化严重,查询性能差。

📊

3. 高频查询加索引

WHERE条件里经常用的字段(status, user_id, created_at)一定要加索引。

💰

4. 金额用DECIMAL

千万不要用 FLOAT/DOUBLE 存储金额,精度丢失会让你赔钱。

🌐

5. 统一 utf8mb4

从第一天就用 utf8mb4 字符集,避免后期emoji和生僻字存储问题。

6. 时间字段要统一

每张表统一保留 created_at / updated_at,方便数据追踪和审计。

用 YesApi 零代码建表

如果你不想手写 SQL,可以直接在 YesApi 平台通过可视化界面创建数据表,系统自动生成 API 接口。支持从模板快速安装、字段拖拽配置,还有内置的数据库表模板可以一键导入。

🚀 免费注册 YesApi,直接使用数据库模板功能,免写SQL建表,自动生成增删改查API。

常见问题 FAQ

这些表模板可以直接在生产环境使用吗?

可以。这些模板在 YesApi 平台的多个生产项目中验证过,字段类型、索引设计都考虑到了实际性能需求。建议根据你的业务场景微调字段。

MySQL 和 PostgreSQL 都能用吗?

主要语法是 MySQL 的,但核心表结构设计思想通用。转到 PostgreSQL 只需将 AUTO_INCREMENT 改为 SERIAL、TINYINT 改为 SMALLINT 即可。

如何快速导入这些表模板?

可以直接复制上面的 DDL SQL 在 Navicat、DBeaver 等数据库管理工具中执行,也可以在 YesApi 平台通过可视化建表功能一键创建。

有没有电商完整数据库设计?

电商完整数据库涉及20+张表,包括用户、商品、订单、购物车、支付、物流、评价等。YesApi 平台提供电商模板可直接安装使用。

相关文章

懒得写 SQL?用 YesApi 可视化建表

免费注册,5分钟建好数据表,自动生成增删改查 API 接口

开始免费建表 →