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

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

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

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

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

    创建RUNOOB数据库,并设定编码集为utf8 删除数据库 删库有风险,动手需谨慎 drop database 库名; MySQL 数据表 创建MySQL数据表需要以下信息: 表名 表字段名 定义每个表字段...MySQL数据表。...查看表结构 desc stu; 查看建表语句 show create table stu\G 修改表结构 格式: alter table 表名 action(更改选项); 添加字段: 添加字段:alter...AUTO_INCREMENT=1 更改表类型: ALTER TABLE 表名称 ENGINE="InnoDB" 关于表类型 MySQL数据库中的表类型一般常用两种:MyISAM和InnoDB 区别:...删除表 MySQL中删除数据表是非常容易操作的, 但是你再进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失。 DROP TABLE table_name ;

    10.3K73

    MySQL建表时需要注意什么

    MySQL建表时需要注意什么命名规范✅(大厂红线,基础但必问)统一团队规范,避免后续维护灾难,核心原则:全小写+下划线分隔,禁止驼峰和中文表名前缀统一(如t_),避免与MySQL关键字冲突见名知意,禁止无意义缩写...索引设计(面试核心考点)索引是MySQL性能的灵魂,建表时就要规划好,核心原则:少而精,按需创建必须有主键:推荐自增bigint或雪花算法ID,绝对禁止无主键表联合索引遵循最左前缀原则,过滤性高的字段放前面避免冗余索引...建表注意事项面试官:“你在项目里负责过不少数据库设计,那直接聊聊,MySQL建表的时候你最关注哪些点?...很多人建表就顺手INDEX(user_id)、INDEX(create_time),你怎么看?”应聘者‍:“这绝对是重灾区。...这些通常在建库时就锁死,防止建表遗漏。”面试官:“好,再深入一点。如果表里需要存大文本,比如文章内容,或者用户扩展属性经常变,你怎么设计?”应聘者:“大字段拆表。

    20310

    MySQL建表数据类型的选择

    如果查询中包含可为 NULL 的列,对 MySQL 来说更难优化,因为可为 NULL 的列使得索引、索引统计和值比较都更复杂。特别是计划在列上建索引,就应该尽量避免设计成可为 NULL 的列。...MySQL 可以为整数类型指定宽度,例如 int(11),对大多数应用这是没有意义的:它不会限制值的合法范围,只是规定了 MySQL 的一些交互工具(例如 MySQL 命令行客户端)用来显示字符的个数。...MySQL 浮点型和定点型可以用类型名称后加(M,D)来表示,M 表示该值的总共长度,D 表示小数点后面的长度。...与其它类型不同,MySQL 把每个 blob 和 text 值当作一个独立的对象处理。...枚举(enum)类型 MySQL 在内部会将每个值在列表中的位置保存为整数,并且在表的 .frm 文件中保存 “数字-字符串” 映射关系的 “查找表”。

    7.5K10

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

    本页目录 库语句 建库 修改库字符集 指定库排序规则 当前库状态的建表语句 删除库 Navicat编辑数据库时执行的SQL 表语句 建表 添加字段 修改表 修改字段 修改表字符集、排序规则 截断表 删除表...添加索引 一直都是用MySQL可视化工具,几乎没碰过建库、表等语句了。...库语句 建库 -- 数据库配置文件default-character-set是utf8_mb3,则会导致创建的表是utf8mb3。...我们无法人为控制,只能建库完毕后执行修改库字符集或者建库前修改MySQL配置 CREATE DATABASE IF NOT EXISTS `school` DEFAULT CHARACTER SET...直接执行就行,没有参数 SELECT @@character_set_database, @@collation_database 表语句 建表 添加字段 修改表 修改字段 修改表字符集、排序规则 截断表

    7K40

    hibernate自动建表

    表结构和数据总是在程序执行的时候无端的修改,折腾了好长时间,查了很长时间hibernate的数据库映射文件和接口程序,始终没有发现有什么错误,到最后才发现了它!...SessionFactory is closed explicitly. eg. validate | update | create | create-drop 其实这个参数的作用主要用于:自动创建|更新|验证数据库表结构...其它几个参数的意思: validate               加载hibernate时,验证创建数据库表结构 create                  每次加载hibernate,重新创建数据库表结构...create-drop        加载hibernate时创建,退出是删除表结构 update                 加载hibernate自动更新数据库结构 如果发现数据库表丢失或新增

    2.9K10

    MySQL数据库建表、优化、算法、分区分库分表总结

    建表 一、主键设置 主键为什么不推荐有业务含义? 1、因为任何有业务含义的列都有改变的可能性,主键一旦带上了业务含义,那么主键就有可能发生变更。...4、如果使用非自增主键(如UUID等),由于每次插入主键的值近似于随机,因此每次新纪录都要被插到现有索引页得中间某个位置 此时MySQL不得不为了将新记录插到合适位置而移动数据,甚至目标页面可能已经被回写到磁盘上而从缓存中清掉...自增主键用完了怎么办 无符号整型存储范围为0~4294967295,约43亿。一旦自增id达到最大值,此时数据继续插入是会报一个主键冲突异常。...什么情况下应不建或少建索引?...1、表记录太少 2、经常插入、删除、修改的表 3、数据重复且分布平均的表字段,假如一个表有10万行记录,有一个字段A只有T和F两种值,且每个值的分布概率大约为50%,那么对这种表A字段建索引一般不会提高数据库的查询速度

    7K31

    MySQL分库分表中间件-RadonDB性能测试

    表,每张表100万的数据集,争取数据全部在MySQL的Buffer Pool缓存命中请求。...基于64个子表的主建等值操作资源使用情况(MySQL节点选择MySQL04) ? ? ? ? ?...基于基于hash拆分,对于区间查询和非拆分键的查询,存在请求扩大的问题,这种请求会大量的无效的查询会给后端MySQL节点带来CPU较高的问题(现有业界的中间件都在这样的问题,例如: MyCAT) 后端节点不够多的情况下...,不要拆分太多分表,为了应对更多的分表问题,也可以考虑对后端MySQL引入更强劲的CPU,从而获得性能提升。...反思优化实战 假设生产环境我们遇到Radon有性能瓶颈,我们怎么升级呢?在本次测试中使用的16C16G的机器,属于特低端硬件环境。

    1.7K10

    MySQL数据表操作全指南:建表、修改、删除一步到位【MySQL系列】

    本文全面梳理 MySQL 数据库表的创建(CREATE)、修改(ALTER)、删除(DROP)三大操作,涵盖 DDL 语句基础、常用字段类型选型、主外键与约束设计、规范化建模思路,并结合典型业务场景展示...DDL 语句详解 2.1 CREATE TABLE 最常见的建表语句,用于定义新表及其列、索引、约束等。...TEXT / MEDIUMTEXT / LONGTEXT:海量文本,不建议建索引。 3.3 时间与日期类型 DATE:仅含年月日。 DATETIME:精确到秒,不受时区影响。...REFERENCES `user`(`id`) ON DELETE CASCADE ON UPDATE RESTRICT; 4.4 其他约束 NOT NULL:防止空值 CHECK(MySQL...常见操作与注意事项 DDL 原子性:MySQL 8.0+ 已支持部分 DDL 原子,低版本需谨慎并在运维窗口执行; ALTER ONLINE:使用在线 DDL(如 ALGORITHM=INPLACE)减少业务中断

    3.3K10

    一个MySQL建表需求的讨论和引导

    昨天收到一个业务同学的需求邮件,一般有些复杂的需求业务同学会发邮件告知我们,需要我们评估之后再做交付,我看了邮件之后,发现这个需求好像有点别扭,大体的意思是在中间件的环境中创建一张表,表结构如下: CREATE...所以最后经过讨论和评估,其实没有必要在中间件环境中进行该类业务的处理,相比而言,性价比也不高。...而基于中间件的服务承接的是偏核心的业务,对于性能和负载的影响较为敏感,如果稀里糊涂就执行了,其实后面会带来一些其他的隐患。...各大平台都可以找到我 微信公众号:杨建荣的学习笔记 Github:@jeanron100 CSDN:@jeanron100 知乎:@jeanron100 头条号:@杨建荣的学习笔记 网易号:@杨建荣的数据库笔记...大鱼号:@杨建荣的数据库笔记 腾讯云+社区:@杨建荣的学习笔记

    3.5K20
    领券