一.打开终端,输入指令

mysql -uroot -p // 进入数据库

会提示输入密码。
密码为下载MySql时配置的初始密码
提示:
-u:mysql用户名,这里直接将用户名 root 挨着写在后边
-p:mysql密码,这里没有写会提示让输入,也可以直接挨着p写在后边

二.创建数据库(带注释)

– 创建名为 mydb 的数据库,并添加注释

CREATE DATABASE IF NOT EXISTS mydb // IF NOT EXISTS:避免重复创建报错

CHARACTER SET utf8mb4 //CHARACTER SET 和 COLLATE:推荐统一使用 utf8mb4 支持 emoji 和多语言
COLLATE utf8mb4_unicode_ci 
COMMENT '这是我的第一个数据库'; //给数据库加备注可选 ,不备注也行

– 使用该数据库

USE mydb;

三.创建数据表(含主键 + 字段注释 + 表注释)

建数据表口令模版:

CREATE TABLE 表名 (
    字段名 数据类型 约束条件 COMMENT '字段注释',
    ...
    PRIMARY KEY (主键字段)
) ENGINE=InnoDB CHARSET=utf8mb4 COMMENT '表注释';

完整案例:标准的电商/后台管理系统基础结构

-- 创建数据库
CREATE DATABASE IF NOT EXISTS mydb 
CHARACTER SET utf8mb4 
COLLATE utf8mb4_unicode_ci 
COMMENT '项目核心数据库';

USE mydb;

-- 创建用户表
CREATE TABLE IF NOT EXISTS users (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY COMMENT '用户ID',
    username VARCHAR(50) NOT NULL UNIQUE COMMENT '登录用户名',
    password_hash CHAR(64) NOT NULL COMMENT '密码哈希值(SHA256)',
    email VARCHAR(100) NOT NULL COMMENT '注册邮箱',
    phone VARCHAR(20) DEFAULT NULL COMMENT '手机号(可选)',
    status TINYINT NOT NULL DEFAULT 1 COMMENT '状态:1启用 0禁用',
    last_login_at DATETIME DEFAULT NULL COMMENT '最后登录时间',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间',
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '资料更新时间'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='系统用户表';

-- 创建订单表(示范外键关联)
CREATE TABLE IF NOT EXISTS orders (
    order_id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY COMMENT '订单ID',
    user_id INT UNSIGNED NOT NULL COMMENT '下单用户ID',
    total_amount DECIMAL(10,2) NOT NULL DEFAULT 0.00 COMMENT '订单总金额',
    status TINYINT NOT NULL DEFAULT 0 COMMENT '订单状态:0待支付 1已支付 2已发货 3已完成 4已取消',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '下单时间',
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户订单表';

注意:
回车换行
每行末尾不要有空格。
最后一行必须有分号 ;
确保所有符号都是英文半角(特别是单引号 ’ 和分号 ;)。

验证是否成功

-- 查看数据库列表
SHOW DATABASES;

-- 查看表列表
SHOW TABLES;

-- 查看表结构
DESCRIBE users;
DESCRIBE orders;

-- 查看建表语句(含注释)
SHOW CREATE TABLE users\G
SHOW CREATE TABLE orders\G

上面已经是完成的基础版本案列,可以直接用,下面的为详细解释参考,可按需参考

四.各个字段详细解释

1.id(主键)

id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY COMMENT '用户ID',

id: 字段名
INT: 整数类型。 // 类型
UNSIGNED: 无符号。意味着只能存正数(0~42亿),不能存负数。这样可以让主键范围翻倍。 // 条件
AUTO_INCREMENT: 自增。每插入一条新数据,ID 自动 +1(1, 2, 3…),无需手动指定。//条件
PRIMARY KEY: 主键。唯一标识每一行数据,不能为空,不能重复。一张表只能有一个主键。// 主键字段标识
2.username (用户名)

username VARCHAR(50) NOT NULL UNIQUE COMMENT '登录用户名',

VARCHAR(50): 可变长度字符串。最多存 50 个字符。如果只存 “Bob”,只占 3 个字符的空间,节省存储。
NOT NULL: 非空。注册时必须填用户名,不能留白。
UNIQUE: 唯一约束。确保没有两个用户叫同一个名字。

3.password_hash (密码)

password_hash CHAR(64) NOT NULL COMMENT '密码哈希值(SHA256)',

CHAR(64): 固定长度字符串。无论内容多短,都占用 64 个字符空间。
为什么用 CHAR? 因为 SHA256 加密后的字符串长度永远是固定的 64 位十六进制字符。用 CHAR 比 VARCHAR 性能略好。
NOT NULL: 密码必须有值。
4.email (邮箱)

email VARCHAR(100) NOT NULL COMMENT '注册邮箱',

VARCHAR(100): 可变字符串,最大 100 字符。
NOT NULL: 邮箱必填。
5.phone (手机号)

phone VARCHAR(20) DEFAULT NULL COMMENT '手机号(可选)',

VARCHAR(20): 手机号虽然是数字,但通常包含 +, -, 空格或前导 0,所以用字符串存储更安全。
DEFAULT NULL: 默认值为空。如果用户没填手机号,数据库里存的就是 NULL(表示“未知”或“无”)
6.status (状态)

status TINYINT NOT NULL DEFAULT 1 COMMENT '状态:1启用 0禁用',

TINYINT: 极小整数。范围 -128 到 127(或 0-255 if unsigned)。非常适合存只有几种状态的值(如:男/女,开/关),极度节省空间。
DEFAULT 1: 默认值是 1(启用)。新用户注册默认就是启用状态.

7.last_login_at (最后登录)

last_login_at DATETIME DEFAULT NULL COMMENT '最后登录时间',

DATETIME: 日期时间格式 YYYY-MM-DD HH:MM:SS。
DEFAULT NULL: 新用户还没登录过,所以默认为空。
8. created_at (创建时间)

created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间',

TIMESTAMP: 时间戳类型。
DEFAULT CURRENT_TIMESTAMP: 魔法属性。当你插入数据时如果不指定这个字段,MySQL 会自动填入当前的服务器时间。

9.updated_at (更新时间)

updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '资料更新时间'

ON UPDATE CURRENT_TIMESTAMP: 另一个魔法属性。每当这行数据被修改(Update)时,MySQL 会自动将这个字段更新为当前时间。常用于追踪数据最后变动时间。

10. order_id

order_id BIGINT UNSIGNED ...

BIGINT: 大整数。范围极大(约 ±900 京)。
为什么用 BIGINT? 订单量可能非常大,INT (42亿) 可能不够用,或者为了配合分布式 ID 生成策略,通常订单 ID 会用更大的类型。
11.user_id (外键关联字段)

user_id INT UNSIGNED NOT NULL COMMENT '下单用户ID',

这里只是定义了一个普通的整数字段,用来存用户的 ID。
关键点在下面的一行 FOREIGN KEY
12.total_amount (金额)

total_amount DECIMAL(10,2) NOT NULL DEFAULT 0.00 ...

DECIMAL(10,2): 高精度定点数。
10: 总共 10 位数字。
2: 其中 2 位是小数。
为什么不用 FLOAT/DOUBLE? 浮点数有精度丢失问题(比如 0.1 + 0.2 = 0.30000000000000004)。涉及金钱计算必须用 DECIMAL。
13.ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT=‘系统用户表’;
定义了这张表的存储引擎字符编码以及备注信息
这句话告诉数据库:“请用最稳定、支持事务的 InnoDB 引擎来创建这张表,使用能存 Emoji 表情的 utf8mb4 编码,并在表属性里标记它为系统用户表以便后人查阅。

总结图:

在这里插入图片描述

Logo

电商企业物流数字化转型必备!快递鸟 API 接口,72 小时快速完成物流系统集成。全流程实战1V1指导,营造开放的API技术生态圈。

更多推荐