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.pswp.cn/diannao/82949.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/82949.shtml
英文地址,請注明出處:http://en.pswp.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;以達到多個對象共享相同部分內存的目的。 基本組件 通常享元對象通過共享的屬性映射一個享元對象。 公…

大數據狙擊金融欺詐——技術如何守護交易安全?

大數據狙擊金融欺詐——技術如何守護交易安全? 金融領域一直是欺詐行為的“重災區”,從傳統的信用卡盜刷到精心策劃的網絡詐騙,攻擊者不斷進化手法,使得防御變得越來越復雜。然而,大數據技術的出現,讓金融欺詐檢測從被動防守轉向主動狙擊,通過深度學習、行為分析和實時…