Mysql
丿潇湘丶书笛
你我所见,不过沧海一粟
展开
-
python连接数据库Mysql、Oracle、MSsql、ES
涉及到爬虫数据处理、数据清洗、数据查询、数据入库等操作时,则需要进行数据库的连接,以便进行数据查、校验、入库等操作;此处示例在python中,如何配置和连接数据库Mysql、Oracle、MSsql、Elasticsearch,以及代码执行方式(对应package包的安装比较简单就自行安装,这里只说代码层面的)1、连接Mysqlimport pymysql# 创建数据库连接con = pymysql.connect( host='127.0.0.1', port=3306原创 2022-04-14 16:27:26 · 416 阅读 · 0 评论 -
Mysql不定次拆分substring_index和help_topic(行转列)
"变速器:跳挡;转向系统:失灵;制动系统:刹车失灵;车身附件及电器:行车安全辅助系统故障"实际开发中,偶尔会需要处理:将一个字段,根据指定字符串进行拆分,且拆分次数是不固定的情况。如上是一个实际数据,这里演示处理上面的字符串,将数据行转列,并携带其他字段信息,以便大家做其他后续处理数据表结构大致如下:code date pinpai chexi problem class 559277 2021-01-01 广汽丰田 汉兰达 变速器:.原创 2022-03-30 10:22:54 · 1209 阅读 · 0 评论 -
mysql根据指定字符拆分字段内容substring_index
sql字段拆分场景有多种,常用的是拆分1次,这里我遇到的是需要拆分不定次数的场景。① 根据指定字符,执行1次字段拆分-- 截取第1个“,”符号左边的数据(从左截取)select substring_index(name,",",1) name from tablenameselect substring_index("abcd","b",1) //结果为:a-- 截取从右往左,第1个“,”符号,右边的数据(从右截取)select substring_index(name,",",-原创 2022-02-17 11:42:59 · 3236 阅读 · 24 评论 -
sql判断字段值是否为空,为空则替换为其他字符
在oracle、mssql、mysql中,判断是否为空,为空则替换为其他字符的函数不一样,这里分别列举一下功能为:如果第一个value为null,则返回第二个value// mysqlselect ifnull(null,'mysql')select ifnull(c_name,'没有名字')// mssqlselect isnull(null,'mssql')select isnull(c_name,'没有名字')// oracleselect nvl(null,'oracle原创 2022-01-30 14:07:11 · 7606 阅读 · 0 评论 -
mysql窗口函数-累计求和sum over
先上一个简单的demo,按时间周期累计求和:SELECT date, sales, sum( sales ) over ( ORDER BY date ) AS cum_sales FROM sales ORDER BY date ASC;再来一个demo,按字段class(自定义)进行分类并累计求和:SELECT date, sales, sum( sales ) over ( PARTITION BY class ORDER BY date ) AS cum_sale原创 2022-01-30 14:02:04 · 5517 阅读 · 0 评论 -
mysql查找指定字符在字符串中的位置instr
select instr("ASONUDDIES","E")-- 输出 9原创 2022-01-30 13:52:24 · 2668 阅读 · 0 评论 -
mysql递归查询CTE
CTE是Mysql8.0开始支持这里是一个例子表,此处示例需要拿到 ID 为 102 下的所有子集这里是sql语句WITH RECURSIVE cte AS (SELECT ID, PID, NAME, LEVEL, Type FROM tmp_zjs WHERE ID = '102' UNION ALLSELECT sou.ID, sou.PID, sou.NAME, sou.LEVEL, sou.Type FROM cte c INNER J原创 2022-01-30 13:50:19 · 991 阅读 · 0 评论 -
存储过程:获取日期(月份)同比值
这个是几个月前被问的问题(看笔记有这个功能),对方技术人员说很难,我当时倒是挺纳闷的,不是很容易吗。直接上代码:DELIMITER //drop procedure If exIsts get_month_tb;create procedure get_month_tb(In p_month varchar(10))begIn select td.*,ld.*,(td.cnt-ld.cnt)/ld.cnt tb from (select c_hotel_name,sum(c_custo原创 2021-06-05 19:24:19 · 368 阅读 · 0 评论 -
sql查询将科学计数法转为数字型
忘了是哪来的数据,指标值value有科学计数法的情况,不方便做统计计算,所以就有了需要将科学计数法转为数字型的场景,sql查询如下:select convert(sum(volumes),decimal(16)) c_volumes from index_spiderdata_productions_sales_map...原创 2021-06-05 19:14:17 · 6578 阅读 · 0 评论 -
Mysql 同比环比(date_add和interval)
不晓得大家会不会需要看按照日期进行同比环比的例子,因为思路基本是确定的:1、获取当前值;2、获取同期值;3、获取环期值;4、进行环比同比的计算。以下是代码,ru'guo原创 2021-06-05 19:11:21 · 1372 阅读 · 1 评论 -
case when的几种用法
用法一:selectcase c_sex when 1 then '男'else '女'end as '性别',count(*) as '人数' from user_inofrgroup by '性别'用法二:selectcase when c_sex=1 then '男'else '女'end as '性别',count(*) as '人数' from user_inofrgroup by '性别'用法三(部分处理,其他保留原样):s..原创 2021-06-05 19:04:09 · 19701 阅读 · 0 评论 -
SQL获取每个分类中,最新的10条数据
Oracel和MSsql可以用自带函数如row_number()可以解决,比较方便,如下:select * from (select *,row_number() over(PARTITION by c_prov order by c_publish_date) as rowid from spiderdata_virus_prov_status) a where rowid<=10原创 2021-06-05 18:56:27 · 5971 阅读 · 0 评论 -
Mysql 查询结果value进行累计(递增)求和
此处示例按照日期,进行日期数据的累计求和;如2020-01-原创 2021-06-05 18:42:43 · 1340 阅读 · 0 评论 -
Mysql查询结果生成行号@i
日常mysql查询工作中,为了配合输出和展示需要,会有生成序号的需求;在Oracel和MS Sql中可以用row_number解决,在mysql中可以用@i解决如下:select (@i:=@i+1) as noid ,c_name from sale_orders,(select @i:=0) i_table...原创 2021-06-05 18:33:19 · 360 阅读 · 0 评论 -
Mysql去重查询(根据指定字段去重)
在日常数据查询中,多有需要进行数据去重的查询,或删除重复数据的情况,以下罗列集中数据去重查询:1、根据全部字段的去重查询:select distinct * from table2、根据某些字段的去重查询(不考虑查询其他字段)select distinct c_name,c_year,c_month from table或者:select c_name,c_year,c_month from table group by c_name,c_year,c_month3、根据原创 2021-03-26 21:11:20 · 137125 阅读 · 10 评论 -
Mysql安装部署
给大家梳理一下Mysql的安装步骤,此处以Mysql8.0为示例,进行安装部署。1、下载Mysql,链接(一般自己玩的话就社区版)链接:https://dev.mysql.com/downloads/mysql/2、选择下载——Windows (x86, 64-bit), ZIP Archive3、下载后为压缩包,直接找个地方压缩存放即可,如:D:\Program Files\Mysql8.04、开始安装,以管理员身份运行cmdwin7+部分win10:在左...原创 2021-03-20 20:53:52 · 126 阅读 · 0 评论 -
解决Authentication plugin ‘caching_sha2_password‘ cannot be loaded问题
用软件登陆的Mysql8数据库时,报错:Authentication plugin 'caching_sha2_password' cannot be loaded出现这个原因是mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password。解决问题方法有两种,一种是升级navicat驱动(博主用的是navicat是19年装的了,其他软件同理),另一种是把mysql用户登录密码加密规则还原成mysql_nat原创 2021-03-20 20:50:04 · 36737 阅读 · 17 评论 -
Mysql密码修改
Mysql修改密码的步骤如下:1、登录mysql:mysql -u root -pEnter后输入密码登录2、修改密码:alter user 'root'@'localhost' identified by 'root';此处将密码改为root原创 2021-03-20 20:40:29 · 89 阅读 · 0 评论 -
SQL:创建表、复制表、修改表名、删除表
以下是创建表、插入数据、复制表、修改表名、删除表的相关SQL语句:-- 创建表create table create_demo(c_id INTEGER,c_name VARCHAR(20));-- 插入记录insert into create_demo values(1,"小王");-- 复制表create table create_demo_copy as select * from create_demo;-- 修改表(任一都可)rename table creat原创 2020-09-24 17:55:20 · 430 阅读 · 0 评论 -
简单解决Mysql报错:Table ‘.\****\****‘ is marked as crashed and should be repaired
今天有同事在使用数据库的时候,查询一直报错,导致数据整体都出不来。检查之后发现是某个表的问题,查询到这个表一直报错:Table '.\****\****' is marked as crashed and should be repaired看了一下网上的建议,基本都是让使用myisamchk.exe解决:找到mysql的安装目录的bin/myisamchk工具,在命令行中输入:myisamchk -c -r ../data/mysql/user.MYI以上是方法之一;然后我自己琢磨..原创 2020-09-14 18:19:40 · 3692 阅读 · 0 评论 -
SQL:获取每个用户最新的一条数据记录
被问这个问题的时候我的第一想法居然是用order by。。。。唉,好好的 max 放着不用。。。sql示例:获取文件上传记录表中,每个用户产生的最新一条记录:select * from file_record as a inner join (select file_author,max(file_ctime) as file_ctime from file_record group by file_author) as bon a.file_author=b.file_authoran..原创 2020-08-31 18:04:34 · 18347 阅读 · 0 评论 -
Mysql排序时前置指定字段数据(自定义排序 order by field)
在查询数据时,根据数据查询结果,经常需要用到排序,此时直接用order by colnumA,根据指定字段排序即可。而在部分应用场景中,比如企业数据主要分布在指定行业领域、指定地区,查询时需要前置指定行业、地区数据、时期数据时,可以通过order by field的方式,自定义字段排序,前置指定的数据:如:select * from table order by field(provBref,"广东") desc此时“广东”的数据就会前置。其中,desc是前置效果,默认不加为置后多数据项前置原创 2020-06-09 16:46:40 · 913 阅读 · 1 评论 -
Mysql中分组并合并分组内所有数据(group_concat)
在Mysql查询中不免有需要进行数据分组,但依然要保留组内所有数据的情况,此时我们可以用group_concat函数来实现。如:1、合并一个字段数据:select group_concat(Name) from Table group by Code;2、合并多个字段数据:select group_concat(Name,Specification) from Table group by Code;3、排序+合并字段数据:select group_concat(Name原创 2020-06-02 16:04:54 · 8794 阅读 · 0 评论 -
Mysql解决concat中字段为null的问题(concat_ws)
在Mysql进行数据库查询的时候,使用concat函数可以进行字符、字段数据的拼接,返回结果为连接参数产生的字符串,但如果有任何一个数据为null,则返回的结果也为null。针对这种字段为null的情况,我们可以用两种方式解决:1、使用concat_ws替换concat;在遇到null的情况下,concat_ws不返回null,会自动忽略任何null的情况,继续拼接。2、可以在concat中,使用ifnull函数,如:concat(ifnull(colnum1,""),ifnull(colnum原创 2020-06-02 15:51:55 · 8803 阅读 · 2 评论 -
Mysql清除字段中的中文,只保留数字、字母等非中文符号
原理:使用convert函数,将字段类型转换为其他数据类型即ASCII类型,然后再配合用replace函数,清除中文,即可达到效果(根据自身需要也可以用replace清除更多字符)。如下,是我在项目中的一个实际应用:SELECT distinct ResSpec as 原数据,convert(ResSpec using ascii) as 转换,replace(convert(ResSpec using ascii),"?","") as 结果FROM gczj_gljk 效果图:原创 2020-06-02 15:29:56 · 7404 阅读 · 3 评论 -
sql优化select * from table where c_id in (select c_id from table)问题
在数据库查询中,用查询结果A来反查某个数据库表中的数据B,是一个常见的操作;而在这个反查中,往往会出现效率低下的问题,反查时间超长等等。在sql反查中,有的写法是:select * from tablename1 where c_cityin ( select c_city fromtablename2 where c_id='0211') as a我在一些简单的数据...原创 2020-03-25 11:58:46 · 3207 阅读 · 0 评论 -
mysql字符型和数字型的转换(数字转数字字符,数字字符转数字)
1、查询时将数字型数据转为字符型(主要用于字符串与数字型数字的拼接):select concat(c_year,'年',c_province,'省') from tablename2、排序时将字符型数字转为数字型(主要用于将字符型数字数据按照数字型排序):select * from tablename order by c_price+1...原创 2020-03-25 10:32:02 · 510 阅读 · 0 评论 -
mysql 数字和时间的相互转换
一、数字转时间(from_unixtime)1、mysql在转为和计算时间时,是处理10位数字的。10位数字转时间:select from_unixtime("1474241241")结果:2016-09-19 07:27:21select from_unixtime("1474241241","%Y/%m/%d")结果:2016/09/192、java计算出来的时间...原创 2019-07-16 16:47:17 · 18202 阅读 · 0 评论 -
mysql获取近10年的年份/数据
一、mysql获取近10年的年份:select year(now()) as c_year union allselect year(now())-1 as c_year union allselect year(now())-2 as c_year union allselect year(now())-3 as c_year union allselect year(now())-...原创 2019-08-23 16:59:01 · 8612 阅读 · 1 评论 -
mysql获取今天上/前月时间、上年时间、上年月份、上年年份
获取日期:当前当前时间:select now() 结果:2019-08-31 11:10:40当前日期:select date(now()) 结果:2019-08-31当前年月:select left(now(),7) 结果:2019-08当前月份:select month(now()) 结果:8当前年份:select y...原创 2019-08-31 11:15:32 · 4721 阅读 · 0 评论 -
mysql 常用SQL语句介绍(持续更新)
(个人总结更新,mysql)常用SQL语句介绍:①博主习惯小写;②test_table:数据库表;③column_name:字段;④str:字符串等类型数据1、创建库表create table test_table (colnum_name1 varchar(50),colnum_name2 datatime)2、删除库表drop table test_table3、sel...原创 2019-06-20 15:19:12 · 339 阅读 · 0 评论