
MySQL
MySQL常用语法及数据处理
黄饱饱_bao
我喜欢看过世界的男生
展开
-
MySQL - 创建存储过程Procedure,Do While实现循环
处理数据的时候,往往需要回溯历史,比如给用户分群后计算每个群体的用户数趋势,那么就需要计算截止到每一天的各个群体的用户数量,这个时候我们就需要创建存储过程,并且在存储过程中增加循环的功能,以此来实现上述回溯的需求。第一步:先创建一个初始表,用于循环过程中插入数据-- 创建表之前先判断有没有这个表存在,有的话就删掉DROP TABLE IF EXISTS test_table;-- 创建表CREATE TABLE `test_table` ( `id` INT (11) NOT NU原创 2021-12-22 11:43:42 · 2319 阅读 · 0 评论 -
【mysql】提取字符串中的数字、字母、中文,或任意组合
【mysql】提取字符串中的数字、字母、中文,或任意组合原创 2021-12-08 15:58:41 · 2270 阅读 · 0 评论 -
MYSQL中有时候不得不使用replace()去掉特殊字符,写在这里备用一下
LOWER()的作用是把所有的大小写统统变成小写;LOWER(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replace( replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(replac...原创 2021-01-06 16:15:40 · 1043 阅读 · 0 评论 -
mysql_根据身份证号识别性别、年龄、所在省份
1.性别:IF(mod(SUBSTR(c.reciver_idcard_num,17,1),2),'man','woman') 性别,2. 年龄:CASE WHEN c.reciver_idcard_num <>'' THEN (YEAR(CURDATE()) - SUBSTRING(c.reciver_idcard_num,7,4)) ELSE NULL END AS...原创 2019-10-31 16:26:38 · 3383 阅读 · 0 评论 -
分组统计 - 不同时间颗粒度下,按照秒、分、时、日、周、月、季度、年 GROUP BY 分组统计 - (MySQL)
数据处理时,经常需要:统计不同时间粒度下的数据分布情况。例如,网站每天(or每小时)的访问量,周杰伦每年(or每季度 or每月)的收入等。首先有一个表叫:table_test,其中 time 列为最细的时间颗粒度,类型是datetime,income 列是收入(下图)。 代码:##################################################...原创 2019-01-24 16:51:33 · 6003 阅读 · 0 评论 -
缺失值处理 - 获取一段时间内所有日期的列表 - (Python、MySQL)
有的时候做数据清洗的时候 ,如果表中数据在某一天没有记录,但是业务要求不能有缺失日期,那么就需要我们将这些缺失日期补上。这个前提就是我们先要有一张包含所有日期的列表(作为左表),供我们进行匹配(left join)进而补上缺失日期。Python代码:import datetimedef Date_interval_list(date_start = None,date_end...原创 2019-01-25 15:34:44 · 7097 阅读 · 0 评论 -
特征计算 -获取本周,本月初,本月末,上月同日,本季,本年初,本年末的日期 - (Python、MySQL、Oracle)
数据预处理的过程中,往往需要计算当前日期往前推12个月(或者本周,本月,本季,本年)中间发生的事情,因此这里贴上相关处理的代码:Python代码:import datetimefrom datetime import timedeltanow = datetime.datetime.now()#天today = now#今天yesterday = now - timedel...原创 2019-01-21 16:26:13 · 3600 阅读 · 0 评论 -
Python连接MySQL数据库(pymysql),DataFrame写入 MySQL(create_engine)- Python代码
模块安装使用以下命令安装 PyMySQL:$ pip install PyMySQL若系统不支持 pip,还可以这样安装:$ git clone https://github.com/PyMySQL/PyMySQL$ cd PyMySQL/$ python3 setup.py install Python连接MySQL数据库# -*- coding:utf-8...原创 2019-02-01 15:08:51 · 19470 阅读 · 2 评论 -
MySQL - cast()函数
日常建表习惯用create tabel tb_name as select......,这种建表方式的其中一个缺点就是:系统会根据查询出的字段,定义字段类型。有时候会把'%Y-%m-%d' 格式的日期字段定义为 varchar 。建模的时候苦不堪言。那么怎么在建表过程中自己定义每一个字段的存储类型呢?cast()函数来了,他带着尚方宝剑来了...基本格式:case(字段名 a...原创 2019-09-29 13:38:25 · 404 阅读 · 0 评论 -
MySQL - 定时任务(每天凌晨1点、每小时、每分钟、某一时间点)
常用的一定要写在前面# 从2019-10-11开始,每天的00:30:00执行定时任务ON SCHEDULE EVERY 1 DAY STARTS '2019-10-11 00:30:00' # 每天的凌晨1点执行定时任务ON SCHEDULE EVERY 1 DAY STARTS DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTE...原创 2019-10-10 20:01:19 · 9097 阅读 · 0 评论 -
mysql 8.0.11-Windows (x86, 64-bit)下载地址与安装教程
1.下载安装包Windows (x86, 64-bit), ZIP Archive官网下载安装包点击链接,进入如下页面---点击Download下载---解压到目录(例如E:\program\mysql-8.0.11-winx64)2.添加配置文件my.ini在目录E:\program\mysql-8.0.11-winx64下:新建txt文档---将文件名的后缀".txt"改为".ini"---打...原创 2018-06-28 10:50:38 · 21243 阅读 · 0 评论 -
mysql远程访问
MySQL 安装完成后只支持 localhost 访问,我们必须设置一下才可以远程访问,另外还有一些 MySQL 8.0 连接时的一些问题,本文也会一并进行讲解如何解决。1.登录MySQL并输入密码 ,选择 mysql 数据库(存储了用户信息的 user 表)mysql -u root -p1use my...转载 2018-06-27 15:18:16 · 167 阅读 · 0 评论 -
mysql提取各种数据时间的各种方法
1.提取数据的年月日(eg:2018-06-21)方法1:SUBSTR(time FROM 1 FOR 10);方法2:DATE(time);方法3:DATE_FORMAT(time,'%Y-%m-%d');方法4:LEFT(time,10);2.提取数据的年月(eg:2018-06)方法1:SUBSTR(time FROM 1 FOR 7);方法2:DATE_FORMAT(time,'%Y-%m...原创 2018-06-21 16:31:36 · 4936 阅读 · 0 评论 -
解决The total number of locks exceeds the lock table size错误
mysql在进行大批量的数据操作时,会报“The total number of locks exceeds the lock table size”,特别是执行create、update语句的时候,在出现错误的那段查询语句之前写上这么一句话:show variables like "%_buffer%";SET GLOBAL innodb_buffer_pool_size=67108864;问题...原创 2018-06-21 16:48:05 · 30024 阅读 · 0 评论 -
解决mysql导出scv文件乱码、蹿行的问题
工作原因,常常不能实现完全的线上化(即,所有数据都在线上完成,不需要导入导出),而导出Excel常常比修炼成仙还慢,因此,我们将数据库文件导出到本地使用的时候,常常使用的方法的是导成CSV格式。而csv格式的也常常出现导出的中文乱码,或者蹿行等问题,从而陷入两难境地。老板要数据,你却导不出来,急死人了。1.问题:我们原本要把如左图所示的数据库中的数据导出成他原本的样子,无奈成了右边的乱七八糟的东西...原创 2018-06-22 14:28:45 · 6062 阅读 · 1 评论 -
解决mysql导数据时,格式不对、导入慢、丢数据的问题
问题一:格式不对(常出现时间格式不对的情况);方法1:将excel文件另存为csv,再导入数据库;方法2:导入的第一步时,默认编码方式是65001(UTF-8),可以尝试选择【10008 (MAC - Simplified Chinese GB 2312)】,或者【Current Windows Codepage】,这是常见的三种编码,多试几次,总能找到匹配你的电脑的编码格式。方法3:在导入的最后...原创 2018-06-22 15:01:36 · 13100 阅读 · 6 评论 -
mysql行列转置-图文详解
我们想跑一个数据,格式如下图:但是我们一般的mysql语句跑出来的数据却是下面这样,不但不方便查看,在数据量比较大的时候,我们需要每个地区都转置粘贴一遍,耗时耗力还容易出错,下面提供一个方法,可以让跑出来的数据就是你一开始想要的样子(上图),不但方便线上化的查看,也方便线下的粘贴。Mysql 行列转置方法代码 - case when语句:SELECT t.`地区`,COUNT(DISTINCT ...原创 2018-06-26 14:02:31 · 18828 阅读 · 3 评论 -
mysql复制表结构和数据
手动方法:方法1:把你要复制的表当成一个文件一样,右键复制,右键粘贴,这个方法复制的是表结构和数据。方法2:选中原表拖动到新位置的空白处,松开鼠标,会提示你复制表结构和数据,或者仅复制表结构,没有仅复制数据这个选项。 SQL语句方法:1.复制表结构及数据CREATE TABLE test_new SELECT * FROM test_oldCREATE TABLE ...原创 2018-06-27 09:30:40 · 7928 阅读 · 0 评论 -
mysql去重取最大值,逻辑类似oracle的over(partition by)函数
像下表一样的数据,有重复的合同号,但是我只想保留同一合同号中回款金额最大的那一行,也就是图中红框里的数据。oracle方法: 在oracle中,我们可以简单地用over(partition by)函数处理(代码示例如下),解释一下就是利用partition by函数按照合同号分区,在每个分区内再利用order by根据回款金额排序,where num=1的意思就是取每个分区中排序第一...原创 2018-06-27 10:18:45 · 11588 阅读 · 6 评论 -
mysql一图秒懂秒清晰 - join连接 ,left join左连接 ,right join右连接 ,inner join内连接
前言:zuo表和you表短短五行涵盖了数据中所有可能遇见的情况:1.左表有重复值(合同号=1134);2.右表有重复值(合同号=1133);3.左表存在右表没有的合同号(合同号=1188);4.右表存在左表没有的合同号(合同号=1166);5.左表右表都仅有一条匹配的(合同号=1124);zuo表和you表全程不变动,只改连接方式, 一种连接方式一个图,便于对比不同连接...原创 2018-06-27 11:23:06 · 4286 阅读 · 0 评论 -
修改mysql文件的存储路径
使用本地数据库时,常常会发生磁盘爆满变红的情况,特别是C盘,这时候我们希望将mysql本地数据库存储的文件移动到D盘或者E盘,下面是手动调整的办法:1.关闭mysql服务;左下角开始处输入“服务”,回车键查找;左键点击查找出来的“服务”,找到“MySQL”,点击“停止”;2.移动data文件(如果不希望改变原有文件的存储位置,此处省略)mysql默认的C盘默认存储路径是C:\ProgramData...原创 2018-06-21 15:24:01 · 4048 阅读 · 0 评论