![](https://img-blog.csdnimg.cn/20200518195052137.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
MySQL
文章平均质量分 83
主要记录对数据库里面的MySQL的学习过程以及遇到的各种bug的解决过程
小白掌柜
Atypical programmer
展开
-
Leetcode题解之database(十四)584.寻找用户推荐人 - 你应该知道的五种MySQL解法
力扣584题的五种MySQL解法原创 2023-04-13 19:15:00 · 926 阅读 · 0 评论 -
数据分析面试、笔试题汇总+解析(六)
MySQL查询语句优化面试题原创 2023-02-26 19:54:21 · 401 阅读 · 0 评论 -
数据分析面试、笔试题汇总+解析(五)
MySQL面试常见考点解析原创 2023-02-14 19:25:13 · 366 阅读 · 0 评论 -
Leetcode题解之database(十二)607. Sales Person
此题确实简单,解题思路:找到不属于RED公司的员工id,就可以找到对应的员工name。但是一开始掌柜进入了一个思维的误区:以为只要是com_id = 1 的公司就是’RED’公司。。。于是提交了如下查询语句就华丽丽的出错了!其实实际测试案例中会有 com_id = 2的公司才是RED公司情况。。。所以这里的筛选条件应该是公司的名字即 name = ‘RED’ 才对!!!(看了一下评论区也有好些跟掌柜一样进入误区的????)但是你看 order 表里面没有name这个字段,因此需要先原创 2021-01-27 18:58:29 · 401 阅读 · 0 评论 -
Leetcode题解之database(十一)512. Game Play Analysis II
掌柜又回来了????今日带来????512. Game Play Analysis II (游戏分析Ⅱ)的题解。首先看题目:解题思路????: 此题要求的是每个玩家第一次登录日期的玩家ID 和他的设备ID。 那么我们首先要知道 每个玩家第一次登录的日期(其实就是511题:游戏分析Ⅰ) 是什么时候???接着用前面每个玩家的日期作为筛选条件进行查询就能得到相应的玩家ID 和 设备ID。思路还是比较简单的,下面提供几个参考的解法????:第一个解法:子查询和聚合函数。SELECT play原创 2021-01-26 20:16:33 · 279 阅读 · 0 评论 -
由一道牛客SQL题引发关于NOT IN 函数、MAX函数、MIN函数的思考
又是随手刷到一道牛客SQL题,这次是????查找排除最大、最小salary之后的当前(to_date = ‘9999-01-01’ )员工的平均工资avg_salary。此题其实不算难,一开始掌柜想到的解题思路如下:????首先找到最大最小工资,然后剔除这个数值;接下来筛选当前日期为’9999-01-01’ 的平均工资数据即可。但是这题其实又有点坑????,因为题意并没有明显说????要你在剔除最大最小工资那里也是筛选当前日期为’9999-01-01’ !!! 这个条件,所以如果你一开始没有get到原创 2020-11-26 21:16:30 · 697 阅读 · 6 评论 -
Leetcode题解之database(十)177. Nth Highest Salary
今天要解的是:177. Nth Highest Salary(求第N高的工资)。这里要注意这样一句话????:如果没有第N高的工资,就要输出NULL。首先看此题考察的知识点:IFNULL(判断空值)函数用法和LIMIT用法。其实这题可以说是???? 176. Second Highest Salary (求第二高工资) 的升级版。建议大家先看看第二高的题解会更易懂这题。解题思路????:此题要求第N高,那么重点就在N这个数字上。第一种情况,N不为0的时候:假如N=1,那就是第一高,原创 2020-11-12 20:50:10 · 338 阅读 · 0 评论 -
牛客SQL实战的18道简单题+Leetcode非VIP的12道简单题 总结
随手刷过力扣数据库题和牛客的SQL实战题,今天就对两边的简单题做个总结,让我们一起来看看对于SQL简单题常考的有哪些知识点以及题型吧。PS:如果分类区有漏掉的题,欢迎评论区补充,谢谢!常考知识点一:两表或多表连接,即????考察JOIN 、LEFT JOIN、RIGHT JOIN、INNER JOIN 的用法和区别。题型有:(PPS: 下面提到的题都是其中一种解法会用到这个知识点;此题也有其他解法可用 )Leetcode ???? 175. 组合两表Leetcode ???? 181.原创 2020-11-04 19:04:43 · 369 阅读 · 0 评论 -
浅谈627. Swap Salary(交换工资)的题解区中的 位运算之 “异或运算”(一)
之前解析完Leetcode最后一道非VIP的SQL题 ????交换工资。其中最有意思的是有个解法使用了 “异或运算”,于是今天打算浅谈一下这个高效的方法。首先,什么是位运算的“异或运算”?其实这个运算全称是 “按位异或(英文叫eXclusive OR,简称 XOR)”,看过掌柜之前这篇博客的朋友应该都知道之前掌柜谈了位运算的按位与(&)运算。其实它还有另外几种(按位或(|)、按位取反(~)、左移运算 (<<)以及右移运算(>>)),还没遇到类似案例就暂不提,今天主要原创 2020-10-24 23:00:18 · 427 阅读 · 0 评论 -
Leetcode题解之database(八)595. Big Countries -- 浅谈选择Union还是OR
掌柜又随手刷了一道力扣数据库题,这次是595题????:找大国。相信很多朋友都见过这个题,这题确实很简单,只要你SQL基础过关。所以掌柜就简单提一下,此题主要考察知识点就是SQL中多条件的过滤。但是掌柜一如既往在自己解答后看其他人的题解时,发现了一个有趣的东西 – 就是大多数题解都写到????:这里使用Union连接两个查询语句的效率会优于使用OR方法???真的是这样的吗???????掌柜持怀疑态度❗--------------------------------------------------原创 2020-07-14 20:57:47 · 184 阅读 · 0 评论 -
从一道简单的Leetcode 197题 “上升的温度” 看INNER JOIN、CROSS JOIN 和 , (comma 逗号) 连接两表/多表的区别
今天又随手刷了一道Leetcode的197题,此题难点主要在于比较两个日期值 DATEDIFF() 函数的使用,如果你很熟悉这个函数,那么这题对你来说就很简单了!不过掌柜在解完此题后习惯性地看看别人的解法,因为总有厉害的朋友在下面给出惊喜????。于是又发现了一个细小的点:即使用INNER JOIN(或JOIN)、CROSS JOIN和使用逗号(,)来连接两表/多表到底有什么区别?又开始翻阅查询,在MySQL 8.0的官网看到这么一段话:翻译一下这里(如果有错误,请谅解并提出来):INNER JO原创 2020-06-08 19:55:09 · 2177 阅读 · 0 评论 -
记录在学习SQL注入的过程中遇到的几个坑
今天学习了一下SQL注入,然后又遇到了一些坑坑,嗯,日常遇到坑的掌柜已经习惯了填坑的日常!!!????原创 2020-05-24 18:16:08 · 887 阅读 · 0 评论 -
Leetcode题解之database(五)176. Second Highest Salary
今天又随手刷了一道leetcode的数据库题,这次是????:176. Second Highest Salary 求第二高工资。乍看这题是不是觉得似曾相识?没错,之前掌柜写过另外两个题,分别是求部门最高工资的员工 和 求部门工资排前三的员工。其实那两题还稍微难点,因为涉及多表联合查询的;不过这道题看似简单些,里面却有两个坑需要注意避开!!!掌柜一开始就没注意到,导致提交就报错????。。。上面这个错误❌的解法就是疏忽了第二个坑导致的,下面掌柜马上填坑????。第一个坑就是有可能会出现工资有重复的原创 2020-05-18 19:39:22 · 267 阅读 · 0 评论 -
LOAD DATA INFILE 导入数据到MySQL,出现日期类型异常显示为0000-00-00 00:00:00的解决办法
写完之前百万数据导入的总结后,最近还真经常遇到需要把百万数据导入MySQL,就用最快的Load Data Infile这个方法导入,但是今天遇到了要导入的数据里面含有日期类型,如果还是按之前写法导入就出现了如下异常的日期格式????:这是怎么回事呢?掌柜再次翻阅全网,发现造成这样的原因有很多,其中主要原因是因为插入的数据不合规。比如插入数据长度超出该字段的设置值、无效字符、插入数据的格式不对等。后来掌柜经过一番排查后发现,我这里出错的原因是因为插入的格式不符合MySQL默认的日期格式导致的。那么解决的原创 2020-05-09 19:50:14 · 4882 阅读 · 2 评论 -
上百万条数据导入MySQL的方法汇总(三)
今天继续解决最后的两方法,不过掌柜觉得最后一个方法其实已经在上一篇的存储过程里面实现了????事务+有序的多次插入。那么这篇主要就谈合并单条SQL语句为多条再导入这个方法。PS:掌柜翻遍全网发现好多文章都只谈到批量合并数据可以提升数据插入的性能,但是很多都没有提到如何进行批量数据的合并。。。都只说把单条SQL语句插入:改成合并多条的值再一次插入:但是这是百万数据啊!总不能手动进行批量合并吧!所...原创 2020-05-07 20:07:04 · 1910 阅读 · 3 评论 -
上百万条数据导入MySQL的方法汇总(二)
接昨天,继续用其他方法导入上百万条数据到MySQL。下面是第三种方法????:用存储过程导入。原创 2020-05-01 17:26:22 · 2497 阅读 · 2 评论 -
MySQL出现ERROR 1205(HY000):Lock wait timeout exceeded; try restarting transaction的解决办法
今天在删除表格的时候出现如下报错:于是通过查询当前线程发现有多个线程同时开启运行中。。。再查看当前运行的所有事务:SELECT * FROM information_schema.INNODB_TRX;可以发现有三个事务同时都在运行。。。所以可以找到掌柜这里报错的直接原因是:之前存储过程(里面开启了事务)运行半天没有反应就手动关闭了MySQL。。。没有让它进行commit。。。并...原创 2020-04-27 23:12:44 · 6840 阅读 · 0 评论 -
上百万条数据导入MySQL的方法汇总(一)
昨晚遇到一个把百万条数据导入MySQL的问题,翻遍整个网络,最后找到了如下几种方法,这里先做个汇总!直接导入 ------此方法极不推荐!费时费力还损电脑!用Load data infile和临时表导入;------ 推荐使用存储过程批量导入;------ 推荐更换引擎,让ENGINE=InnoDB为MyISAM,再导入;------ 有效但是不太推荐,会对数据库性能有影响!合并单条...原创 2020-04-23 20:37:23 · 8554 阅读 · 16 评论 -
Leetcode题解之database(四)185. Department Top Three Salaries
今天要解的题目是????:185. Department Top Three Salaries(部门工资排前三的员工)这题考察的知识点????:两表连接JOIN的使用以及子查询此题思路一????:既然要查部门工资排前三,那么我们要知道有哪些部门?这里就要使用JOIN连接两表得到各个部门信息,然后再在各部门中降幂排列出工资排前三的员工信息,这里就要用到子查询建立一个新表来跟原始表进行对比。(这也是官方的解法思路)...原创 2020-03-31 19:08:06 · 277 阅读 · 0 评论 -
数据去重的各种方法汇总(二)
接上文,上篇讲了Python列表和字典的去重方法,本篇主要总结Excel和MySQL的去重方法。Excel去重解法一,直接使用“删除重复值”按钮,下面看示例和图解步骤:先选中你要删除重复值的那一列数据,然后再按照上图????的步骤走。接着就是确认你要删除的重复值数据范围(一列还是多列):最后就是删除后的确认最后我们查看删完重复值的数据:是不是很简单????。当然这里还有其他方法...原创 2020-03-26 18:27:56 · 1055 阅读 · 0 评论 -
Leetcode题解之database(三)196. Delete Duplicate Emails
今天要解的题目是????:196. Delete Duplicate Emails(删除重复的邮件)乍看之下会觉得是个很简单的去重问题,但是请仔细注意题目的要求:题目要求的是删除重复的数据,并保留Id最小的邮箱数据!!!所以如果一开始想用DISTINCT函数是不对的,因为它只是在查询的时候去掉了重复的数据不显示,但是并没有删除该数据。。。此题考察知识点????:Delete函数和Where条件查询的使...原创 2020-03-22 00:04:04 · 1572 阅读 · 0 评论 -
Leetcode题解之database(二)184. Department Highest Salary
今天要解的是184题:部门最高工资的员工。题目链接在这里:???? 184. Department Highest Salary首先看这题要考察的知识点:????再看这题的思路: 要找的是部门最高员工,那么有两种思路????:...原创 2020-03-20 18:33:57 · 318 阅读 · 0 评论 -
Leetcode题解之database(一)183. Customers Who Never Order
从今天开始每天都记录解一道Leetcode数据库的题,把它所使用的方法、思路、考察知识点以及最优解写下来。废话不多说,今天要解的是183题:没有下单的客户名字。题目链接在这里:???? Customers Who Never Order首先看这题要考察的知识点:...原创 2020-03-18 18:12:07 · 283 阅读 · 0 评论 -
Kettle连接MySQL报错:错误连接数据库 [mysql] : org.pentaho.di.core.exception.KettleDatabaseException的解决办法
在Windows系统里面安装Kettle后打算连接MySQL的时候突然报错:错误连接数据库 [mysql] : org.pentaho.di.core.exception.KettleDatabaseException:Error occurred while trying to connect to the databaseDriver class ‘org.gjt.mm.mysql.Dr...原创 2019-12-27 21:39:23 · 36880 阅读 · 24 评论 -
如何使用MySQL对数据进行清洗--详解其中遇到的各种问题
最近在学陈旸老师的专栏SQL必知必会里面学到如何用SQL对数据进行清洗这一节时,在实操的时候遇到了一些问题,这里记录一下其中对各种问题的解决办法,希望对后面学习的朋友也有帮助!首先第一步就是导入数据集,陈老师是直接用的Navicat 工具将 泰坦尼克号数据集的csv 文件导入到 MySQL 数据库中,但是作为小白的我觉得还是用MySQL直接导入更能锻炼自己,于是放弃Navicat,转用了MySQ...原创 2019-12-19 19:30:58 · 7651 阅读 · 0 评论 -
填坑The MySQL server is running with the --secure-file-priv option so it cannot execute this statement
刚刚上午解决了Access Denied的问题,下午受上午解决问题的思路启发,结果很快就解决了关于MySQL8.0版本以上的文件导入权限问题!!!相信大家都在初次导入外部文件到MySQL的适合遇到了这个问题吧:ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it can...原创 2019-12-13 22:01:02 · 4255 阅读 · 33 评论 -
因为一个MySQL权限问题引发的填坑之一(ERROR1045:Access Denied for user 'root'@'localhost' (using password:YES))
我觉得我应该改名字叫填坑掌柜,本来只是改个MySQL导入文件的权限问题,结果引发了一系列的踩坑,填坑过程… 好吧,还是开始正题,我们开始填坑第一个:ERROR1045(28000):Access Denied for user ‘root’@‘localhost’ (using password:YES)这个问题出现的原因:这个出现的原因其实有好几种:是因为之前初始化导致密码失效了。所...原创 2019-12-13 16:06:24 · 496 阅读 · 4 评论 -
填坑 “NotSupportedError: Authentication plugin 'caching_sha2_password' is not supported”的曲折过程+解决办法
又是因为在做数据分析的实战项目时候发生了一系列的踩坑、填坑过程(不止标题上面两个,限于字数),于是随手记录下来希望后面的朋友能避开!!!因为项目是用Python连接MySQL来进行数据分析的,所以一开始的步骤就要连接MySQL,这里采用的是SQLALchemy这个框架,于是当我写好这段代码运行的时候,提示报错为:没有“mysql。。。”于是就去anaconda里面安装了这个,重新运行,发现出...原创 2019-12-06 19:11:26 · 6374 阅读 · 10 评论