MySQL
文章平均质量分 66
Backcanhave7
学无止境,学以致用。
展开
-
MySQL 多行数据合并成一行(查询不同用户号下的前三个非重复场景)
说明:文中使用的MySQL版本为MySQL8.0.17;MySQL配置文件中的sql_mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION",此时select后跟的字段与group by后跟的字段不需要保持一致。创建测试表:# 创建测试表user_infocreate table user_info(user_num varchar(10)...原创 2019-10-11 13:59:34 · 1638 阅读 · 0 评论 -
LeetCode会员SQL题题解(简单篇)
说明1:本文使用的MySQL的版本是8.0.17,SQL Server的版本是2008 R2;说明2:本文中的部分代码来自LeetCode上的评论。LeetCode SQL题库链接:https://leetcode-cn.com/problemset/database511. Game Play Analysis ISQL架构:Create table Activity (...原创 2019-08-02 17:16:56 · 2234 阅读 · 0 评论 -
MySQL 8.0.17详细安装教程
本文安装环境说明:win10,64位操作系统安装程序下载:首先是登录MySQL的官网,下载MySQL 8.0.17的安装包。官网地址:https://www.mysql.com/打开MySQL官网后,在出现的页面上,依次点击MYSQL.COM,Products和MySQL Community Edition,如下图所示:点击MySQL Community Edition后...原创 2019-07-27 12:30:13 · 24303 阅读 · 17 评论 -
Navicat连接MySQL8.0出现2059错误的解决办法
原文链接:https://blog.csdn.net/qq_29932025/article/details/80045716navicat链接mysql8以后的版本时,会出现2059的错误,这个错误出现的原因是在mysql8之前的版本中加密规则为mysql_native_password,而在mysql8以后的加密规则为caching_sha2_password。解决此问题有两种方法,一种是...转载 2019-07-11 21:31:27 · 340 阅读 · 0 评论 -
数据库事务与锁详解
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...转载 2019-10-10 15:14:03 · 259 阅读 · 0 评论 -
数据库的锁机制
并发控制在计算机科学,特别是程序设计、操作系统、多处理机和数据库等领域,并发控制(Concurrency control)是确保及时纠正由并发操作导致的错误的一种机制。数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性。下面举例说明并发操作带来的数据不一致性问题:现有两处火车票售票点,同时读取某一趟列车车票数...转载 2019-10-10 10:00:32 · 226 阅读 · 1 评论 -
MySQL命名窗口及窗口函数的限制
原文地址:https://dev.mysql.com/doc/refman/8.0/en/window-functions-named-windows.htmlhttps://dev.mysql.com/doc/refman/8.0/en/window-function-restrictions.html译文:12.21.4Named Windows窗口可以被定义和给定能够在...翻译 2019-01-15 18:51:45 · 1251 阅读 · 0 评论 -
MySQL窗口函数框架说明(frame子句)
原文地址:https://dev.mysql.com/doc/refman/8.0/en/window-functions-frames.html译文:12.21.3Window Function Frame Specification与窗口函数一起使用的窗口的定义中可以包括frame子句。框架是当前分区的一个子集,frame子句指定如何定义这个子集。框架是相对于当前行确定的,这...翻译 2019-01-15 12:12:11 · 2744 阅读 · 1 评论 -
MySQL窗口函数概念和语法
原文地址:https://dev.mysql.com/doc/refman/8.0/en/window-functions-usage.html译文:12.21.2Window Function Concepts and Syntax本节讲述如何使用窗口函数。示例使用的销售信息数据集与Section12.20.2, “GROUP BY Modifiers”中讨论GROUPING()...翻译 2019-01-14 16:20:11 · 2187 阅读 · 0 评论 -
MySQL窗口函数简介
原文地址:https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html#function_last-value译文:12.21.1Window Function Descriptions本节描述非聚合窗口函数,对于查询中的每一行,这些函数使用与该行相关的行执行计算。大多数聚合函数也可以用作窗口函数,...翻译 2019-01-13 21:25:54 · 15358 阅读 · 3 评论 -
MySQL行列互转
列转行:构建用于行转列的成绩表:# 创建学生成绩表scores1,用于行转列测试create table scores1(sname varchar(10) not null default '',course varchar(10) not null default '',score int not null default 0)engine myisam charset u...原创 2019-07-12 21:01:19 · 277 阅读 · 0 评论 -
利用窗口函数查询出各小组内排名第一的记录(MySQL)
创建测试表:# 创建销售表sales:create table sales(year int,country varchar(20),product varchar(32),profit int)engine myisam charset utf8mb4;# 向销售表sales中插入数据:insert into sales values(2000,'USA','...原创 2019-04-03 23:34:03 · 3232 阅读 · 0 评论 -
MySQL关键字with rollup的用法
关键字with rollup用于group by后,它可以将group by分组后的结果进行分类汇总。下面用具体示例来说明with rollup的用法:# 创建示例要用到的学生成绩表grade:create table grade(sid char(2) not null default '00',cid char(2) not null default '00',sname ...原创 2018-12-17 11:24:37 · 1745 阅读 · 0 评论 -
LeetCode-SQL练习题总结(MySQL实现)
LeetCode上的SQL练习题一共有十九道,题目网址:https://leetcode-cn.com/problemset/database/本文将对其中的部分题做一个总结。176.查询第二高的薪水:编写一个 SQL 查询,获取Employee表中第二高的薪水(Salary)。+----+--------+| Id | Salary |+----+--------+...原创 2018-12-10 22:15:18 · 2791 阅读 · 0 评论 -
MySQL正则表达式基础
# 创建产品信息表products:CREATE TABLE products( prod_id char(10) NOT NULL, vend_id int NOT NULL , prod_name char(255) NOT NULL , prod_price decimal(8,2) NOT NULL , pr...原创 2018-12-16 15:41:41 · 318 阅读 · 0 评论 -
查询指定时间范围内的订单信息
select * from order_detail limit 10;# 输出结果为:+----------+---------------------+---------+---------+-------+--------------+-------------+| order_id | order_dt | user_id | product | price ...原创 2018-12-16 08:50:04 · 3816 阅读 · 0 评论 -
MySQL中用order by排序的字段不一定要在select语句中
说明:本文测试时使用的MySQL版本是5.7.22对于5.7.22版本的MySQL,用order by排序的字段不一定要在select语句中,即使是select distinct与order by同时使用。示例:现有一张记录学生成绩的grade表:+------+--------+-------+| id | name | score |+------+--------...原创 2018-12-10 11:38:51 · 10553 阅读 · 0 评论 -
MySQL定时任务
参考:https://dev.mysql.com/doc/refman/5.7/en/events-configuration.htmlhttps://dev.mysql.com/doc/refman/5.7/en/create-event.htmlhttps://dev.mysql.com/doc/refman/5.7/en/alter-event.htmlhttps://dev...原创 2018-12-20 19:57:53 · 143 阅读 · 0 评论 -
MySQL多字段去重
# 创建学生成绩表grade:# grade表的字段说明:id表示学生编号,name表示学生姓名,gender表示学生性别,score表示学生分数。create table grade(id int,name char(1),gender char(1),score int)engine myisam charset utf8;# 向学生表中插入数据:insert into...原创 2018-12-15 14:02:40 · 16059 阅读 · 2 评论 -
LeetCode601查询体育馆的人流量问题详解(MySQL三种方法实现)
题目如下:X 市建了一个新的体育馆,每日人流量信息被记录在这三列信息中:序号 (id)、日期 (date)、 人流量 (people)。请编写一个查询语句,找出高峰期时段,要求连续三天及以上,并且每天人流量均不少于100。例如,表 stadium:+------+------------+-----------+| id | date | people |...原创 2018-12-09 22:04:25 · 1180 阅读 · 0 评论 -
利用Python上下文管理器执行MySQL查询
关于Python中的上下文管理器可以参考:https://www.cnblogs.com/huchong/p/8268765.html#undefinedhttps://www.cnblogs.com/DragonFire/p/6764066.html下面说明如何利用Python中的上下文管理器执行MySQL查询:示例1:# 导入pymysql包,用于连接数据库import...原创 2018-12-19 17:18:28 · 502 阅读 · 0 评论 -
MySQL排名问题详解
创建学生成绩表grade,并向表中插入数据:# 创建学生成绩表:create table grade(id int,name varchar(10),score int (10))engine myisam charset utf8;# 向成绩表中插入数据:insert into grade values(1,'张无忌',85),(2,'李隆基',59),(3,'王五'...原创 2018-12-06 17:54:37 · 389 阅读 · 0 评论 -
MySQL中case when的基本用法总结
MySQL中的case when有用两种用法,官方文档中的说明如下:用法一:CASE case_value WHEN when_value THEN statement_list [WHEN when_value THEN statement_list] ... [ELSE statement_list]END CASE用法二:CASE WHE...原创 2018-12-06 15:14:15 · 24828 阅读 · 3 评论 -
查询和01号学生学习的课程完全相同的其他同学的信息
查询所用到的各表表结构见此博客:https://blog.csdn.net/qq_41080850/article/details/84593860查询和01号同学学习的课程完全相同的其他同学的信息:代码:select * from student where sid in (select sid from grade2 where sid not in(select sid f...原创 2018-11-30 14:51:28 · 29058 阅读 · 49 评论 -
MySQL中的自定义排序
# 创建不同地区的销售额记录表salescreate table sales(region varchar(5) not null default '',sale decimal(10,2) not null default 0)engine myisam charset utf8;# 向销售额记录表sales中插入数据:insert into sales values('中...原创 2018-12-17 21:51:44 · 328 阅读 · 1 评论 -
MySQL中的存储过程、游标和存储函数
MySQL中的存储过程首先来看两个问题:1.什么是存储过程?存储过程(Stored Procedure)是在数据库系统中,一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程有参数的话)来执行它。2.为什么要使用存储过程?《MySQL必知必会》这本书中给出了如下几条主要理由:1)通过把处理封装在容易使用的单元中,简...原创 2018-12-18 23:49:23 · 7109 阅读 · 1 评论 -
MySQL虚拟表
参考:https://blog.csdn.net/hdduuyf/article/details/83866602https://www.cnblogs.com/duanxz/p/3724120.htmlhttps://blog.csdn.net/yypiao/article/details/84858760https://yypiao.iteye.com/blog/2359859...原创 2019-03-07 22:22:52 · 2053 阅读 · 0 评论 -
MySQL索引整理总结
原文地址:MySQL索引整理总结1. 简介索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。举例说明索引:如果把数据库中的某一张看成一本书,那么索引就像是书的目录,可以通过目录快速查找书中指定内容的位置,对于数据库表来说,可以通过索引快速查找表中的数据。2. 索引的原理索引一般以文...转载 2019-03-07 21:50:04 · 246 阅读 · 0 评论 -
MySQL查询优化系列文章
MySQL查询优化之explain的深入解析mysql嵌套查询和联表查询优化方法MySQL查询优化:LIMIT 1避免全表扫描提高查询效率Mysql使用索引实现查询优化mysql数据库查询优化 mysql效率MySQL查询优化:连接查询排序浅谈MySQL慢查询优化之慢查询日志分析的实例教程mysql limi...转载 2019-03-10 23:44:05 · 422 阅读 · 0 评论 -
MySQL查询一组数据的众数和中位数
查询一组数据的众数:方法1:仅适用于一组数据只有一个众数的情况 1)首先对数据按照值的不同进行分组,并对每组中的数据进行计数,再根据计数的大小进行降序排序; 2)上述1)中结果集的第一行即要求取的众数所在的行。方法2:适用于一组数据有一个或多个众数的情况 1)首先对数据按照值的不同进行分组,并对每组中的数据进行计数; 2)使用max函数找出统计个数的...原创 2019-03-05 14:00:41 · 7178 阅读 · 3 评论 -
MySQL存储过程接受表名变量作为参数
一般情况下,MySQL的存储过程不接受表名变量作为参数,否则会报错,如下图所示:上图中的报错信息显示在test数据库中,没有名为grade的表。这表示存储过程tname_example没有正确识别出传递给它的表名参数。为解决这个问题,我们可以在存储过程过程中使用prepare语句:上图中的拼接语句concat('select * from ',table_name)值得注意,c...原创 2019-03-05 21:41:12 · 7468 阅读 · 3 评论 -
MySQL中利用正则表达式查询指定开头与指定结尾的字符串
建表regexp_example:create table regexp_example(prod_name varchar(10) not null default '',prod_price smallint unsigned not null default 0)engine myisam character set utf8;# regexp_example表结构说明:...原创 2019-03-01 21:23:36 · 11275 阅读 · 0 评论 -
MySQL查询结果导出方式总结
说明:以下示例中使用的MySQL版本为MySQL8.0.13,Python版本为Python3.6.4,数据库第三方客户端Navicat Premium版本为 12.0.18方法一:利用select ······ into outfile语句首先登陆MySQL,然后查看系统变量secure_file_priv的值,如下所示: 默认情况下,secure_file_priv的值为...原创 2019-01-26 23:09:47 · 53854 阅读 · 3 评论 -
MySQL中的相关子查询和不相关子查询
嵌套在其他查询中的查询即子查询,子查询也叫内部查询。子查询中有相关子查询和不相关子查询:相关子查询是指查询结果依赖于外部查询的子查询,外部查询每执行一次,内部子查询也会执行一次;而不相关子查询是指独立于外部查询的子查询,内部子查询仅执行一次,执行完毕后将查询结果作为外部查询的条件使用。 下面用具体示例来说明相关子查询和不相关子查询的区别:数据表说明:成绩表grade1(i...原创 2019-01-25 19:40:24 · 3574 阅读 · 0 评论 -
MySQL8.0简介
参考:https://blog.csdn.net/zwj1030711290/article/details/80025981https://dev.mysql.com/doc/refman/8.0/en/mysql-nutshell.html原创 2019-01-11 23:50:27 · 1092 阅读 · 0 评论 -
MySQL利用窗口函数解决排名问题
从MySQL8.0开始,MySQL增加了对窗口函数的支持。本文主要介绍如何利用窗口函数row_number(),dense_rank()和rank()解决相关排名问题。说明:本文中的SQL代码均测试于MySQL8.0.13环境。在总体上进行排名:# 创建学生成绩表:create table grade(id int,name varchar(10),score int (10...原创 2019-01-12 22:12:25 · 3383 阅读 · 0 评论 -
MySQL中explain执行计划详解
参考:https://dev.mysql.com/doc/refman/5.7/en/explain-output.html#explain-output-column-tablehttps://blog.csdn.net/wuseyukui/article/details/71512793原创 2018-12-19 09:10:12 · 150 阅读 · 0 评论 -
详解50道经典SQL练习题(MySQL解法)
数据表说明:学生表student(sid,sname,sbirth,sgender)参数说明: sid:学生编号,sname:学生姓名,sbirth:学生出生日期,sgender:学生性别课程表course(cid,cname,tid)参数说明: cid:课程编号,cname:课程名字,tid:授课老师编号教师表teacher(tid,tname)参数说明: ...原创 2018-11-28 23:48:07 · 6598 阅读 · 7 评论