首页
学习
活动
专区
圈层
工具
发布

MySQL建表时需要注意什么

MySQL建表时需要注意什么命名规范✅(大厂红线,基础但必问)统一团队规范,避免后续维护灾难,核心原则:全小写+下划线分隔,禁止驼峰和中文表名前缀统一(如t_),避免与MySQL关键字冲突见名知意,禁止无意义缩写...索引设计(面试核心考点)索引是MySQL性能的灵魂,建表时就要规划好,核心原则:少而精,按需创建必须有主键:推荐自增bigint或雪花算法ID,绝对禁止无主键表联合索引遵循最左前缀原则,过滤性高的字段放前面避免冗余索引...建表注意事项面试官:“你在项目里负责过不少数据库设计,那直接聊聊,MySQL建表的时候你最关注哪些点?...每个字段我都强制写COMMENT,表本身也要加注释,数据库就是活的文档。2️⃣字段类型别瞎选。...字符集必须是utf8mb4+utf8mb4_general_ci,能存表情包,千万别用那个假三字节的utf8。这些通常在建库时就锁死,防止建表遗漏。”面试官:“好,再深入一点。

38110

粗聊Mysql——你会建库建表么?

本文中说到的“建”,并非单纯的建一个库,或是建一张表,而是你建好的库和表在项目的运营中,是否能应付各种事件,下面我说说几个我在项目中遇到的问题以及处理的方法,算是一个小小的心得,给大家分享下。...这样就会造成一种情况,如果那天对数据库进行优化,把主键进行了重新排序(暂时没有找到mysql优化软件会优化主键,但是可以通过代码删除主键,然后从新建立自增主键来实现主键重新排序),那就彻底杯具了,栏目和文章完全对不上号了...所以我建议两表之间关联不用主键,而是单独建一个编号的字段,我们这里可以用mysql的uuid()函数做为编号,相关文献可以参考《UUID做主键好还是不好》,只所以一张表要2个主键,一个物理主键(自增id...至于性能,我本地测了下基本上没差异,网上也有人做了10W条数据的测试——《实测MYSQL UUID性能》。...所以我建议,既然定义为varchar,就代表不会涉及到计算,何不干脆定义一个通用的长度,比如varchar(50),如果真要限制长度,用程序去判断,不要让数据库来限制,不然用户输了一长串,结果mysql

8K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL 系列教程之(五)DDL 操作:建库建表

    MySQL 数据库 创建数据库 使用root登录后,可以使用 create database if not exists user default charset utf8 创建数据库,该命令的作用:...创建RUNOOB数据库,并设定编码集为utf8 删除数据库 删库有风险,动手需谨慎 drop database 库名; MySQL 数据表 创建MySQL数据表需要以下信息: 表名 表字段名 定义每个表字段...public/img/pic.jpg' )engine=innodb default charset=utf8; 实例解析: 如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为...查看表结构 desc stu; 查看建表语句 show create table stu\G 修改表结构 格式: alter table 表名 action(更改选项); 添加字段: 添加字段:alter...删除表 MySQL中删除数据表是非常容易操作的, 但是你再进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失。 DROP TABLE table_name ;

    10.4K73

    【MySQL数据库】字符集与校对集

    ‍ 哈喽大家好,本次是MySQL数据库原理系列第九期 ⭐本期内容:字符集与校对集 系列专栏:MySQL数据库 还请大家多多指教呀~ 欢迎大佬指正,一起学习,一起加油!...---- 文章目录 字符集与校对集概述 字符集 常用字符集 校对集 字符集与校对集的设置 MySQL环境 数据库 数据表 字段 总结 ---- 字符集与校对集概述 字符集 字符指计算机中保存的各种文字和符号...字符集与校对集的设置 MySQL环境 输入如下命令可以查看与字符集相关的变量。...数据库 在创建数据库时设定字符集和校对集的语法如下: [default] character set [=] charset_name [default] collate [=] collation_name...如果没有为数据表指定字符集,则自动使用数据库的字符集。

    5.7K20

    mysql数据库:最全MySQL数据库设计建库、建表规范及经验(踩过坑才能积累经验!)

    2.数据库设计 当看到项目后不能着急建库,要有一个过程。...就地区而言,如果我们要查询某个地区的记录,则数据库需要通过字符串匹配的方式来查询;如果将地区改为一个地区的代号存在表中,查询时通过地区的代号来查询,则查询的效率将大大提高。...4.16索引命名规范 对于数据库的维护建索引是很平常的事情,但是如果没有一个规范化的命名,我们对于一个表的诸多索引可能需要花上一段时间的了解。...(对于Student进行操作函数) 第二类命名:FN_[具体函数解释] 例如:FN_Spit(对字段进行拆分函数) 参考博客: 数据库设计规范 MySQL 规范 (数据库表设计规范) mysql的建表规范与注意事项...MySQL 数据库规范–设计篇 MySQL 数据库规范–开发篇 建表规范 很多是已经成文的内容,需要自己去理解,能看完这篇博客,相信你对数据库的设计,一定会有长进!

    3.6K30

    使用 Laravel 制定 MySQL 数据库备份计划任务

    背景 几天前,我登录到错误的数据库中然后干掉了 18 000 行线上数据记录。更糟糕的是,我们没有对这个数据库进行备份。然后,我决定编写一个能够自动完成数据库导出并保存到 SQL 文件的脚本。...这样我们就无需关注更多的数据库备份细节而仅需将焦点放到数据库导出和导出计划上。 导出命令 使用这个单行 snippet,你可以快速的将数据库导出到 SQL 文件。...'), config('database.connections.mysql.password'), config('database.connections.mysql.database...但现在的问题时,如何管理调度器自身。这个有点像鸡生蛋蛋生鸡的问题,但是相信我,没有这么复杂。...原文 Scheduling MySQL Backups with Laravel

    4.2K10

    修改及查看mysql数据库的字符集

    1.MySQL默认字符集 MySQL对于字符集的指定可以细化到一个数据库,一张表,一列,应该用什么字符集。...(1)编译MySQL 时,指定了一个默认的字符集,这个字符集是 latin1; (2)安装MySQL 时,可以在配置文件 (my.ini) 中指定一个默认的的字符集,如果没指定,这个值继承自编译时指定的...; (3)启动mysqld 时,可以在命令行参数中指定一个默认的的字符集,如果没指定,这个值继承自配置文件中的配置,此时 character_set_server 被设定为这个默认的字符集; (4)当创建一个新的数据库时...,除非明确指定,这个数据库的字符集被缺省设定为character_set_server; (5)当选定了一个数据库时,character_set_database 被设定为这个数据库默认的字符集; (6...)在这个数据库里创建一张表时,表默认的字符集被设定为 character_set_database,也就是这个数据库默认的字符集; (7)当在表内设置一栏时,除非明确指定,否则此栏缺省的字符集就是表默认的字符集

    5.6K90

    MySQL建库、表、增删改查语句Demo

    本页目录 库语句 建库 修改库字符集 指定库排序规则 当前库状态的建表语句 删除库 Navicat编辑数据库时执行的SQL 表语句 建表 添加字段 修改表 修改字段 修改表字符集、排序规则 截断表 删除表...添加索引 一直都是用MySQL可视化工具,几乎没碰过建库、表等语句了。...我们无法人为控制,只能建库完毕后执行修改库字符集或者建库前修改MySQL配置 CREATE DATABASE IF NOT EXISTS `school` DEFAULT CHARACTER SET...utf8 COLLATE utf8_general_ci; 修改库字符集 -- 指定库的字符集 ALTER DATABASE `school` CHARACTER SET utf8mb4 指定库排序规则...`school` 删除库 -- 删除数据库 DROP DATABASE `school表名错误就无法删除了`; Navicat编辑数据库时执行的SQL -- 查看库的字符集,这是Navicat点击"编辑数据库

    7.1K40

    MySQL从删库到跑路(二)——MySQL字符集与乱码解析

    MySQL数据库的环境变量查看使用SQL语句show variables like '%char%'; character_set_client:客户端使用的字符集,当客户端向服务器发送请求时,请求以客户端字符集进行编码...character_set_results:数据库给客户端返回时的字符集,MySQL数据库把结果集和错误信息转换为character_set_results指定的字符集,并发送给客户端。...创建数据库时如果不指定数据库的字符集,默认会使用character_set_server字符集。 创建表时如果不指定表的字符集,默认使用当前数据库字符集。...创建列时如果不指定字符集,默认使用当前表的字符集。 3、MySQL字符集的设置 A、MySQL服务器级字符集 修改MySQL服务器配置文件/etc/my.cnf文件。...B、MySQL数据库级字符集: 创建数据库时指定: CREATE DATABASE db_name [[DEFAULT] CHARACTER SET charset_name] [[DEFAULT] COLLATE

    1.4K20

    7.Mysql数据库表引擎与字符集

    7.Mysql数据库表引擎与字符集 1.服务器处理客户端请求 其实不论客户端进程和服务器进程是采用哪种方式进行通信,最后实现的效果都是:客户端进程向服务器进程发送 一段文本(MySQL语句),服务器进程处理后再向客户端进程发送一段文本...MySQL 支持非常多种存储引擎: ARCHIVE 用于数据存档(行被插入后不能再修改) BLACKHOLE 丢弃写操作,读操作会返回空内容 CSV 在存储数据时,以逗号分隔各个数据项 FEDERATED...事务:访问并更新数据库中数据的执行单元。事物操作中,要么都执行要么都不执行 2) 存储结构 MyISAM:每个MyISAM在磁盘上存储成三个文件。 .frm文件存储表结构。 .MYD文件存储数据。...而在 MySQL 中字符集表示一个字符所用最大字节长度在某些方面会影响系统的存储和性能,所以设计 MySQL的大叔偷偷的定义了两个概念: utf8mb3 :阉割过的 utf8 字符集,只使用1~3个字节表示字符...字符集的查看 MySQL 支持好多好多种字符集,查看当前 MySQL 中支持的字符集可以用下边这个语句: show charset;

    2.1K10

    mysql数据库(一):建表与新增数据建议收藏

    创建表 思考:如何把下面excel的数据保存到数据库表里面 建表语法: create table ( , , ......建表声明字段的时候,最后一个字段后面需不需要逗号? 不需要 3). 主键的特征是什么? 唯一性 4). 如果表需要支持中文数据存储和显示,需要怎么做?...只对部分字段进行初始化,则需要声明要插入的字段 在mysql中,字符串的数据是用英文的''括起来的 创建一个grade表 create table grade( id int not null PRIMARY...建表的时候每一个字段的后面用什么符号分隔?最后一个字段后面需要分隔符吗? 逗号,不需要 2. 插入数据时,只初始化部分字段与初始化所有字段时sql的不同点体现在哪里?...赋值时,对于varchar类型的字段,赋的值必须用什么符号括起来? 英文状态下的单引号'' 4. 字段声明了长度,赋值的时候应该注意什么? 插入数据的长度必须小于等于声明的长度 5.

    8.2K20

    Python数据库操作 Mysql数据库表引擎与字符集#学习猿地

    # Mysql数据库表引擎与字符集 ![](....| `ARCHIVE` | 用于数据存档(行被插入后不能再修改) | | `BLACKHOLE` | 丢弃写操作,读操作会返回空内容 | | `CSV` | 在存储数据时,...> 事物:访问并更新数据库中数据的执行单元。事物操作中,要么都执行要么都不执行 #### 2) 存储结构 MyISAM:每个MyISAM在磁盘上存储成三个文件。 + .frm文件存储表结构。...而在`MySQL`中字符集表示一个字符所用最大字节长度在某些方面会影响系统的存储和性能,所以设计`MySQL`的大叔偷偷的定义了两个概念: - `utf8mb3`:阉割过的`utf8`字符集,只使用1~...#### 字符集的查看 `MySQL`支持好多好多种字符集,查看当前`MySQL`中支持的字符集可以用下边这个语句: ```mysql show charset; ```

    92810

    Python数据库操作 Mysql数据库表引擎与字符集#学习猿地

    # Mysql数据库表引擎与字符集 ![](....|  `ARCHIVE`  | 用于数据存档(行被插入后不能再修改) | | `BLACKHOLE` |    丢弃写操作,读操作会返回空内容    | |    `CSV`    |  在存储数据时,...> 事物:访问并更新数据库中数据的执行单元。事物操作中,要么都执行要么都不执行 #### 2) 存储结构 MyISAM:每个MyISAM在磁盘上存储成三个文件。 +  .frm文件存储表结构。...而在`MySQL`中字符集表示一个字符所用最大字节长度在某些方面会影响系统的存储和性能,所以设计`MySQL`的大叔偷偷的定义了两个概念: - `utf8mb3`:阉割过的`utf8`字符集,只使用1~...#### 字符集的查看 `MySQL`支持好多好多种字符集,查看当前`MySQL`中支持的字符集可以用下边这个语句: ```mysql show charset; ```

    98910
    领券