IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySQL(持续更新) -> 正文阅读

[大数据]MySQL(持续更新)

MySQL学习(问题&解决方法)

说明:今天用MySQL写sql语句的时候遇到了一些问题,写篇博客记录一下(大佬勿喷)

问题1:字符串拼接问题

今天使用Mybatis的时候,用到了模糊查询,需要字符串的拼接,具体情境如下:
数据大约是这么个数据,然后要实现传入年和月,查出这一年这一个月的所有的数据和
在这里插入图片描述
突然发现sql中不能直接用“+”拼接字符串,这里插一个MySQL中的模糊查询

模糊查询

关键字:like
通配符:

  • %:匹配任意长度的字符串
  • _:匹配任意单个字符
  • escape:转义上面两个字符

用法:
比如上表中要查询所有2019年1月所有CO2的值可以写如下sql语句:

select sum(co2) 
from CM19_21
where date like "2019/1%";

继续刚才的问题
sql语句中不支持“+”拼接字符串,但是可以使用 concat 方法,如下

select sum(co2) 
from CM19_21
where date like concat('2019','/','1%');

这样就可以了!

问题2:整数转字符串问题

如果前端传过来的数据是int类型的年和月呢,可以使用 cast(i as char) 方法
i为要转成字符串的整数,如下:

select sum(co2) 
from CM19_21
where date like concat(cast(2019 as char),'/',cast(1 as char),'%');

作用和上面的完全相同

问题3:批量插入数据问题

想要对上表做一个整合,把所有月份的数据整合在一起,但是没有什么好的方法,只能建一个新表,然后查询插入,此时发现查询插入好像要写很多个,幸亏我想起sql中还有 procedure 这么个东西

procedure:procedure是一 组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(参数可以为空)来调用执行它。
这就类似shell脚本,结合了控制语句和sql语句

下面就实现一下上述功能

# 更换回车结束符,在可视化工具中编写sql时可以不用写
delimiter $$
# 创建一个存储过程 类似一个函数
create procedure select_mount()
# 开始
begin
	# 定义 i 和 j 两个变量并赋初值
	declare i int default 2019;
	declare j int default 1;
	# while循环 do相当于java中的‘{’ end while相当于java中的‘}’
	while(i<2022) do
		while(j<13) do
			# 查询插入语句,并根据country和sector分组
			insert into cm_mount(country,sector,date,co2)
			select country,sector,concat(cast(i as char),'/',cast(j as char)),sum(co2)
			from cm19_21 where date like concat(cast(i as char),'/',cast(j as char),'/%')
			group by country,sector;
			# 更新变量的值
			set j=j+1;
		end while;
		set i=i+1;
		set j=1;
	end while;
# 结束该procedure
end;
# 回车结束,使用可视化工具的可以不用写
$$
# 换回原来的结束符
delimiter ;
# 调用该procedure
call select_mount();
# 删除该procedure
drop procedure select_mount;

结果如下:
在这里插入图片描述

大功告成!

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-22 18:43:14  更:2022-04-22 18:44:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:59:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码