![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MySQL
文章平均质量分 63
程序员老石
当你的才华满足不了你的野心,你应该滚去学习
展开
-
distinct 和 group by有什么区别
大部分场景下distinct是特殊的groupby,但是二者也有细微的区别,比如他们在查询结果集上,使用的具体业务场景上,以及性能上都是不同的。原创 2022-07-18 17:34:37 · 2953 阅读 · 0 评论 -
mysql中某张表打不开解决方法
出现的问题:数据库中的某张表一直打不开,但是其他表都正常原因:可能是针对这张表进行的某些操作导致表锁死了,使用命令查看进程查看status列有lock标识,表示被锁,info表示操作信息,id列表示进程id解决方法:杀死对应的进程即可...原创 2022-06-22 18:00:26 · 1965 阅读 · 0 评论 -
MySQL中的limit用法详解
limit的详细用法1、用于强制返回指定的记录行数在查询中,经常要返回前几条或者中间某几行数据时,用到limit语法如下:select * from table_name limit [offset,] rows参数说明:offset:指定第一个返回记录行的偏移量(即从哪一行开始返回),注意:初始行的偏移量为0。rows:返回具体行数。总结:如果limit后面是一个参数,就是检索前多少行。如果limit后面是2个参数,就是从offset+1行开始,检索rows行记录。举例:select原创 2022-05-05 10:24:21 · 164557 阅读 · 13 评论 -
Mysql索引优化实战一
CREATE TABLE `employees` (2 `id` int(11) NOT NULL AUTO_INCREMENT,3 `name` varchar(24) NOT NULL DEFAULT '' COMMENT '姓名',4 `age` int(11) NOT NULL DEFAULT '0' COMMENT '年龄',5 `position` varchar(20) NOT NULL DEFAULT '' COMMENT '职位',6 `hire_time` timestamp原创 2022-05-04 22:55:44 · 428 阅读 · 1 评论 -
深入理解MySQL事务隔离级别与锁机制
一、概述我们的数据库一般都会并发执行多个事务,多个事务可能会并发的对相同的一批数据进行增删改查操作,可能 就会导致我们说的脏写、脏读、不可重复读、幻读这些问题。这些问题的本质都是数据库的多事务并发问题,为了解决多事务并发问题,数据库设计了事务隔离机制、锁机 制、MVCC多版本并发控制隔离机制,用一整套机制来解决多事务并发问题。接下来,我们会深入讲解这些机 制,让大家彻底理解数据库内部的执行原理二、事务及其ACID属性事务是由一组SQL语句组成的逻辑处理单元,事务具有以下4个属性,通常简称为事务的AC原创 2022-05-04 21:57:53 · 207 阅读 · 0 评论 -
MySQL中的数据类型详解
在MySQL中,选择正确的数据类型,对于性能至关重要。一般应该遵循下面两步:(1)确定合适的大类型:数字、字符串、时间、二进制;(2)确定具体的类型:有无符号、取值范围、变长定长等。在MySQL数据类型设置方面,尽量用更小的数据类型,因为它们通常有更好的性能,花费更少的硬件资源。并且,尽量把字段定义为NOT NULL,避免使用NULL1、数值类型优化建议:1、如果整形数据没有负数,如ID号,建议指定为UNSIGNED无符号类型,容量可以扩大一倍。2、建议使用TINYINT代替ENUM、BI原创 2022-05-04 12:15:51 · 1248 阅读 · 0 评论 -
MySQL - Explain详解与索引最佳实践
示例表:2 DROP TABLE IF EXISTS `actor`;3 CREATE TABLE `actor` (4 `id` int(11) NOT NULL,5 `name` varchar(45) DEFAULT NULL,6 `update_time` datetime DEFAULT NULL,7 PRIMARY KEY (`id`)8 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;910 INSERT INTO `actor` (`id`, `n原创 2022-05-02 11:14:51 · 226 阅读 · 0 评论 -
MySQL底层执行原理详解
一、MySQL的内部组件结构大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。1、Server层 主要包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数 (如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。2、Store层 存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。现在最常用的存储引擎是 Inn原创 2022-04-19 22:29:42 · 4629 阅读 · 2 评论 -
MySQL - 关于性别字段是否需要加索引问题
1、索引的选择性是指索引列中不同值的数目和表的记录数的比值。假如表里面有1000条数据,表索引列有980个不同的值,这时候索引的选择性就是980/1000=0.98 。索引的选择性越接近1,这个索引的效率很高。2、性别可以认为是3种,男,女,其他。如果创建索引,查询语句 性别=‘男’的数据,索引的选择性就是3/1000=0.003。索引的选择性值很低,对查询提升不大,所以性别建索引意义不大。...原创 2022-03-31 11:58:10 · 5082 阅读 · 0 评论 -
MySQL - 自动排序函数(dense_rank() over)
1、有一个分数表表Scores简况如下:±------------±--------+| Column Name | Type |±------------±--------+| id | int || score | decimal |±------------±--------+Id是该表的主键。该表的每一行都包含了一场比赛的分数。Score是一个有两位小数点的浮点值。编写 SQL 查询对分数进行排序。排名按以下规则计算:分数应按从高到原创 2022-03-27 23:20:40 · 12933 阅读 · 1 评论 -
MySQL中having的用法
MySQL中having的用法mysql中,当我们用到聚合函数,如sum,count后,又需要筛选条件时,having就派上用场了,因为WHERE是在聚合前筛选记录的,having和group by是组合着用的先查询分类cid下 id的统计数目select cid,count(id) nums from table_name group by cid 结果如下:然后可以用having对统计的数据进一步筛选,比如nums大于2的数select cid,count(id) nums from x原创 2022-03-25 18:01:00 · 67396 阅读 · 6 评论 -
MySQL - 力扣刷题
MySQL查询第二高薪水编写一个 SQL 查询,获取 Employee 表中第二高的薪水(Salary) 。±—±-------+| Id | Salary |±—±-------+| 1 | 100 || 2 | 200 || 3 | 300 |±—±-------+例如上述 Employee 表,SQL查询应该返回 200 作为第二高的薪水。如果不存在第二高的薪水,那么查询应返回 null。±--------------------+| SecondHighestSalary |原创 2022-03-25 17:32:04 · 1019 阅读 · 0 评论 -
深入理解MySQL索引底层数据结构与算法
索引索引是帮助MySQL高效获取数据的排好序的数据结构(容易忽略的点:排好序)(形象点就是教科书的目录)索引存储在文件里(也就是说有IO操作)二叉树与红黑树的比较从上面我们发现,红黑树相比较于二叉树又进步了一些,但红黑树还是有些问题:那就是数据量大的话,红黑树的深度会很深,也就是说深度不可控,这样一来查找数据还是会很耗时HASH从上面我们发现,相比较于红黑树,hash可以固定“深度”,且映射到磁盘存储引用,这样查找数据直接告诉磁盘数据在哪,查找数据也挺快的,但是 hash 还是有些不足:那原创 2022-03-25 16:06:41 · 1172 阅读 · 0 评论 -
数据库三大范式
数据库三大范式数据库三大范式数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。1、第一范式(1NF):列不可再分1、每一列属性都是不可再分的属性值,确保每一列的原子性2、两列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据。2、第二范式(2NF)属性完全依赖于主键第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先原创 2022-03-25 14:55:28 · 1557 阅读 · 0 评论 -
MySQL - 连接查询
一、内连接查询 inner join关键字:inner join on语句:select * from a_table a inner join b_table b on a.a_id = b.b_id;说明:组合两个表中的记录,返回关联字段相符的记录,也就是返回两个表的交集(阴影)部分。案例解释:在boy表和girl 表中查出两表 hid 字段一致的姓名(gname,bname),boy表和girl 表如下:采用内连接查询方式:SELECT boy.hid,boy.bname,girl.原创 2022-03-25 14:23:53 · 89 阅读 · 0 评论