小说项目练习#1数据库创建

数据库版本查询SQL语句

SELECT VERSION();

我的数据库版本为:8.0.32


SET NAMES utf8mb4;
-- 这条命令的作用是告诉 MySQL 客户端使用的字符集是 utf8mb4。

SET FOREIGN_KEY_CHECKS = 0;
-- 用于临时禁用外键约束检查。

DROP TABLE IF EXISTS `user`;
-- 删除名为 `user` 的表,如果该表存在的话

CREATE TABLE `user` (
-- 创建一个表名为`user`

  `user_id` int NOT NULL COMMENT '用户id',
  `user_name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户名',
  `user_password` varbinary(20) NULL DEFAULT NULL COMMENT '用户密码',
  `user_sex` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户性别',
  `user_fitness` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '用户账号健康状态',
-- 字段名 字段类型(最大长度) 字符集utf8mb4 排序规则utf8mb4_0900_ai_ci 允许储存null值,并默认null.备注'备注内容',
	
  `permissions_id` int  COMMENT '权限id',
   FOREIGN KEY (`permissions_id`) REFERENCES `permissions`(`permissions_id`),
-- user 表中的 permissions_id 列被定义为一个外键,它引用了 permissions 表中的 permissions_id 列。

  PRIMARY KEY (`user_id`) USING BTREE
-- 这段 SQL 语句定义了一个表的主键,并指定了索引类型为 B-Tree。

) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- 这段 SQL 语句设置了表的存储引擎为 InnoDB,字符集为 utf8mb4,排序规则为 utf8mb4_0900_ai_ci(不区分重音和大小写),并指定了行格式为 Dynamic。

CREATE TABLE `permissions` (
	`permissions_id` int NOT NULL COMMENT '权限id',
	`permissions_name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '权限名',
	`permissions_describe` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '权限描述',
	PRIMARY KEY (`permissions_id`) USING BTREE
)ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;


SET FOREIGN_KEY_CHECKS = 1;
-- 重新启用外键约束检查,确保数据的一致性和完整性。

先练习一下使用SQL语句创建表,虽然可以用软件方便的创建但是温故而知新。

1. **用户表(users)**:用于存储用户的基本信息,包括用户ID(主键)、用户名、密码(通常加密存储)、邮箱、注册时间、最后登录时间、用户状态(如是否激活、是否禁用等)等字段。
2. **小说表(novels)**:用于存储小说的详细信息,包括小说ID(主键)、小说标题、作者、封面图片(通常以图片URL的形式存储)、简介、更新时间、发布时间、总字数、总章节数、阅读量、点赞数、评论数等字段。
3. **分类表(categories)**:用于存储小说的分类信息,包括分类ID(主键)、分类名称、父分类ID(如果有层级分类的话)、分类描述等字段。这个表可以帮助用户通过分类来浏览小说。
4. **章节表(chapters)**:用于存储小说的各个章节信息,包括章节ID(主键)、小说ID(外键,关联到小说表)、章节标题、章节内容、发布时间等字段。章节表通过小说ID与小说表建立关联。
5. **评论表(comments)**:用于存储用户对小说的评论信息,包括评论ID(主键)、小说ID(外键)、用户ID(外键)、评论内容、评论时间、点赞数、是否审核通过等字段。这个表通过小说ID和用户ID与小说表和用户表建立关联。
6. **收藏表(collections)**:用于记录用户收藏的小说信息,包括收藏ID(主键)、用户ID(外键)、小说ID(外键)、收藏时间等字段。这个表通过用户ID和小说ID与用户表和小说表建立关联。
7. **阅读记录表(reading_records)**(可选):用于存储用户的阅读记录,包括记录ID(主键)、用户ID(外键)、小说ID(外键)、章节ID(外键)、阅读时间等字段。这个表可以帮助用户追踪自己的阅读进度。
8. **推荐表(recommendations)**(可选):用于存储小说的推荐信息,包括推荐ID(主键)、小说ID(外键)、推荐理由、推荐时间等字段。这个表可以根据网站的推荐算法来生成并更新。
9. **作家表(writers)**(如果网站需要管理作家信息):用于存储作家的基本信息,包括作家ID(主键)、作家名、联系方式、作品数量、简介等字段。
10. **权限表(permissions)**(如果网站需要细粒度的权限控制):用于存储不同用户或角色的权限信息,包括权限ID(主键)、用户ID或角色ID(外键)、权限名称、权限描述等字段。

至于为什么使用字符集utf8mb4,和排序方式utf8mb4_0900_ai_ci且听我娓娓道来(如果有更好的建议欢迎留言指导)

为什么使用 utf8mb4 而不是 utf8?

  • 更广泛的字符支持utf8mb4 支持更多的 Unicode 字符,包括所有现有的字符和未来的字符。而传统的 utf8 编码方式(MySQL 中的 utf8 实际上是 utf8mb3 的别名,因为它最多只支持三个字节的字符)无法表示所有 Unicode 字符。
  • 支持 emoji:随着 emoji 在网络交流中的广泛使用,utf8mb4 成为了存储这些表情符号的必要选择。

注意

  • 使用utf8mb4 时,要考虑到存储空间的增加,因为某些字符现在需要更多的空间来存储。
  • 还需要确保应用程序正确处理 utf8mb4 编码的数据,特别是在读取、写入和显示数据时。
  • 某些旧的数据库系统或工具可能不完全支持 utf8mb4,因此在进行迁移之前,请确保你的环境兼容此字符集。

为什么使用排序规则 utf8mb4_0900_ai_ci

排序规则 utf8mb4_0900_ai_ci 是 MySQL 数据库中用于指定字符集和排序方式的一个规范。这个排序规则是针对 utf8mb4 字符集的一种特定排序方式

  • utf8mb4:表示使用的字符集是 UTF-8 Multibyte 4。
  • 0900:代表这个排序规则是基于 Unicode 9.0 版本的规范。Unicode 规范会不断更新,每次更新都会包括字符的扩充和修正。
  • ai:表示 Accent Insensitive(不区分音调),即对于带有重音符号的字符,如“a”和“á”,在排序和比较时被视为相等。
  • ci:表示 Case Insensitive(不区分大小写),即对于大小写不同的字符,如“A”和“a”,在排序和比较时也被视为相等。

注意

  • 如果你的 MySQL 版本低于 8.0,那么默认可能不支持 utf8mb4_0900_ai_ci 排序规则,此时需要升级 MySQL 版本或选择其他兼容的排序规则。

(其实是因为我只会用这个o(゚Д゚)っ!)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值