
MySQL
文章平均质量分 75
如果时光可以倒流,我会选择在家陪伴家人
这个作者很懒,什么都没留下…
展开
-
MySQL数据库中同时存在2个及以上TIMESTAMP类型时
1.起因2021年09月22日,利用PowerDesigner把oracle数据库转换成mysql数据库时,执行某个create table报错:ERROR 1067 (42000): Invalid default value for 'end_time';感觉好神奇,为什么前面的start_time就没问题,后面的end_time就出问题了呢,为此,特此记录下;2.原因表中的第一个TIMESTAMP列(如果未声明为NULL、显示DEFAULT或ON UPDATE子句)将自动分配DEFAU原创 2021-09-24 10:46:35 · 696 阅读 · 0 评论 -
MySQL基础知识点集合
(好像没有文字的话,就没法发布,那就随便打几个字吧)原创 2021-07-01 10:47:44 · 1371 阅读 · 0 评论 -
InnoDB自增与insert
目录1、引言2、自增锁与MySQL5.1之前版本3、自增锁与MySQL5.14、自增锁与MySQL8.05、自增策略6、注意事项1、引言当我们对某个列添加自增AUTO_INCREMENT属性后,那么,该该列面对insert语句时,是遵循什么逻辑呢,下面依次说明;2、自增锁与MySQL5.1之前版本MySQL5.1版本之前,当执行一个insert语句时,会对数据表添加一个全表维度的锁,该锁确保每次只有一条insert语句在执行,每插入一行数据,就会生成一个自增数据,所以原创 2021-01-22 13:45:18 · 267 阅读 · 0 评论 -
索引总结
目录1、定义2、引擎对索引的支持3、B树与B+树3.1、简介3.2、磁盘与B+树4、索引分类4.1、按照功能逻辑来分4.2、按照物理实现方式来分5、最左匹配原则5.1、联合索引的最左匹配原则5.2、最左匹配原则5.3、注意6、引用《MySQL实战45讲》案例6.1、建表语句6.2、索引结构示意6.3、select语句执行过程7、回表与覆盖索引8、索引下推9、常见的索引失效场景9.1、总结9.2、为什么会导致索引失效10、原创 2021-01-19 15:39:44 · 571 阅读 · 0 评论 -
最左匹配原则
KEY `idx_XXX` (`col1`,`col2`) USING BTREE 索引的底层是B+树结构,联合索引的结构也是B+树,只不过键值数量不是一个,而是多个,但是由于构建一颗B+树只能根据一个值来构建,因此数据库依据联合索引最左的字段来构建B+树;(通俗来讲就是col1和col2组成联合索引,但B+树只能从里面二选一来构建索引,所以,MySQL就选择了col1来构建B+树索引,即最左侧的列来构成联合索引,所以就叫做最左匹配原则)当我们执行:where col1 = xxxx...原创 2021-01-18 10:50:06 · 369 阅读 · 0 评论 -
order by与limit拓展
目录1 order by注意事项2 limit注意事项3 总结1 order by注意事项 select name,age from students order by age asc; select name,age from students order by age asc limit 10; 如果order by的列有相同的值时,则MySQL随机选取这些行,这就导致了在【age】字段相同的情况下,同一个SQL语句执行多次的结果顺序不一样,为了保证每次返回原创 2021-01-18 10:36:38 · 185 阅读 · 0 评论 -
MySQL-基础7-事务
目录事务概念分类事务的实现概念redo概念redo log blockredo log groupundo事务控制语句隐式提交的SQL语句事务的隔离级别MySQL数据库分布式事务事务概念InnoDB默认的事务隔离级别是read repeatable,其完全符合ACID特定,而有些公司的产品多少在某些方面没有严格满足事务的ACID标准,下面分别是ACID详解:①atomicity原子性:指整个数据库事务是不可分割的工作单位,只有使事务中所原创 2021-01-04 10:11:46 · 332 阅读 · 0 评论 -
MySQL-基础6-锁
目录锁lock与latchInnoDB中的锁锁类型一致性非锁定读一致性锁定读自增长与锁外键和锁锁的算法行锁的3种算法解决Phantom Problem锁问题脏读不可重复读丢失更新阻塞死锁锁升级锁InnoDB会在行级别上对表数据上锁,数据库系统使用锁就是为了支持对共享资源进行并发访问,提供数据的完整性和一致性;有多少种数据库,就可能有多少种锁的实现方法,你对某个特定关系型数据库系统的锁模型有一定经验,但并不意味着知道其他数据库原创 2021-01-04 10:10:53 · 436 阅读 · 0 评论 -
MySQL-基础5-索引与算法
目录InnoDB存储引擎索引数据结构与算法二分查找法二叉查找树和平衡二叉树B+树B+树的插入操作B+树的删除操作B+树索引聚集索引辅助索引B+树索引的分裂B+树索引的管理索引管理Fast index creationOnline schema changeOnline DDLCardinality值概念InnoDB引擎的Cardinality统计B+树索引的使用联合索引覆盖索引优化器选择不使用索引的情况索引...原创 2021-01-04 10:09:53 · 1074 阅读 · 0 评论 -
MySQL-基础4-使用InnoDB引擎的表
目录索引组织表InnoDB逻辑存储结构表空间段区页行InnoDB行记录格式Compact行记录格式Redundant行记录格式行溢出数据Compressed和Dynamic行记录格式CHAR的行结构存储Named File Formats机制约束数据完整性约束的创建与查找约束和索引的区别对错误数据的约束ENUM和SET约束触发器与约束外键约束视图视图作用物化视图分区表分区概念分区类型:range分原创 2021-01-04 10:06:54 · 645 阅读 · 0 评论 -
MySQL-基础3-MySQL文件与InnoDB存储引擎文件
目录MySQL参数文件日志文件错误日志慢查询日志查询日志二进制日志扩展:MySQL事务隔离级别扩展:幻读套接字文件pid文件表结构定义文件InnoDB存储引擎文件表空间文件重做日志文件MySQL参数文件默认情况下,MySQL实例会按照一定顺序在指定的位置来读取,可以通过mysql --help|grep my.cnf来查找。可以通过命令show variables来查看数据库配置的所有参数,也可以使用like来过滤参数名,从MySQL.原创 2021-01-04 10:05:28 · 351 阅读 · 0 评论 -
MySQL-基础2-InnoDB存储引擎
目录InnoDB体系架构后台线程Master ThreadIO ThreadPurge ThreadPage Cleaner Thread内存缓冲池LRU列表/Free列表/Flush列表重做日志缓冲额外的内存池CheckpointInnoDB关键特性特性1:插入缓存insert bufferinsert buffer升级成change bufferInsert buffer内部原理Insert buffer bimapMerge in原创 2021-01-04 10:04:38 · 845 阅读 · 5 评论 -
MySQL-基础1-体系结构和存储引擎
目录数据库与实例体系架构存储引擎数据库与实例数据库database:物理操作系统文件或其他形式文件类型的集合。通过定义可以看到,数据库database强调的是物理文件;实例instance:MySQL数据库由后台线程以及一个共享内存区组成,共享内存可以被运行的后台线程所共享,数据库实例才是真正用于操作数据库文件的;通过定义可以看到,所谓的实例,指的就是数据库程序启动之后,运行在内存中的一整套程序。在MySQL数据库中,一个实例对应一个数据库,一个数据库也对应一个实例,但在集.原创 2021-01-04 10:03:25 · 113 阅读 · 0 评论 -
Win10 + mysql-8.0.21
安装从https://dev.mysql.com/downloads/mysql/下载mysql-8.0.21-winx64.zip,然后解压到安装目录。然后“以管理员身份运行”cmd,通过cd命令进去mysql的bin目录,然后敲入:mysqld.exe -install通过Win + R快捷键来打开搜索窗口,然后输入services.msc来打开本地服务:如果在启动过程中,发生如下错误:解决办法如下:①确保my.ini文件为ANSI格式;②在安装目录下找到data文件原创 2020-07-16 09:36:14 · 1376 阅读 · 2 评论 -
TIMESTAMP数据类型
MySQL目前暂不支持列的default函数,如果你想把某列的默认值设置为当前日期/时间的话,可以使用TIMESTAMP数据类型,下面详说TIMESTAMP数据类型的变体:①timestamp default current_timestamp on update current_timestamp在创建新纪录、更新现有记录的时候都对该列进行刷新(说白了就是insert和update的时候数据...原创 2019-01-04 15:52:21 · 30178 阅读 · 0 评论 -
update inner join
说实话,当我第一次接触到该语句时,我当时是震惊的,MYSQL竟然有这个语法。我当时的需求就是:从表A中查询出所有记录来,然后根据记录ID来更新表B,如果用java代码的话,那就只能是for循环遍历List了。update querylog log inner join querylog_xxx xxxon log.msgid = xxx.msgidset ...原创 2019-01-04 16:19:10 · 2090 阅读 · 0 评论