MySQL
强迫症Kobe
与其焦虑成疾,不如静心学习。
展开
-
MySQL5.7创建用户并授权
MySQL 5.7版本的user表中已经没有了password字段,取而代之的是 authentication_string,同时user表中还有一些没有默认值的字段,如果还通过insert的方式插入新用户,会很麻烦。在网上找到一篇写的挺好的,转载到这里。一. 创建用户命令:CREATEUSER'username'@'host'IDENTIFIEDBY'password';...转载 2019-10-31 11:05:13 · 13665 阅读 · 0 评论 -
MySQL InnoDB锁机制之Gap Lock、Next-Key Lock、Record Lock解析
MySQL InnoDB支持三种行锁定方式:l 行锁(Record Lock):锁直接加在索引记录上面,锁住的是key。l 间隙锁(Gap Lock):锁定索引记录间隙,确保索引记录的间隙不变。间隙锁是针对事务隔离级别为可重复读或以上级别而已的。l Next-Key Lock :行锁和间隙锁组合起来就叫Next-Key Lock。 默认情况下,InnoDB工作在可重...转载 2018-09-04 14:10:52 · 1379 阅读 · 0 评论 -
数据库索引以及优化
是看到的关于数据库索引以及优化的比较好的文章汇总,会慢慢更新,碰到了就搬运过来:讲解索引的原理和作用:https://www.cnblogs.com/aspwebchh/p/6652855.html讲解利用联合索引对非聚集索引的优化问题:https://www.cnblogs.com/aspwebchh/p/8383532.html#4014903...转载 2018-08-12 22:36:48 · 291 阅读 · 0 评论 -
MySQL索引原理
本文将只关注于B Tree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。MySQL索引数据结构与算法分析我们建立索引,其实就是为了构建一种数据结构,可以在上面应用一种高效的查询算法,最终提高数据的查询速度。1. 索引的本质MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结...转载 2018-05-08 00:24:16 · 196 阅读 · 0 评论 -
Mysql 查询所有表的行数和大小
SELECT TABLE_NAME,TABLE_ROWS,DATA_LENGTH/1024/1024 "DATA_LENGTH",CREATE_TIME,TABLE_COLLATION FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'lir' ORDER BY TABLE_ROWS DESC[plain] view plain copy[d...转载 2018-04-11 19:37:47 · 5711 阅读 · 0 评论 -
MySQL中的锁(表锁、行锁,共享锁,排它锁,间隙锁)
本文参考: http://mysqlpub.com/thread-5383-1-1.html http://blog.csdn.net/c466254931/article/details/53463596 有很多是转载合并过来。锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的 计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据...转载 2018-03-22 00:34:17 · 162 阅读 · 0 评论 -
mysql共享锁与排他锁
mysql锁机制分为表级锁和行级锁,本文就和大家分享一下我对mysql中行级锁中的共享锁与排他锁进行分享交流。共享锁又称为读锁,简称S锁,顾名思义,共享锁就是多个事务对于同一数据可以共享一把锁,都能访问到数据,但是只能读不能修改。排他锁又称为写锁,简称X锁,顾名思义,排他锁就是不能与其他所并存,如一个事务获取了一个数据行的排他锁,其他事务就不能再获取该行的其他锁,包括共享锁和排他锁,但是获取排他锁...转载 2018-03-22 00:30:53 · 139 阅读 · 0 评论 -
MySQL中数据库重命名
表重名的话是rename table old_table to new_table; So,库的重命名最简单快捷的办法是 rename old_db to new_db么? 随便建了个测试库test,试着执行了一下臆想的rename命令,好吧,不行。搜了一下文档才发现,原来早期MySQL版本(5.1.7)中是有过这个命令的,后来出于安全考虑又在MySQL 5.1.23中移除了。。。没事,咱转载 2018-02-07 19:36:30 · 1802 阅读 · 0 评论 -
20条数据库设计最佳实践
通常情况下,可以从两个方面来判断数据库是否设计的比较规范。一是看看是否拥有大量的窄表,二是宽表的数量是否足够的少。若符合这两个条件,则可以说明这个数据库的规范化水平还是比较高的。当然这是两个泛泛而谈的指标。为了达到数据库设计规范化的要求最好满足以下20条规则: 1、使用定义良好的和一致的名称表和列(如School、StudentCourse CourseID…)。2、使用单一的表名(即转载 2018-02-07 16:30:12 · 123 阅读 · 0 评论 -
MySQL数据库中CHAR与VARCHAR之争
在数据库中,字符型的数据是最多的,可以占到整个数据库的80%以上。为此正确处理字符型的数据,对于提高数据库的性能有很大的作用。在字符型数据中,用的最多的就是Char与Varchar两种类型。前面的是固定长度,而后面的是可变长度。现在我们需要考虑的是,在什么情况下使用Char字符型数据,什么情况下采用Varchar字符型数据。在这部分内容中,我就跟大家来探讨一下这个话题。 一、VA转载 2018-02-06 14:13:31 · 327 阅读 · 0 评论 -
MySql 中 varchar 和varchar 的区别
一般初学会认为,二者占用的空间是一样的。比如说我存储5个char,二者都是实际占用了5个char了【勘误:varchar在实际存储的时候会多一个byte用来存放长度】。但是深入一下,设计数据库的时候,二者一样吗?答案是否定的【至少varchar类型需要在数据之前利用一个或者两个字节来存储数据的长度】【二者在内存中的操作方式也是不同的,下面的例子中有体现】。看下面的例子。如现在用户需要存转载 2018-02-06 14:10:50 · 515 阅读 · 0 评论 -
使用Navicat for MySQL创建存储过程
方法一:1. 利用工具栏打开【查询】--【新建查询】窗口编写sql:注意:如果不用参数,红色方框里面的左右括号也是必要的(下划线的地方的分号不能少,不然执行时会报错)2.执行sql创建存储过程,然后直接写SQL调用存储过程(CALL XXOO('财务部'))方式二:1.打开navicat选择要创建存储过程的数据库. 利用工具栏打开【函数】--【新建函数】:2.添加所要输入的参数,选择模式和类型(注...转载 2018-02-09 14:15:59 · 21129 阅读 · 0 评论 -
MySQL:什么时候NOT IN不等于NOT EXISTS
当你想对两个表进行差分运算时,你有两种选择:使用NOT EXISTS 的子查询或者NOT IN 。后者可以说更易于编写,可以使查询方法更加明显。现代数据库系统可以优化两种执行计划从而查询到类似的结果,可以在外部和内部处理查询的相关性(我说“现代”,因为在上世纪90年代中期我已经吸取教训,当时我正在使用Oracle 7.3,它没有这个功能)。两种结构有一个很大的不同:如果子查询返回的结果为N转载 2018-02-03 13:13:11 · 2423 阅读 · 0 评论