mysql常用方法

mysql常用方法

一、基本用法

-- MySQL创建唯一索引
CREATE UNIQUE INDEX 索引名 ON 表名(列名1,列名2,...);
--也可以使用ALTER TABLE语句给现有表添加唯一索引(UNIQUE)
ALTER TABLE 表名 ADD CONSTRAINT 索引名 UNIQUE KEY(列名1,列名2,...);
alter table car_data add constraint car_data_evtId_uindex unique (evtId)
-- 删除索引
ALTER TABLE plan_project DROP KEY plan_project_field_project_number_UN;
-- 时间戳互转
SELECT FROM_UNIXTIME(1617184000); -- 假设1617184000是你的Unix时间戳
SELECT UNIX_TIMESTAMP('2021-03-31 00:00:00');
-- 添加列
alter table people_data Add  photoBase64 longtext AFTER photo;
-- 把applyTime的值置为null
update people_data set applyTime = null;-- 创建数据库
create database db_example;
CREATE DATABASE `test-test`;
-- 创建用户
create user 'springuser'@'localhost' identified by '123456'
grant all on db_example.* to 'springuser'@'localhost' -- 查看一个数据中所有表的相关信息
show table status \G
show table status like 'face_data' \G;
-- 根据表2字段值跟新表1字段值
update device_channel T1 ,test T2
set T1.longitude = T2.longitude , T1.latitude = T2.latitude, T1.longitudeGcj02 = T2.longitude , T1.latitudeGcj02 = T2.latitude, T1.longitudeWgs84 = T2.longitude , T1.latitudeWgs84 = T2.latitude
where T1.deviceId = T2.deviceId
-- update select用法
update device_data T3
left join
(select T1.id,T1.name,T2.latitude,T2.longitude from device_data T1 LEFT JOIN device_channel T2 on T1.name = T2.name)T 
on T3.id = T.id
set T3.lat = T.latitude,T3.lng = T.longitude
-- mysql姓名、身份证号、手机号脱敏
SELECT T1.id, 
if(LENGTH(T1.name)>6,CONCAT(LEFT(T1.name,1), '*',RIGHT(T1.name,1) ),CONCAT(LEFT(T1.name,1), '*' )) AS name,
CONCAT(LEFT(T1.phone,4), '***' ,RIGHT(T1.phone,4)) AS phone,CONCAT(LEFT(T1.idCard,6), '********' ,RIGHT(T1.idCard,4))
FROM people_data T1  limit 100;
-- mysql导出数据
mysqldump -u 用户名 -p 数据库名 表名 > 导出文件名
mysqldump -u root -p test facedata > facedata.sql
mysqldump -u root -p  --no-data test2 facedata > facedata.sql-- mysql解决死锁
SELECT trx_mysql_thread_id , trx_query FROM INFORMATION_SCHEMA.INNODB_TRX;
SHOW  PROCESSLIST;
kill trx_mysql_thread_id
-- coalesce函数用法
coalesce(expression_1, expression_2, ...,expression_n)
依次参考各参数表达式,遇到非null值即停止并返回该值。如果所有的表达式都是空值,最终将返回一个空值。
把photo中的http://192.168.1.123:8080替换为https://afxq.com
REPLACE(photo,'http://192.168.1.123:8080','https://afxq.com')
UPDATE  papply_data  set photo = REPLACE(photo,'http://192.168.1.123:8080','https://afxq.com') where communityId = '57558d7c1eee46399e216946d655afae' and photo like 'http://192.168.1.123:8080%' -- mysql导出数据字典
-- 单个表导出
SELECTcolumn_name AS '字段名',column_type AS '字段类型',( CASE WHEN is_nullable = 'YES' THEN '是' ELSE '否' END ) AS '是否可空',( CASE WHEN column_key = 'PRI' THEN '是' ELSE '否' END ) AS '是否主键',column_comment AS '注释' 
FROMinformation_schema.COLUMNS 
WHEREtable_schema = 'test2' AND table_name = 'frp_port';-- 整个库导出	
SELECTtable_name  AS  '表名',column_name AS '字段名',column_type AS '字段类型',( CASE WHEN is_nullable = 'YES' THEN '是' ELSE '否' END ) AS '是否可空',( CASE WHEN column_key = 'PRI' THEN '是' ELSE '否' END ) AS '是否主键',column_comment AS '注释' 
FROMinformation_schema.COLUMNS 
WHEREtable_schema = 'sl-cloud'-- limit用法
LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。
初始记录行的偏移量是 0(而不是 1)
-- 取第一条
SELECT communityId FROM (select communityId,count(*) AS num from face_data fd  where flag = 0 group by communityId )T order by num desc limit 0,1
-- 取第二条到第十条
SELECT communityId FROM (select communityId,count(*) AS num from face_data fd  where flag = 0 group by communityId )T order by num desc limit 1,9 -- 查看当前时区
在MySQL客户端,可以通过如下命令查看当前时区:
SELECT @@global.time_zone;
查看当前时区的设置,可以通过如下命令:
SHOW VARIABLES LIKE '%time_zone%';                 -- 获取字符串中逗号的个数
SELECT '0,100,101,183',LENGTH('0,100,101,183')-LENGTH(REPLACE('0,100,101,183',',',''))
-- 获取字符串中指定位置的值
SELECT REGEXP_SUBSTR('0,100,101,183', '[^,]+', 1, 3);  -- mysql8 分组排序
SELECT * FROM (SELECT *, ROW_NUMBER()OVER(PARTITION BY name ORDER BY create_time DESC) AS rowNumber FROM monitor_info
)t
WHERE rowNumber = 1 -- 根据收入和支出统计销售额
SELECT T1.center_id,ifnull(sum(case when T1.status != 3 then amount  END),0) AS total,                  -- 总营业额ifnull(sum(case when T1.status = 3   then amount END),0) AS refund,                 -- 退款ifnull(sum(case when T1.status = 3 then -amount else amount END),0) AS netRevenue,  -- 净营业额count(distinct order_id) AS orderNum                                          -- 订单数
FROM `log` T1
LEFT JOIN center T2
ON T1.center_id = T2.id
GROUP BY T1.center_id
ORDER BY T1.update_time DESC

二、常见问题

1、Mysql删除数据后磁盘空间未释放的解决办法

使用delete删除的时候,mysql并没有把数据文件删除,而是将数据文件的标识位删除,没有整理文件,因此不会彻底释放空间
官方推荐使用 OPTIMIZE TABLE命令来优化表,该命令会重新利用未使用的空间,并整理数据文件的碎片。
(1)、drop table table_name 立刻释放磁盘空间 ,不管是 Innodb和MyISAM ;
(2)、truncate table table_name 立刻释放磁盘空间 ,不管是 Innodb和MyISAM 。
truncate table其实有点类似于drop table 然后create,只不过这个create table 的过程做了优化,比如表结构文件之前已经有了等等。所以速度上应该是接近drop table的速度;
(3)、delete from table_name删除表的全部数据,对于MyISAM会立刻释放磁盘空间(应该是做了特别处理,也比较合理),InnoDB 不会释放磁盘空间;
(4)、对于delete from table_name where xxx带条件的删除, 不管是innodb还是MyISAM都不会释放磁盘空间;
(5)、delete操作以后使用optimize table table_name 会立刻释放磁盘空间。不管是innodb还是myisam 。所以要想达到释放磁盘空间的目的,delete以后执行optimize table 操作。
对于myisam可以直接使用 optimize table table_name, 当是InnoDB引擎时,会报“Table does not support optimize, doing recreate + analyze instead”,
一般情况下,由myisam转成innodb,会用alter table table.name engine='innodb’进行转换,优化也可以用这个。
所以当是InnoDB引擎时我们就用alter table table.name engine='innodb’来代替optimize做优化就可以
(6)、delete from表以后虽然未释放磁盘空间,但是下次插入数据的时候,仍然可以使用这部分空间。

通过alter table A engine=innodb来重建表,实现数据库空间回收

参考博客:https://blog.51cto.com/u_710020/5680099

2、Unsupported character encoding ‘utf8mb4’

更改 JDBC 连接字符串
原连接字符串:
jdbc:mysql://localhost:3306/db_xxxxx?useSSL=false&characterEncoding=utf8mb4

修改后的连接字符串:
jdbc:mysql://localhost:3306/db_xxxxx?useSSL=false&character_set_server=utf8mb4

参考博客:https://blog.csdn.net/mingjunlintian/article/details/134818941

3、mysql中字符串截取与拆分

参考博客:https://blog.csdn.net/liqinglonguo/article/details/134673961

4、MySQL 连接数过多的处理方法 Too many connections

查看最大连接数
SHOW VARIABLES LIKE ‘max_connections’;
临时调整当前 MySQL 连接数
set GLOBAL max_connections = 300;

5、MySQL中的not in和null

当我们在MySQL中使用not in时,例如
select id
from user
when id not in(…)
如果not in(…)数据中有null时,返回的结果是空表
错误在于判断 a not in B的方法的本质是a 使用 != 与B中的每一条进行判断
在MySQL中, null代表的就是缺失未知值而不是空值, null与任何值用<>=等运算符判断时候返回的都是null
所以在使用not in 时需要注意数据中是否有null,并且null的判断使用的是is null, 或者is not null, 使用=是不行的
参考博客:https://blog.csdn.net/qq_52059326/article/details/130906129

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/82949.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32F103C8T6板子使用说明

第一章 计算机体系结构(了解) 后续在板子上开发的时候&#xff0c;需要考虑是否有操作系统 方式一&#xff1a;有操作系统&#xff0c;通过c库通过os api操作硬件方式二&#xff1a;无操作系统&#xff0c; 通过c库通过固件库操作硬件 第二章 STM32开发板概述 板子/开发板&…

PBR材质-Unity/Blender/UE

目录 前言&#xff1a; 一、Unity&#xff1a; 二、Blender&#xff1a; 三、UE&#xff1a; 四、全家福&#xff1a; 五、后记&#xff1a; 前言&#xff1a; PBR流程作为表达物理效果的经典方式&#xff0c;很值得一学。纹理贴图使用的是上一期的Textures | cgbookcas…

【生产实践】Linux中/usr/bin、/usr/sbin与/usr/local的关系解析(2025年技术规范)

一、核心定位与功能划分 /usr/bin&#xff1a;用户级通用命令库 • 定位&#xff1a;存储系统预装的用户级可执行文件&#xff0c;这些命令通常由Linux发行版官方软件包管理器&#xff08;如APT、YUM&#xff09;安装&#xff0c;属于系统默认功能的一部分。 • 示例命令&#…

智能网联汽车 “中央计算” 博弈:RTOS 与跨域融合的算力分配挑战

一、引言 随着智能驾驶技术的飞速发展&#xff0c;汽车逐渐从传统的交通工具演变为移动的智能终端。智能网联汽车的核心竞争力日益体现在其强大的计算能力和高效的算力管理上。汽车电子电气架构&#xff08;EEA&#xff09;正经历从分布式架构向 “中央计算 区域控制” 架构的…

【PDF】使用Adobe Acrobat dc添加水印和加密

【PDF】使用Adobe Acrobat dc添加水印和加密 文章目录 [TOC](文章目录) 前言一、添加保护加密口令二、添加水印三、实验四、参考文章总结 实验工具&#xff1a; 1.Adobe Acrobat dc 前言 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、添加保护加…

python面试实战经验分享

2025/3/28第一面 杭州实在智能 见习python开发工程师 1、Python方法中参数默认值可以是列表或者字典吗? 在Python中,函数参数的默认值可以是列表或字典,列表或者字典在初始化应在函数体内,如果不正确处理,可能会导致所有调用都共享同一个列表。 2、协程、线性和进程 进程…

MIST:一键解锁 macOS 历史版本,旧系统安装不再难!

在 Mac 电脑的使用过程中&#xff0c;你是否遇到过这些困扰&#xff1f;为了运行一款经典设计软件&#xff0c;新系统却无法兼容&#xff1b;或是想给老旧 Mac 设备升级&#xff0c;却找不到适配的系统版本。而 App Store 里&#xff0c;旧版 macOS 安装包就像 “隐藏副本”&am…

win10 局域网内聊天

在 Windows 10 的局域网 中&#xff0c;如果你想实现 多个用户之间的聊天功能&#xff0c;可以选择以下几种方案&#xff0c;取决于你需要的是&#xff1a; • ✅ 命令行纯文字聊天&#xff08;如 Linux talk&#xff09; • ✅ 图形界面聊天室 • ✅ 局域网广播消息 • ✅ 多人…

Android CountDownTimer重写

Android 倒计时器重写&#xff0c;实现可重复使用&#xff0c;动态修改计时时间 CountDownTimerRew 是一个可重写、动态修改计时时间的 Android 倒计时器类。它允许开发者设置倒计时总时长、间隔时间&#xff0c;并通过 onTick 和 onFinish 方法实现定时回调。该类支持动态修改…

dp自动化登陆之hCaptcha 验证码

hCaptcha 是一种常见的验证码服务&#xff0c;用于区分人类用户和自动化程序。由于其基于图像识别和行为分析&#xff0c;下面介绍如何使用自动化点击验证码完成登陆。 思路&#xff1a;登陆目标网站触发验证码&#xff0c;截图并发给打码平台返回坐标&#xff0c;模拟人工点击…

【工作记录】crmeb后端项目打开、运行

1、下载代码 1&#xff09;安装git 不再详述 2&#xff09;git拉代码 项目地址如下&#xff0c;在vscode-分支中拉代码 # 克隆项目 git clone https://gitee.com/ZhongBangKeJi/crmeb_java/ 截图如下是已经成功拉下来 注意安装对应版本 2、maven配置 安装配置见&#x…

敏捷软件开发与Scrum

目录 一、敏捷软件开发 敏捷开发原则 敏捷开发特点 二、Scrum (一)Scrum 基础知识

Three.js模型材质调整与性能优化实战

一、材质基础调整 1.1 颜色与透明度控制 通过Material.color属性可直接修改材质颜色&#xff1a; material.color new THREE.Color(0xff0000); // 红色结合opacity属性实现透明效果&#xff1a; material.opacity 0.5; // 50%透明度如需动态调整&#xff0c;可通过Color.…

Flutter速成指南:不懂编程也能10天开发专业级App

Flutter速成指南&#xff1a;不懂编程也能10天开发专业级App &#x1f680; 轻松构建漂亮的跨平台应用 &#x1f4d1; 目录 一、Flutter是什么&#xff1f; 为什么选择Flutter&#xff1f;Flutter工作原理 二、环境搭建与命令行 安装Flutter SDK常用Flutter命令创建第一个项目…

【面试真题】王者荣耀亿级排行榜,如何设计?

目录 一、数据库 order by 二、Redis 的zset 三、抗亿级数据存在的问题 3.1 热点 key 问题 3.1.1 多级缓存&#xff08;RedisJVM本地缓存&#xff09; 3.1.2 读写分离 从库负载均衡 3.1.3 分片Key设计 3.2 内存爆炸 3.2.1 缩短键名 3.2.2 分片存储 3.3 数据持久化风…

Java 语法基础(笔记)

java 的数据类型 基本类型 Java 有八种基本类型&#xff1a; byte&#xff1a;1 字节&#xff0c;-128~127short&#xff1a;2 字节&#xff0c;-32768~32767int&#xff1a;4 字节&#xff0c;-2147483648~2147483647long&#xff1a;8 字节&#xff0c;-92233720368547758…

C# 方法(栈帧)

本章内容: 方法的结构 方法体内部的代码执行 局部变量 局部常量 控制流 方法调用 返回值 返回语句和void方法 局部函数 参数 值参数 引用参数 引用类型作为值参数和引用参数 输出参数 参数数组 参数类型总结 方法重载 命名参数 可选参数 栈帧 递归 栈帧 至此&#xff0c;我们已…

C# 使用 WinUI 3 项目模板创建桌面应用程序

文章目录 1. 概述2. 先决条件3. 创建项目步骤4. 项目结构简介5. 代码示例5.1. MainWindow.xaml (UI 定义)5.2. MainWindow.xaml.cs (逻辑代码) 6. 生成和运行应用程序7. 关键概念 1. 概述 本示例演示如何使用 Visual Studio 中的 “Blank App, Packaged (WinUI 3 in Desktop)”…

设计模式简述(十八)享元模式

享元模式 描述基本组件使用 描述 当内存中存在大量类似的对象时&#xff0c;可以考虑使用享元模式减少整体内存占用。 可以将相同的部分和不同的部分进行拆分&#xff0c;以达到多个对象共享相同部分内存的目的。 基本组件 通常享元对象通过共享的属性映射一个享元对象。 公…

大数据狙击金融欺诈——技术如何守护交易安全?

大数据狙击金融欺诈——技术如何守护交易安全? 金融领域一直是欺诈行为的“重灾区”,从传统的信用卡盗刷到精心策划的网络诈骗,攻击者不断进化手法,使得防御变得越来越复杂。然而,大数据技术的出现,让金融欺诈检测从被动防守转向主动狙击,通过深度学习、行为分析和实时…