MySQL 充电

在MYSQL中,若一张表里面不存在varchar,文本以及其变形,blob及其变形的对齐的话,那么张这个表其实也叫静态表[static / fixed],即该表的row_format是fixed,就是它的优点在于快,缺点是减少了多余的空间。那么实际开发中,这种表很少,大部分表的相对类型都是有很多种的,那么这种表就叫做:dynamic:动态表,优点是节省空间,缺点是读取的时间的累积

innodb存储引擎下没建主键:[https://blog.csdn.net/Jmayday/article/details/106229153](https://blog.csdn.net/Jmayday/article/details/106229153),[参考链接]()如果您没有为表定义的PRIMARY KEY,仅MySQL选择如果表中没有这样的索引,InnoDB会在内部生成一个聚集索引,其中的行由InnoDB分配给该表中行的行ID排序。行ID是一个6字节的片段,插入插入新行而单调增加。因此,按行ID排序的行实际上在插入顺序上。Innodb表中在没有没有主键的情况下会生成一个在6个字节空间的自动增长主键,可以用从表中选择_rowid来查询。当在表里设置了主键之后,_rowid就是对应主键,从表中选择_rowid的是对应的主键值。

如果在创建表时没有显式式定义主键,则InnoDB存储引擎会按如下方式选择或创建主键:1首先判断表中是否有非空的整形的唯一索引,如果有,则该列即主要键。 (如果不是整体,还不可以)2如果不符合上述条件,InnoDB存储引擎自动创建一个6字节大小的指针(无法用选择查看)这里将id设置唯一,不能作为_rowid

![在这里插入图片描述(https://img-blog.csdnimg.cn/20201005163527543.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZZ_4_FF_n_Z_F_Z_F_Z_F_Z_F_Z_F_Z_F_Z_F_Z_F_Z_F_Z_F_Z_F_Z_F_Z_F_Z_F_Z_F_Z_F_Z_F_Z_F_Z_F_Z_F_Z_F_Z_F_Z_F_Z_F_Z_F_Z_F_Z_F_Z_F_Z_F_Z_F_Z_F_Z_F_L)加上非空,ID就作为_ ROWID在这里插入图片描述(https://img-blog.csdnimg.cn/20201005163347486.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZZ_4_F_Z_F_Z

![在这里插入图片描述](https://img-blog.csdnimg.cn/20201005164041441.png#pic_center)

uuid

UUID是指Universally Unique Identifier,翻译为中文是通用唯一识别码,UUID的目的是让分散系统中的所有元素都能有唯一的识别信息。如此一来,每个人都可以创造不与其他人冲突是由一组32位数的16二进制数字构成,是故UUID理论上的总数为16 ^ = 32 ^ = 128 ^,约等于3.4 x 10 ^ 123 ^意味着若每纳秒产生1百万个UUID,要花100亿年才会将所有UUID用完

mysql中utf8和utf8mb4

要在Mysql中保存4个字节长度的UTF-8字符,需要使用utf8mb4字符集,但只有5.5.3版本以后的才支持(查看版本:select version();)

utf8mb4是什么

4字节unicode:mb4就是大多数字节4的意思,专门用于兼容四字节的unicode:好在utf8mb4是utf8的超集,除了将编码转换utf8mb4外不需要做其他转换。当然,为了节省空间,一般情况下使用utf8也就够了。

####既然utf8能够存储下大部分中文汉字,那为什么还要使用utf8mb4 4字节异常:mysql支持的utf8编码最大字符长度为3字节,如果遇到4字节的宽字符就会插入异常了三个字节的UTF-8最大能编码的Unicode字符是0xffff,也就是Unicode中的基本多文种平面(BMP)。实际上,任何没有基本多文本平面的Unicode字符,都无法使用的MySQL的UTF8字符集存储。包括表情符号表情(表情符号是一种特殊的Unicode编码,常见于IOS和机器人手机上),和很多不常用的汉字,以及任何添加的Unicode字符等等。//www .cnblogs.com / Renyi-Fan / p / 11065692.html)

1.模型:联接类型下面的各种联接类型,按照从最佳类型到最坏类型进行排序:(重点看ref,rang,index)系统:表只有一行记录(等于系统表),这是const类型的特例,平时不会出现,可以忽略不计const:表示通过索引一次就找到了,const使用比较主键或唯一索引。因为只需匹配一行数据,所有很快。如果将主键插入其中列表中,mysql立即注意:ALL全表扫描的表记录最小的表如t1表ref:非唯一性索引扫描,返回单独的单独值的所有行。本质上也是一种索引访问,它返回所有匹配一个单独的值的行,,然而他可能会找到多个符合条件的行,所以它应该属于寻找和扫描的混合体。范围:只检索给定范围的行,使用一个索引来选择行。在哪里语句中出现了,在之间,<,>,在等的查询。这种索引列上的范围扫描比全索引扫描要好。只需要开始于某个点,结束于另一个点,不用扫描全部索引,索引:全索引扫描,,索引与ALL区别为索引类型只遍历索引树这通常为所有块,应为索引文件通常比数据文件小(索引与ALL虽然都是读全表,但索引是从索引中读取,而ALL是从硬盘读取)ALL:全表扫描,遍历全表以找到匹配的行

2.key_len:显示MySQL实际决定使用的索引长度。如果索引是NULL,则长度为NULL。如果不是NULL,则为使用的索引长度。:1。定长段,int占用4个字节,日期占用3个字节,char(n)占用n个字符2。变长长度varchar(n),则占用n个字符+两个字节3。Latin1编码的,一个字符占用一个字节,gdk编码的,对于所有索引索引,如果设置为NULL,则还需要1个字,三个字节(由于我数据库使用的是拉丁)节参考:[最左长度原则+解释](https://www.cnblogs。 com / ljl150 / p / 12934071。)。html)联合索引中是否能用上索引:看是否是按索引顺序排序

ddl dml dql dcl

SQL语言一共分为4大类:数据定义语言DDL,数据操纵语言DML,数据查询语言DQL,数据控制语言DCL 1.数据定义语言DDL(数据定义语言)对象:数据库和表关键字:create alter drop truncate(删除当前表再新建一个一模一样的表结构)2。数据操纵语言DML(Data Manipulation Language)对象:纪录(行)关键词:插入更新删除插入:插入学生值(01,‘tonbby’,99) ; (插入)插入学生(id,名称)值(01,‘tonbby’);(插入指定的字符串)更新:更新学生集名称=‘tonbby’,分数= '99’其中id = 01;删除:从tonbby中id = 01删除;注意:开发中很少使用删除,删除有物理删除和逻辑删除,其中逻辑删除可以通过给表添加一个分区(isDel),若变量1,代表删除;若变量0,代表没有删除。然后,对数据的删除操作就变成了更新操作了。截断和删除的区别:截断是删除表,再重新创建这个表属于DDL,删除是一条删除表中的数据,属于DML。

[参考](https://www.cnblogs.com/tonbby/p/tonbby.html)

日志

MySQL 中的日志:binlog,undo log,redo log,relay log,error log,slow log
在这里插入图片描述
redo log,undo log 只存在于 innodb 中
MySQL 以前没有 innodb,默认是 myisam,myisam 不支持事务,5.5 版本以前 innodb 以插件形式存在于 MySQL 中,5.5 之后是默认的存储引擎

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值