MySQL
文章平均质量分 73
MySQL学习笔记
也曾眼眸有光
天空即在我们头上也在我们脚下
展开
-
Mysql数据重复问题处理
group by "重复字段" having count(1) > 1 ) b);group by "重复字段" having count(1) > 1 )group by "重复字段" having count(1) > 1 );where "字段" = 'xx'where "字段" = 'xx'where "字段" = 'xx'where "字段" = 'xx'(select "重复字段"(select "重复字段"where " 字段"= 'xx'where "字段" = 'xx'原创 2022-09-08 10:24:58 · 651 阅读 · 0 评论 -
部分会导致索引失效的情况
使所有索引都有效的方案:将c放到建立索引的语句的最后,例如:建立(a,b,d,c)的索引(a,b,d的顺序可以任意调整),这样执行sql的时候,优化器会帮我们调整WHERE后a,b,c,d的顺序(将c放到最后),让我们用上索引。其实单个索引字段,使用is null或is not null时,是可以命中索引的,但是两个不同索引字段用or连接时,索引就失效了。叶子节点的b值为1,2,1,4,1,2,它不是有序的,因此不能使用(a,b)联合索引。假设USER表中的user_id列有索引,age列没有索引。...原创 2022-08-11 14:03:32 · 2525 阅读 · 0 评论 -
Mysql时间计算相关函数
代码】Mysql时间计算相关函数。原创 2022-08-11 12:32:05 · 223 阅读 · 0 评论 -
MySQL的MVCC多版本并发控制
为了解决在并发访问数据库系统时在保证数据一致性的情况下同时不降低读写效率而存在的技术对于使用 InnoDB 存储引擎的表来说,它的聚簇索引记录中都包含两个必要的隐藏列trx_id :每次一个事务对某条聚簇索引记录进行改动时,都会把该事务的 事务id 赋值给 trx_id 隐藏列。roll_pointer :每次对某条聚簇索引记录进行改动时,都会把旧的版本写入到 undo日志 中,然后这个隐藏 列就相当于一个指针,可以通过它来找到该记录修改前的信息。数据库每次对记录的改动都会生成一个undo日志,将旧记录放入原创 2022-06-23 16:19:49 · 207 阅读 · 0 评论 -
MySQL事务的隔离级别
并发务带来的问题脏写(Dirty Write):如果一个事务修改了另一个未提交事务修改过的数据,那就意味着发生了脏写。 脏读(Dirty Read):如果一个事务读到了另一个未提交事务修改过的数据,那就意味着发生了脏读。 不可重复读(Non-repeatable Read):如果一个事务只能读到另一个已经提交的事务修改过的数据,并且其他事务每对该数据进行一次修改并提交后,该事务都能查询得到最新值,那就意味着发生了不可重复读。 幻读(Phantom):如果一个事务先根据某些条件查询出一些记录,之后另一个事务有原创 2022-06-23 16:18:58 · 255 阅读 · 0 评论 -
MySQL事务
事务(transaction): 在数据库一般把需要保证原子性 、 隔离性 、 一致性和持久性 的一个或多个数据库操作称之为一个事务 。事务是一个完整不可分割的整体,在数据库中一般认为要么全做,要么全不做的规则称为原子性。多个事务之间相互独立。每个事务的对象对其他事务的操作对象相互分离,事务提交前对其他事务不可见。以对于现实世界中状态转换对应的某些数据库操作来说,不仅要保证这些操作以原子性的方式执行完成,而且要保证其它的状态转换不会影响到本次状态转换,这个规则被称之为隔离性 。如果数据库中的数据全部符合现实原创 2022-06-23 15:51:41 · 341 阅读 · 0 评论 -
MySQL索引合并
一般认为使用到多个索引来完成一次查询 的执行方法称之为: index merge ,具体的索引合并算法有下边三种。Intersection合并Intersection 翻译过来的意思是 交集 。这里是说某个查询可以使用多个二级索引,将从多个二级索引中查询到的结果取交集,也就是得到主键值的交集,然后再去回表查询到需要得到的信息。Intersection索引合并的适用场景是单独根据搜索条件从某个二级索引中获取的记录数太多,导致回 表开销太大,合并后可以明显降低回表开销,从而使用索引合并。MySQL 在某些特定的原创 2022-06-23 15:37:10 · 1184 阅读 · 0 评论 -
MySQL访问方法
const一般认为通过主键或者唯一二级索引列来定位一条记录的访问方法定义为:const。const表示常数级别,代价是可以忽略不计的。不过这种 const 访问方法只能在主键列或者唯一二级索引列和一个常数进行等值比较时才 有效,如果主键或者唯一二级索引是由多个列构成的话,索引中的每一个列都需要与常数进行等值比较,这个 const 访问方法才有效(这是因为只有该索引中全部列都采用等值比较才可以定位唯一的一条记录)。执行过程:聚簇索引(主键索引) 唯一二级索引: ref一般把搜索条件为二级索引列与常数等值比较,原创 2022-06-23 15:35:57 · 619 阅读 · 0 评论 -
MySQL索引
索引主要用来提高查询效率,索引和实际的数据都是存储在磁盘的,只不过在进行数据的读取的时候会优先把索引加载的内存中。索引的本质是一种数据结构索引特点优点:大大加快查询速度使用分组和排序时,可以显著减少查询时分组和排序的时间创建唯一索引,能够保证数据库中每一行数据的唯一性在实现数据的参考完整性方面,可以加快和表之间的连接缺点创建索引和维护索引需要消耗时间,并且随着数据量的增加,时间也会增加索引需要占据磁盘空间对数据表中的数据进行增加,修改,删除时,索引也要动态的维护,降低了维护的速度按数据结构分类:Hash索引原创 2022-06-14 11:25:33 · 145 阅读 · 0 评论 -
MySQL的SELECT注意事项,正则表达式,常用函数,explain的简单解析
使用ORDER BY和LIMIT关键字可以检索出表中最高后最低的值。MySQl在查询执行匹配时默认不区分大小写。单引号用来限定字符串,如果将值与串类型的列进行比较,则需要限定引号,用来与数值列进行比较的值不要用引号。在任何时候使用具有AND和OR操作符的WHERE字句,都应该使用圆括号明确的分组操作符。MySQL支持使用NOT对IN、BETWEEN和 EXISTS子句取反,这与多数其他DBMS允许使用NOT对各种条件 取反有很大的差别。通配符的使用(通配符搜索的处理一般要比其他搜索所花时间长)不要过度使用通原创 2022-06-14 11:15:54 · 449 阅读 · 0 评论 -
MYSQL简单介绍
表:某种特定类型数据的结构化清单。模式:关于数据库和表的布局及特性的信息主键(primary Key):一列(或一组列),其值能够唯一区分表中的每一行。真实的数据在不同的存储引擎中存放的格式一般是不同的主键的强制规则:任意两行都不具有相同的主键值每个行都必须具有一个主键值(主键列不允许有NULL值)主键的最好习惯:不更新主键列中的值不重用主键列的值不在主键列中使用可能会更改的值。MYSQL查询出的数据行数是从行0开始的,类似数组SQL(发音为字母S-Q-L或sequel)是结构化查询语言(Structure原创 2022-06-14 11:11:23 · 408 阅读 · 0 评论