CREATE TABLE `account` (
`id` bigint unsigned NOT NULL AUTO_INCREMENT,
`account_no` bigint DEFAULT NULL,
`head_img` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '头像',
`phone` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '手机号',
`pwd` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '密码',
`secret` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '盐,用于个人敏感信息处理',
`mail` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '邮箱',
`username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '用户名',
`auth` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '认证级别,DEFAULT,REALNAME,ENTERPRISE,访问次数不一样',
`gmt_create` datetime DEFAULT CURRENT_TIMESTAMP,
`gmt_modified` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_phone` (`phone`) USING BTREE,
UNIQUE KEY `uk_account` (`account_no`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
这段代码是一个 SQL 语句,用于在数据库中创建一个名为 account
的新表。下面是对这个 SQL 语句的详细解释:
-
表结构定义:
CREATE TABLE
account`` …` 结束语句用于定义一个新表的结构。 -
列定义:
id
: 一个无符号大整数,不允许为空(NOT NULL
),自动递增(AUTO_INCREMENT
),用作表的主键。account_no
: 一个大整数,可以为空,没有特定的默认值。head_img
: 一个最大长度为 255 的字符串,用于存储头像的链接或路径。phone
: 一个最大长度为 128 的字符串,用于存储手机号,使用utf8mb4
字符集和utf8mb4_bin
排序规则。pwd
: 一个最大长度为 128 的字符串,用于存储密码。secret
: 一个最大长度为 64 的字符串,用于存储加密盐。mail
: 一个最大长度为 128 的字符串,用于存储邮箱地址。username
: 一个最大长度为 255 的字符串,用于存储用户名。auth
: 一个最大长度为 32 的字符串,用于存储认证级别。gmt_create
:datetime
类型,记录创建时间,默认值为当前时间戳(CURRENT_TIMESTAMP
)。gmt_modified
:datetime
类型,记录修改时间,默认值为当前时间戳,并在记录更新时自动更新为当前时间戳。
-
字符集和排序规则:
CHARACTER SET utf8mb4 COLLATE utf8mb4_bin
指定了表的默认字符集和排序规则。utf8mb4
是一种支持存储全范围 Unicode 字符(包括表情)的字符集,utf8mb4_bin
是一个二进制排序规则,它在比较字符串时会考虑字节级的差异。 -
索引定义:
PRIMARY KEY (
id)
: 为主键列id
创建一个索引。UNIQUE KEY
uk_phone`` (phone
): 为
phone` 列创建一个唯一索引,确保手机号不会重复。UNIQUE KEY
uk_account`` (account_no
): 为
account_no` 列创建一个唯一索引,确保账号号码不会重复。
-
表引擎和默认设置:
ENGINE=InnoDB
: 指定表使用 InnoDB 存储引擎,这是 MySQL 默认的存储引擎,支持事务、行级锁定和外键等特性。AUTO_INCREMENT=2
: 指定表的自动递增起始值为 2,意味着下一个新记录的id
将会是 2。DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
: 指定表的默认字符集和排序规则。
这个 account
表的设计考虑了存储用户账号信息的基本需求,包括联系方式、认证信息和时间戳,以及确保关键数据的唯一性和安全性。