首页
留言板
友链
关于
Search
1
内测“合金弹头”嘿嘿
1,197 阅读
2
Nginx搭建一个简易的图床
1,087 阅读
3
Kettle循环遍历结果集作为参数传入转换
1,086 阅读
4
Maven3.3.9的安装与配置
617 阅读
5
Maven打包插件与idea
580 阅读
知识库
好奇猫
日常说
笔记本
登录
/
注册
Search
标签搜索
maven
Spring
vue
Java
Java代码
前端
idea
帆软
MySQL
git
CSS
游戏
Bootstrap
生活
网上冲浪
邮件配置
说说
Nginx
Excel
数据库调优
龙流
累计撰写
61
篇文章
累计收到
34
条评论
首页
栏目
知识库
好奇猫
日常说
笔记本
页面
留言板
友链
关于
搜索到
2
篇与
MySQL
的结果
2022-12-28
MySQL 8的SQL脚本为什么不能导入到MySQL 5中
原因:不可忽视的MySQL字符集 MySQL8.0的默认字符集编码为utf8mb4_0900_ai_ci而MySQL5.x中没有utf8mb4_0900_*的字符集这些字段每个意义,代表着什么含义:uft8mb4 表示用 UTF-8 编码方案,每个字符最多占4个字节。utf8mb3也是Unicode字符集的UTF-8编码,每个字符使用一到三个字节。(utf8: utf8mb3的别名)0900 就是Unicode 校对算法版本。(Unicode归类算法是用于比较符合Unicode标准要求的两个Unicode字符串的方法)。ai指的是口音不敏感。也就是说,排序时e,è,é,ê和ë之间没有区别,不区分重音。ci表示不区分大小写。排序时p和P之间没有区别。再了解一下一些场景下 utf8 和 utf8mb4 的问题点:utf8编码最多支持3字节的数据,而emoji表情符, 偏生字是4个字节的utf8无法存储的,致辞延伸出utf8mb4字符集解决这个问题。日常常用的字符集:utf8mb4_bin:将字符串每个字符用二进制数据编译存储,区分大小写,而且可以存二进制的内utf8mb4_general_ci:ci即case insensitive,不区分大小写。没有实现Unicode排序规则,在遇到某些特殊语言或字符集,排序结果可能不一致。但在绝大多数情况下,这些特殊字符的顺序并不需要那么精确。utf8mb4_unicode_ci:是基于标准的Unicode来排序和比较,能够在各种语言之间精确排序,Unicode排序规则为了能够处理特殊字符的情况,实现了略微复杂的排序算法。字符集配置mysql字符集如何设置,更改操作:1)my.cnf配置文件信息,建议初始化时就设置好。[mysqld]character-set-server = utf8mb4collation-server = utf8mb4_unicode_cicharacter-set-client-handshake = FALSE #此处是忽略客户端的字符集,使用服务器的设置2)init_connect=‘SET NAMES utf8mb4’ #服务器为每个连接的客户端执行的字符串,对于一些超级管理源就不生效的3)字符集变更,包含库,表,column的变更。都可以完全的拥有自己的字符集。##更改DATABASE ALTER DATABASE `db1` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ##更改TABLE ALTER TABLE `t1` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ##更改column字段 ALTER TABLE `t1` modify `name` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT '昵称';4)日常字符集检查工作:SELECT b.SCHEMA_NAME, b.DEFAULT_CHARACTER_SET_NAME, b.DEFAULT_COLLATION_NAME ,a.TABLE_NAME, a.TABLE_COLLATION FROM information_schema.SCHEMATA b left join information_schema.TABLES a on b.SCHEMA_NAME =a. TABLE_SCHEMA WHERE b.SCHEMA_NAME not in ('information_schema' ,'mysql','performance_schema', 'sys') ORDER BY TABLE_SCHEMA,TABLE_NAME ;通过多方便设置,更改操作,检查。字符集不再是隐藏问题。字符集对于数据库的影响字符集对整个数据库影响面还是比较可观的。库更改 对于原先存在的表字段 都不影响 依次类推。所以数据库>表>字段 都可以单独设置字符集。常见问题1:有索引 没有走 因为进行了 字符集隐式转换常见问题2:在尾随空格方面不同字符串值(CHAR、VARCHAR和TEXT)的比较与其他排序规则在尾随空格方面不同。For example, ‘a’ and 'a ’ 作为不同的字符串比较,而不是相同的字符串。对于字符集排序来说,字符串末尾的空格也有对应的处理。注意:在选择使用utf8mb4_0900 字符集之后空格 就需要处理。常见问题3:对于数据的大小写敏感除了lower_case_table_names之外,怎样有效使用大小写字符集设置,采用ut8mb4_bin字符集 既可,查询和数据插入解决。常见问题4:表情符,偏生字常见错误代码:1366 Incorrect string value: ‘\xF0\x9F\x99\x82’ for column ‘name’ at row 2指定Utf8mb4字符集,再配合character-set-client-handshake属性图片备注:对于jdbc来说没有utf8mb4这样的字符集说法。不可忽视的MySQL字符集https://blog.51cto.com/u_15127623/2856333
2022年12月28日
216 阅读
0 评论
0 点赞
2021-07-25
MySQL处理Excel数据
了解一下-关于Excel神操作拿Excel当PhotoShop作画.Excel函数版bad apple.甚至用Excel编程...{bilibili bvid="BV1yC4y1a7Rz"/} Excel表格,对里面的数据进行比对和整理,首先不可能一个一个去修改去填写数据啊,利用函数啊或其他什么Excel功能我这三脚猫的Excel操作在满足不了需求啊,另辟蹊径把数据导入到MySQL数据库的形式进行数据操作,得到需要的数据在给领导。Excel数据导入MySQL数据库- 任何一个MySQL客户端(如:Navicat、SQLyog)都有导入向导,我用的是SQLyog 1. 在工具栏选择(高级工具->导入外部数据)会出现一个导入数据向导,直接点击下一步 2. 然后选择导入的文件是什么格式的,选择文件位置,再点下一步 3. 选择导入的数据库,默认是当前连接的数据库,所以直接下一步 4. 由于是从Excel表格导入数据,Excel中有列名,所以选择从数据源拷贝数据->下一步 5. source下对应的是Excel中的Shell名,勾选你需要导入的Shell数据;Destination选择导入的表,也可以直接以Excel数据为表,直接设置一个表名;Map设置Exce列与表字段映射关系;设置好后,就可以点击下一步 6. 后面都是点下一步,直到最后窗口日志,出现successful。最后完成效果图{gird column="2" gap="15"}{gird-item}{/gird-item}{gird-item}{/gird-item}{/gird}MySQL存储过程FETCH INFO与WHILE和LOOP的使用WHILE实现CREATE DEFINER=`root`@`localhost` PROCEDURE `P_GX_LZPI1_202`() BEGIN #Routine body goes here... DECLARE flag INT DEFAULT 0; DECLARE tab_num varchar(10); DECLARE curJob CURSOR FOR SELECT `表顺序号` FROM `冷轧pi系统字段1_202` GROUP BY `表顺序号`; # 溢出处理,查询是否有下一个数据,没有将标识设为1 DECLARE CONTINUE HANDLER FOR NOT FOUND SET flag = 1; OPEN curJob; # 取值设置到tab_num中 FETCH curJob INTO tab_num; # 使用while循环 WHILE flag != 1 DO # 主要操作过程 INSERT INTO `冷轧test` SELECT a.`机组号`, a.`机组中文名`, a.`工艺顺序号`, a.`工艺段`, a.`表顺序号`, a.`表名`, (@i:=@i+1) AS 字段顺序号, a.`字段名` , a.`字段中文名`, a.`是否需对齐` FROM `冷轧pi系统字段1_202` a,(SELECT @i:=0) AS it WHERE a.`表顺序号` = tab_num; # 把游标向后移一位 FETCH curJob INTO tab_num; # 结束循环 END WHILE; CLOSE curJob; ENDLOOP方式实现CREATE DEFINER=`root`@`localhost` PROCEDURE `P_GX_LZPI2_112`() BEGIN DECLARE tab_num VARCHAR(10); DECLARE done INT DEFAULT FALSE; DECLARE curJob CURSOR FOR ( -- 定义 SELECT `表顺序号` FROM `冷轧pi系统字段1_202` GROUP BY `表顺序号` ); DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; -- 监听器 OPEN curJob; -- 打开游标 label:LOOP FETCH curJob INTO tab_num; IF done THEN LEAVE label; END IF; INSERT INTO `冷轧test` SELECT a.`机组号`, a.`机组中文名`, a.`工艺顺序号`, a.`工艺段`, a.`表顺序号`, a.`表名`, (@i:=@i+1) AS 字段顺序号, a.`字段名` , a.`字段中文名`, a.`是否需对齐` FROM `冷轧pi系统字段2_112` a,(SELECT @i:=0) AS it WHERE a.`表顺序号` = tab_num; END LOOP label; CLOSE curJob; -- 关闭游标 END
2021年07月25日
452 阅读
0 评论
0 点赞