MYSQL从入门到放弃
文章平均质量分 60
Simonhans
月黑见渔灯,孤光一点萤。
展开
-
MYSQL常见业务需求
文章目录MYSQL常用的SQL思路归类1. 分组取TOP N条记录2.分组累计(要加方法2)3.连续问题4.行转列MYSQL常用的SQL思路归类1. 分组取TOP N条记录思路:利用开窗函数排名(不支持开窗函数可自定义变量实现)ROW_NUMBER()over() :生成密集不重复序号:1,2,3,4,5rank()over():不密集有重复 1,1,3,4,5dense_rank()over():密集有重复 1,1,2,3,4示例:leetcode直达Employee 表包含所有员工信原创 2021-03-20 14:44:15 · 439 阅读 · 1 评论 -
MYSQL的explain详解
在分析sql语句以及考虑性能优化时,通常会使用explain语句explain select * from fr_stockexpain出来的信息有10列,分别是id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra描述:id: 选择标识符select_type:表示查询的类型。table:输出结果集的表partitions:匹配的分区type:表示表的连接类型possible_keys:表示查询时,可能原创 2020-11-16 14:33:27 · 253 阅读 · 0 评论 -
MYSQL取分组后的前几条记录
环境:mysql 5.7数据库中有一个报餐表,我要取各个用餐地址组内用餐最多的前三名数据表中部分数据是这样的第一种方法:select lounum,fdcount from fr_foods填报 awhere 3>(select count(*) from fr_foods填报 b where lounum=a.lounum and fdcount>a.fdcount )order by a.lounum,a.fdcount desc结果:这个会把组内所有跟前三名并列的都查原创 2020-06-17 18:07:33 · 3746 阅读 · 1 评论 -
MySQL中rank()、row_number()、dense_rank()排序
本地有这样一张测试表执行排序代码select id, name, rank() over(order by score desc) as rank_, DENSE_RANK() OVER(order by score desc) as dense_rank_, row_number() OVER(order by score desc) as row_number_from students;结果如下:原创 2020-06-17 15:19:44 · 454 阅读 · 0 评论 -
详细配置MYSQL主从数据库同步
主从同步的定义主从同步使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。因为复制是异步进行的,所以从服务器不需要一直连接着主服务器,从服务器甚至可以通过拨号断断续续地连接主服务器。通过配置文件,可以指定复制所有的数据库,某个数据库,甚至是某个数据库上的某个表。使用主从同步的好处:通过增加从服务器来提高数据库的性能,在主服务器上执行写入和更新,在从服务器上向外提供读功能,可以动态地调整从服务器的数量,从而调整原创 2020-06-17 11:24:45 · 582 阅读 · 0 评论 -
MYSQL的日期时间函数
获取当前日期时间–now()sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。mysql> select now(), sleep(3), now();+---------------------+----------+---------------------+| now() | ...原创 2020-03-04 14:55:27 · 158 阅读 · 0 评论 -
MYSQL查询同时包含两行数据的数据(用户既买了商品A又买了商品B)
现在有个场景:要查询订单中,哪些订单是顾客既买了A又买了B的订单表user_pro结构数据如下:SQL查询:SELECT * FROM user_pro T WHERE EXISTS(SELECT 1 FROM user_pro WHERE user=T.user AND product='A') AND EXISTS(SELECT 1 FROM user_pro WHERE u...原创 2019-11-27 15:30:33 · 8688 阅读 · 1 评论 -
MYSQL与SQL SERVER update 语法的区别
现有两张表A,B:A表字段:a_id,a_nameB表字段:b_id,b_name要把A表的a_name更新为b_nameMYSQL:update A left join B on A.a_id=B.b_idset a_name=b_nameSQL SERVER:update A set A.a_name=B.b_namefrom A left join Bon A.a_...原创 2019-11-08 09:51:49 · 410 阅读 · 0 评论 -
MYSQL可重复读及原理、快照读和当前读
什么是可重复读可重复读的实现Repeatable Read(可重复读):一个事务在执行过程中可以看到其他事务已经提交的新插入的记录(读已经提交的,其实是读早于本事务开始且已经提交的),但是不能看到其他事务对已有记录的更新(即晚于本事务开始的),并且,该事务不要求与其他事务是“可串行化”的。可以看到当session2 在步骤4插入新纪录并提交时,session1查到的还是之前的数据,而要...原创 2019-06-24 15:26:55 · 8789 阅读 · 7 评论 -
MYSQL之事件EVENT
事件**检查数据库事件是否开启:**如果event_scheduler 状态是on 即为开启状态:select @@event_scheduler; ---法一show variables like "event_schduler%"; --法二开启事件set global event_scheduler=1关闭事件set GLOBAL event_schduler=OFF...转载 2019-06-21 14:36:32 · 157 阅读 · 0 评论 -
MYSQL之存储过程详解
存储过程详解存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。一、存储过程的创建及调用CREATE [DEFINER = { ...转载 2019-06-21 13:20:24 · 128 阅读 · 0 评论 -
Mysql错误1452 - Cannot add or update a child row: a foreign key constraint fails 原因及解决方法
报错的原因大概分为三种:原因一:添加的外键列与另一个表的唯一索引列(一般是主键)的数据类型不同原因二:要添加外键的表类型与另一个表的存储引擎是不是都为innodb引擎#查看表引擎法一: show create table 表名;法二:show table status from 数据库 where name=‘表名’;法三:use information_schema;selec...原创 2019-04-19 11:43:39 · 189703 阅读 · 34 评论 -
MYSQL中null与空值的区别
平时我们在使用MySQL的时候,对于MySQL中的NULL值和空值区别不能很好的理解。注意到NULL值是未知的,且占用空间,不走索引,DBA建议建表的时候最好设置字段是NOT NULL 来避免这种低效率的事情的发生。问题 1: 首先,我们需要搞清楚 “空值” 和"NULL"的概念1:空值(’’)是不占用空间的2: MySQL中的NULL其实是占用空间的。官方文档说明:“NULL colum...原创 2019-04-13 18:17:07 · 361 阅读 · 0 评论 -
Linux下安装mysql5.7.25
1、下载tar包,这里使用wget从官网下载wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz2、将mysql安装到/usr/local/mysql下解压tar -xvf mysql-5.7.22-linux-glibc2.12-x86_64.tar.gz...原创 2019-04-10 15:38:46 · 453 阅读 · 2 评论