MySQL中JSON數(shù)據(jù)類型的使用指南
一、概念篇:MySQL中的JSON
在快速迭代的互聯(lián)網(wǎng)時(shí)代,數(shù)據(jù)已成為驅(qū)動(dòng)業(yè)務(wù)增長(zhǎng)和創(chuàng)新的核心要素。然而,隨著應(yīng)用場(chǎng)景的多樣化和復(fù)雜化,傳統(tǒng)固定表結(jié)構(gòu)常常成為開發(fā)者的噩夢(mèng)。正是在這樣的背景下,MySQL 作為世界上最流行的開源關(guān)系型數(shù)據(jù)庫(kù)之一,從 5.7 版本開始正式引入了原生 JSON 數(shù)據(jù)類型,標(biāo)志著關(guān)系型數(shù)據(jù)庫(kù)在處理非結(jié)構(gòu)化數(shù)據(jù)方面邁出了重要一步,為關(guān)系型數(shù)據(jù)庫(kù)中存儲(chǔ)、查詢和操作這類數(shù)據(jù)提供了強(qiáng)有力的工具。
從 MySQL 5.7 版本引入了JSON數(shù)據(jù)類型開始,JSON 格式字符串將不再以字符串的形式存儲(chǔ),而是采用一種允許快速讀取文本元素的內(nèi)部二進(jìn)制格式。本質(zhì)上,MySQL 的 JSON 數(shù)據(jù)類型扮演了“橋梁”角色:既保留了關(guān)系型數(shù)據(jù)庫(kù)的強(qiáng)大事務(wù)處理能力和成熟生態(tài)系統(tǒng),又吸收了非結(jié)構(gòu)化數(shù)據(jù)處理的高度靈活性。在 MySQL 中使用 JSON 數(shù)據(jù)類型,可以簡(jiǎn)化半結(jié)構(gòu)化或?qū)蛹?jí)數(shù)據(jù)的處理流程,帶來(lái)諸多優(yōu)勢(shì):
- 靈活性:JSON 結(jié)構(gòu)支持動(dòng)態(tài)、層級(jí)數(shù)據(jù)的靈活存儲(chǔ)。
- 內(nèi)置函數(shù):MySQL 提供高效的 JSON 數(shù)據(jù)查詢、更新和驗(yàn)證函數(shù)。
- 集成性:可以將關(guān)系型數(shù)據(jù)與 JSON 對(duì)象結(jié)合,實(shí)現(xiàn)混合數(shù)據(jù)模型。
| 特性 | MySQL 5.7 | MySQL 8.0 |
|---|---|---|
| JSON數(shù)據(jù)類型 | ? 基礎(chǔ)支持 | ? 完整支持 |
| JSON函數(shù) | ? 基礎(chǔ)函數(shù) | ? 豐富函數(shù)庫(kù) |
| JSON索引 | ? 函數(shù)索引 | ? 多列索引 |
| JSON性能 | ?? 一般 | ? 大幅提升 |
| JSON驗(yàn)證 | ? 基礎(chǔ)驗(yàn)證 | ? 嚴(yán)格驗(yàn)證 |
二、MySQL JSON數(shù)據(jù)類型基礎(chǔ)
2.1 創(chuàng)建 JSON 數(shù)據(jù)
在MySQL中聲明JSON列非常簡(jiǎn)單,只需在創(chuàng)建表或修改表結(jié)構(gòu)時(shí)指定列的數(shù)據(jù)類型為JSON即可。以下是一個(gè)基本的建表示例:
CREATE TABLE users ( id INT PRIMARY KEY auto_increment, user_id INT NOT NULL UNIQUE, NAME VARCHAR ( 32 ), details JSON NOT NULL COMMENT '用戶詳情信息', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) ENGINE = INNODB DEFAULT CHARSET = utf8mb4;
在上述示例中,details 列被定義為JSON類型,用于存儲(chǔ)用戶的配置信息或其他非結(jié)構(gòu)化數(shù)據(jù)。需要注意的是,JSON 列不能有默認(rèn)值,且不支持直接索引。
2.2 插入 JSON 數(shù)據(jù)
MySQL 的 JSON 類型遵循 JSON 標(biāo)準(zhǔn),這一標(biāo)準(zhǔn)明確規(guī)定了 JSON 數(shù)據(jù)的有效結(jié)構(gòu)形式。向 JSON 列插入數(shù)據(jù)時(shí),必須確保數(shù)據(jù)是有效的 JSON 格式,在插入時(shí)MySQL會(huì)自動(dòng)進(jìn)行驗(yàn)證,未通過(guò)驗(yàn)證的文本將產(chǎn)生一個(gè)錯(cuò)誤信息,從而阻止數(shù)據(jù)的正常插入。以下是幾種插入JSON數(shù)據(jù)的常見方式:
直接插入JSON字符串
INSERT INTO users (user_id,NAME,details) VALUES (1001,'張三','{
"age": 30,
"sex": 1,
"email": "zhangsan@example.com",
"hobbies": ["coding", "reading"],
"address": {
"city": "北京",
"zip": "10001"
},
"role": [
{
"roleCode": "guest",
"roleName": "訪客人員"
},
{
"roleCode": "tester",
"roleName": "測(cè)試人員"
}
]
}
');
INSERT INTO users (user_id,NAME,details) VALUES (1002,'李四','{
"age": 25,
"sex": 2,
"email": "lisi@example.com",
"hobbies": ["coding", "reading"],
"address": {
"city": "上海",
"zip": "90001"
},
"role": [
{
"roleCode": "system",
"roleName": "系統(tǒng)管理員"
},
{
"roleCode": "developer",
"roleName": "系統(tǒng)開發(fā)人員"
}
]
}
');
使用JSON函數(shù)生成JSON數(shù)據(jù):MySQL提供如下 JSON 函數(shù)來(lái)動(dòng)態(tài)構(gòu)建 JSON 數(shù)據(jù),這種方式可以避免手動(dòng)拼接JSON字符串時(shí)可能出現(xiàn)的格式錯(cuò)誤。
| 函數(shù) | 簡(jiǎn)要說(shuō)明 |
|---|---|
| JSON_OBJECT() | 將鍵值對(duì)轉(zhuǎn)換為 JSON 對(duì)象,鍵值對(duì)自動(dòng)包裝 |
| JSON_ARRAY() | 將一組值轉(zhuǎn)換為 JSON 數(shù)組,元素自動(dòng)轉(zhuǎn)JSON類型 |
-- 構(gòu)造一個(gè) JSON 對(duì)象
SELECT JSON_OBJECT('name', 'John Doe', 'age', 30) AS person;
-- 構(gòu)造一個(gè) JSON 數(shù)組
SELECT JSON_ARRAY('apple', 'banana', 'cherry') AS fruits;
JSON_OBJECT 的鍵名如果是數(shù)字,會(huì)被強(qiáng)制轉(zhuǎn)字符串(如 JSON_OBJECT(1, 'test') 生成 {"1": "test"})
2.3 查詢 JSON 數(shù)據(jù)
MySQL 對(duì)JSON類型字段提供許多內(nèi)置函數(shù),可以靈活的處理JSON數(shù)據(jù)。常見操作包括:提取 JSON 字段值(通過(guò)鍵或路徑查詢)、檢索嵌套字段值、過(guò)濾和排序 JSON 數(shù)據(jù)等。
提取 JSON 字段值
JSON_EXTRACT() 是提取字段值的核心函數(shù),用來(lái)從 JSON 數(shù)據(jù)字段中獲取指定路徑的值。JSON_EXTRACT() 函數(shù)的語(yǔ)法格式如下:
JSON_EXTRACT(json_doc, path[, path] ...)
其中,json_doc 是 JSON 文檔,path 是路徑。該函數(shù)會(huì)從 JSON 文檔提取指定路徑(path)的元素。如果指定 path 不存在,會(huì)返回 NULL??芍付ǘ鄠€(gè) path,匹配到的多個(gè)值會(huì)以數(shù)組形式返回。
-- 提取 JSON 字段中的 "email" SELECT JSON_EXTRACT(details, '$.email') AS email FROM users; -- 提取JSON字段的“email”和“age”字段,結(jié)果以數(shù)組形式返回 SELECT JSON_EXTRACT(details,'$.email','$.age') FROM users; -- 獲取JSON數(shù)組的SQL SELECT JSON_EXTRACT(details,'$.hobbies[0]') AS name FROM users;
如果 JSON 數(shù)據(jù)包含嵌套結(jié)構(gòu),可以通過(guò)路徑表達(dá)式逐層訪問(wèn)。
-- 查詢嵌套字段 "details.location.city" SELECT JSON_EXTRACT(details, '$.address.city') AS city FROM users;
過(guò)濾和排序 JSON 數(shù)據(jù)
通過(guò) WHERE 子句和路徑表達(dá)式篩選滿足條件的數(shù)據(jù)。
-- 查詢 JSON 數(shù)據(jù)中 "age" 大于 25 的記錄 SELECT * FROM users WHERE JSON_EXTRACT(details, '$.age') > 25; -- 查詢 JSON 數(shù)據(jù)中 "email" 為 "zhangsan@example.com" 的記錄 SELECT * FROM users WHERE JSON_UNQUOTE(JSON_EXTRACT(details, '$.email')) = 'zhangsan@example.com';
JSON_UNQUOTE() 用于移除 JSON_EXTRACT() 返回值中的雙引號(hào),提取字段的原始值。
2.4 修改 JSON 數(shù)據(jù)
-- 更新張三的城市為shandong UPDATE users SET details = JSON_SET(details, '$.address.city', '山東') WHERE name = '張三'; -- 刪除張三的地址信息 UPDATE users SET details = JSON_REMOVE(details, '$.address') WHERE name = '張三';
三、JSON數(shù)據(jù)操作:查詢與更新技巧
MySQL 的 JSON 函數(shù)庫(kù)堪稱數(shù)據(jù)庫(kù)界的“瑞士軍刀”,可以快速對(duì)JSON類型的數(shù)據(jù)進(jìn)行查詢、更新,這也是 MySQ L中處理 JSON 數(shù)據(jù)最頻繁的操作。這些函數(shù)不僅簡(jiǎn)化了操作流程,還顯著提升了數(shù)據(jù)處理的靈活性和性能。
3.1 查詢解析
這是日常開發(fā)中最常用的功能,數(shù)據(jù)被轉(zhuǎn)換為 JSON 格式后,即可對(duì)其進(jìn)行快速解析,高效提取數(shù)據(jù)。
| 函數(shù) | 簡(jiǎn)要說(shuō)明 |
|---|---|
| json_extract(json_doc, path) | 標(biāo)準(zhǔn)提取函數(shù),用于從 JSON 文檔中提取指定路徑的值 |
| JSON_UNQUOTE | 提取字段值并去除引號(hào) |
-- 原始數(shù)據(jù)
SET @user = '{
"age": 30,
"sex": 1,
"email": "zhangsan@example.com",
"hobbies": ["coding", "reading"],
"address": {
"city": "北京",
"zip": "10001"
},
"role": [
{
"roleCode": "guest",
"roleName": "訪客人員"
},
{
"roleCode": "tester",
"roleName": "測(cè)試人員"
}
]
}';
-- 從JSON對(duì)象中取出單個(gè)值(帶引號(hào))
SELECT JSON_EXTRACT(@user, '$.address.city');
SELECT JSON_EXTRACT(@user, '$.email');
-- 從JSON數(shù)組取出單個(gè)值
SELECT JSON_EXTRACT(@user, '$.hobbies[0]');
SELECT JSON_EXTRACT(@user, '$.role[0]');
除了標(biāo)準(zhǔn)的提取函數(shù),MySQL 提供了基于操作符的語(yǔ)法糖操作:
| 函數(shù) | 簡(jiǎn)要說(shuō)明 |
|---|---|
| -> | 用于提取帶有引號(hào)的字符串或其他合法的 JSON 數(shù)據(jù)類型 |
| ->> | 用于提取 JSON 字段并返回原始值(移除了 JSON 格式中的雙引號(hào)) |
-- 提取名字(帶雙引號(hào)) SELECT name, details->'$.email' FROM users; -- 提取名字(純文本,推薦) SELECT name, details->>'$.email' FROM users;
注意:路徑表達(dá)式嚴(yán)格區(qū)分大小寫(如 $.Name 和 $.name 是不同的);如果數(shù)組越界或路徑不存在,會(huì)返回 NULL。
3.2 修改與更新
以下函數(shù)用于更新或添加 JSON 數(shù)據(jù)元素:
| 函數(shù) | 簡(jiǎn)要說(shuō)明 |
|---|---|
| json_insert(json_doc, path, val[, path, val] …) | 僅新增,只在路徑不存在時(shí)插入值,若路徑已存在則不做任何操作 |
| json_set(json_doc, path, val, …) | 用于插入或更新JSON文檔中的值。如果指定路徑不存在則新增;如果存在則覆蓋修改 |
| json_replace(json_doc, path, val[, path, val] …) | 僅修改。只在路徑已存在時(shí)替換值,若路徑不存在則不做任何操作 |
| json_remove(json_doc, path[, path] …) | 用于從JSON文檔中刪除指定路徑的數(shù)據(jù)。 如果路徑存在則刪除,如果路徑不存在,則返回原 JSON 數(shù)據(jù) |
-- 原始數(shù)據(jù)
SET @user = '{
"id": 14,
"name": "張三",
"age": 30
}';
-- 僅在 email 不存在時(shí)添加
SELECT json_insert(@user, '$.email', 'test@example.com');
-- 存在則更新字段
SELECT JSON_SET(@user, '$.age', 35);
-- 不存在則新增字段
SELECT JSON_SET(@user, '$.gender', 'male');
-- 如果目標(biāo)路徑中已經(jīng)存在值,那么會(huì)將其替換為新的值
SELECT json_replace(@user, '$.age', 35);
SELECT json_replace(@user, '$.gender', 'male');
-- 對(duì)于JSON對(duì)象,只需指定要?jiǎng)h除的鍵即可
SELECT json_remove(@user, '$.age');
修改函數(shù)會(huì)生成新 JSON 對(duì)象(類似 Java 的 String 拼接),頻繁操作可能觸發(fā)內(nèi)存告警。
3.3 類型檢查與驗(yàn)證
| 函數(shù) | 簡(jiǎn)要說(shuō)明 |
|---|---|
| JSON_TYPE | 獲取 JSON 值的數(shù)據(jù)類型。 除了是MySQL中的數(shù)據(jù)類型外,還有OBJECT、ARRAY,其中OBJECT表示JSON對(duì)象,ARRAY表示JSON數(shù)組 |
| JSON_VALID | 判斷一個(gè)字符串是否是合法的 JSON 格式,常用于數(shù)據(jù)清洗 如果是,則返回1,否則返回0,如果value的值為NULL,則返回NULL |
-- 原始數(shù)據(jù)
SET @user = '{
"id": 14,
"name": "張三",
"age": 30,
"address": {"city": "北京", "zip": "100000"},
"hobbies": ["coding", "籃球"]
}';
SELECT JSON_TYPE(@user);
SELECT JSON_TYPE(JSON_EXTRACT(@user,'$.age')); -- INTEGER
SELECT JSON_TYPE(JSON_EXTRACT(@user,'$.name')); -- STRING
SELECT JSON_TYPE(JSON_EXTRACT(@user,'$.hobbies')); -- ARRAY
SELECT JSON_VALID('{"name": "test"}');
SELECT JSON_VALID('{name: test}');
SELECT JSON_VALID('null'), JSON_VALID('Null'), JSON_VALID('NULL');
3.4 搜索與判斷
用于在復(fù)雜的 JSON 結(jié)構(gòu)中查找數(shù)據(jù)或判斷包含關(guān)系:
| 函數(shù) | 簡(jiǎn)要說(shuō)明 |
|---|---|
| json_contains(json_doc, target[, path]) | 用于檢查JSON文檔中是否包含某個(gè)值,如果包含則返回1,否則返回0 |
| json_contains_path(json_doc, one_or_all, path [,path …]) | 判斷 JSON 文檔是否包含指定的路徑 |
| json_search(json_doc, one_or_all, search_str, path) | 查找指定字符串在 JSON 中的路徑。 one 表示找到第一個(gè)就返回,all 表示返回所有匹配的路徑。 |
-- 判斷 hobbies 中是否包含 "coding"(注意值需要用 JSON 字符串格式 '"coding"')
SELECT json_contains('{"name":"李四","hobbies":["coding","reading"]}', '"coding"', '$.hobbies');
-- 搜索值為 "張三" 的路徑(返回第一個(gè)匹配)
SELECT json_search('{"name": "張三", "age": 25, "city": "北京"}', 'one', '張三');
-- 搜索包含 "海" 的值(使用通配符)
SELECT json_search('[{"name":"張三","age":25,"city":"北京"},{"name":"李四","age":30,"city":"上海"}]', 'one', '%海%')
-- 搜索所有包含 "張" 的值
SELECT json_search('[{"name":"張三","age":25,"city":"北京"},{"name":"李四","age":30,"city":"上海"}]', 'all', '%張%')
-- 指定搜索路徑:只在 name 字段中搜索
SELECT json_search('{"name": "張三", "age": 25, "city": "北京"}', 'one', '%三%', NULL, '$.name')
JSON_SEARCH 只匹配字符串類型,不匹配數(shù)字、布爾值等。
四、提升JSON數(shù)據(jù)處理效率
4.1 數(shù)據(jù)合并
| 函數(shù) | 簡(jiǎn)要說(shuō)明 |
|---|---|
| JSON_MERGE | 用于合并兩個(gè)JSON文檔。在 MySQL 8.0 中,已不建議使用 |
| JSON_MERGE_PRESERVE | 合并 JSON 值,保留重復(fù)鍵的值 |
| JSON_MERGE_PATCH | 合并 JSON 值,丟棄除最后一個(gè)值以外的所有值 |
json_merge_preserve() 函數(shù)
json_merge_preserve() 在合并 JSON 數(shù)組時(shí),會(huì)把所有元素簡(jiǎn)單的拼接成一個(gè)大數(shù)組:
-- 輸出結(jié)果:[1, 2, true, false, "a", "b"]
SELECT json_merge_preserve('[1, 2]', '[true, false]','["a","b"]');
-- 輸出結(jié)果:[1, 2, {"key1": "value1"}]
SELECT json_merge_preserve('[1, 2]', '{"key1": "value1"}');
如果合并的是 JSON 對(duì)象,json_merge_preserve()函數(shù)會(huì)保留所有非重復(fù)鍵值對(duì),對(duì)于重復(fù)的鍵,會(huì)將其值合并為JSON數(shù)組保留下來(lái)
-- 輸出結(jié)果:{"key1": "value1", "key2": "value2"}
SELECT json_merge_preserve('{"key1": "value1"}','{"key2": "value2"}');
-- 輸出結(jié)果:{"key1": ["value1", "value3"], "key2": "value2"}
SELECT json_merge_preserve('{"key1": "value1"}','{"key2": "value2","key1":"value3"}') duplicate_key1;
-- 輸出結(jié)果:{"key1": ["value1", "value3", null], "key2": "value2"}
SELECT json_merge_preserve('{"key1": "value1"}','{"key2": "value2","key1":"value3"}','{"key1": null}') last_value_is_null;
json_merge_patch() 函數(shù)
json_merge_patch() 在合并JSON數(shù)組時(shí),會(huì)將每個(gè)參數(shù)視為獨(dú)立的元素,并應(yīng)用"最后的值勝出"原則,只選擇最后一個(gè)元素,因此只要函數(shù)中包含JSON數(shù)組,只有最后一個(gè)值會(huì)保留下來(lái):
-- 輸出結(jié)果:["a", "b"]
SELECT json_merge_patch('[1, 2]', '[true, false]','["a","b"]');
-- 輸出結(jié)果:{"key1": "value1"}
SELECT json_merge_patch('[1, 2]', '{"key1": "value1"}');
-- 輸出結(jié)果:[1, 2]
SELECT json_merge_patch('{"key1": "value1"}','{"key2": "value2"}','[1, 2]');
如果合并的都是JSON對(duì)象, json_merge_patch()函數(shù)會(huì)保留所有非重復(fù)鍵值對(duì),對(duì)于重復(fù)的鍵,只保留最后出現(xiàn)的值(但最后出現(xiàn)的值不能為null,否則會(huì)刪除該鍵值):
-- 輸出結(jié)果:{"key1": "value1", "key2": "value2"}
SELECT json_merge_patch('{"key1": "value1"}','{"key2": "value2"}');
-- 輸出結(jié)果:{"key1": "value3", "key2": "value2"}
SELECT json_merge_patch('{"key1": "value1"}','{"key2": "value2","key1":"value3"}') duplicate_key;
-- 輸出結(jié)果:{"key2": "value2"}
SELECT json_merge_patch('{"key1": "value1"}','{"key2": "value2","key1":"value3"}','{"key1": null}') last_value_is_null;
4.2 JSON 數(shù)據(jù)聚合
MySQL 提供多種函數(shù)用于將查詢結(jié)果聚合為 JSON 結(jié)構(gòu):
| 函數(shù) | 簡(jiǎn)要說(shuō)明 |
|---|---|
| JSON_ARRAYAGG() | |
| JSON_OBJECTAGG() |
SELECT JSON_ARRAYAGG(name) AS names FROM ( SELECT JSON_EXTRACT(details, '$.name') AS name FROM users) AS subquery;
4.3 JSON 數(shù)組中的范圍
數(shù)組類型的JSON,可以使用帶有 to 關(guān)鍵字的 range 來(lái)指定 JSON 數(shù)組的子集。比如可以通過(guò) [M to N] 獲取數(shù)組的子集,通過(guò) [*] 獲取數(shù)組中的所有元素。
-- 獲取數(shù)組的第二、第三和第四個(gè)元素
SELECT JSON_EXTRACT('[1, 2, 3, 4, 5]', '$[1 to 3]');
SELECT JSON_EXTRACT('[1, 2, 3, 4, 5]', '$[*]');
注意的是,雖然 JSON 類型同時(shí)支持 JSON 對(duì)象和 JSON 數(shù)組兩種類型,但在使用的時(shí)候最好不要兩者混用,否者在上述兩種查詢種會(huì)出現(xiàn)一些不符合預(yù)期的結(jié)果。
4.4 最右邊的數(shù)組元素
支持用 last 關(guān)鍵字作為數(shù)組中最后一個(gè)元素下標(biāo)的同義詞。last-N 形式的表達(dá)式可用于相對(duì)地址和范圍定義,如下所示:
SELECT JSON_EXTRACT('[1, 2, 3, 4, 5]', '$[last-3 to last-1]');
4.5 JSON數(shù)據(jù)與索引
在 MySQL 的表中,JSON 類型的列通常無(wú)法直接建立索引,但可以用虛擬生成列,并根據(jù)該列來(lái)建立間接索引。但是在 MySQL 8 版本開始,對(duì)于 JSON 數(shù)組(JSON對(duì)象不行),可以建立多值索引。
索引優(yōu)化方案
對(duì)于JSON數(shù)據(jù)類型需要建立索引,可以對(duì)將經(jīng)常查詢的元素提取出來(lái),作為一個(gè)虛擬的生成列,并在該列上建立索引,查詢時(shí)通過(guò)虛擬列上索引即可快速定位數(shù)據(jù)。例如,為用戶表中的郵箱創(chuàng)建虛擬列和索引。
ALTER TABLE users ADD COLUMN email VARCHAR(255) GENERATED ALWAYS AS (details->>'$.email') STORED; CREATE INDEX idx_email ON users (email);
使用全文索引
對(duì)于包含大量文本的JSON字段,可以使用全文索引來(lái)提高查詢性能。
ALTER TABLE users ADD FULLTEXT(details);
SELECT * FROM users WHERE MATCH(details) AGAINST('shanghai');
五、總結(jié)
通過(guò)本文的介紹,我們了解了MySQL中JSON數(shù)據(jù)類型的基本操作、常用JSON函數(shù)、以及如何通過(guò)索引和優(yōu)化來(lái)提高查詢性能。JSON數(shù)據(jù)類型為存儲(chǔ)和操作結(jié)構(gòu)化數(shù)據(jù)提供了靈活性和便利性,在現(xiàn)代數(shù)據(jù)庫(kù)應(yīng)用中具有廣泛的應(yīng)用前景。
以上就是MySQL中JSON數(shù)據(jù)類型的使用指南的詳細(xì)內(nèi)容,更多關(guān)于MySQL JSON數(shù)據(jù)類型使用的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
mysql啟動(dòng)服務(wù)報(bào)1058錯(cuò)誤的解決方法
這篇文章主要介紹了mysql啟動(dòng)服務(wù)報(bào)1058錯(cuò)誤的解決方法,需要的朋友可以參考下2014-03-03
使用Navicat連接遠(yuǎn)程服務(wù)器中在docker中運(yùn)行的MySQL數(shù)據(jù)庫(kù)全過(guò)程
文章介紹了如何使用Navicat客戶端連接到運(yùn)行在Docker容器中的MySQL數(shù)據(jù)庫(kù),首先,需要獲取服務(wù)器的公網(wǎng)IP和MySQL容器的IP地址,然后,在Navicat中配置SSH連接到服務(wù)器,并測(cè)試連接,接著,配置MySQL連接參數(shù),并再次測(cè)試連接,最后,確認(rèn)連接成功2026-03-03
mysql(master/slave)主從復(fù)制原理及配置圖文詳解
這篇文章主要介紹了mysql(master/slave)主從復(fù)制原理及配置圖文詳解,以前腳本之家小編發(fā)過(guò)相關(guān)的內(nèi)容,但這么好的非常少見特分享一下,需要的朋友可以參考下2016-05-05
mysql性能優(yōu)化工具--tuner-primer使用介紹
這篇文章主要介紹了mysql性能優(yōu)化工具--tuner-primer的使用方法與返回?cái)?shù)據(jù)分析,需要的朋友可以參考下2016-05-05
MySQL全文索引在數(shù)據(jù)庫(kù)中的應(yīng)用和優(yōu)勢(shì)(模糊查詢不用like+%)
全文索引技術(shù)可以有效地從大量文本中檢索信息,適用于搜索引擎和電商平臺(tái)等場(chǎng)景,InnoDB從MySQL5.6開始支持全文索引,使用倒排索引實(shí)現(xiàn),全文檢索分為自然語(yǔ)言搜索、布爾搜索和查詢擴(kuò)展搜索三種模式,全文索引提高了模糊查詢的效率,優(yōu)化了基于文本的搜索查詢2024-09-09

