最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解mysql?bit/json/enum/set?的數(shù)據(jù)存儲

 更新時間:2023年09月04日 10:03:30   作者:教練、我想打籃球  
這篇文章主要介紹了mysql?bit/json/enum/set?的數(shù)據(jù)存儲,探究的主要內(nèi)容為 int 類類型的存儲, 浮點(diǎn)類類型的存儲, char 類類型的存儲, blob 類類型的存儲, enum/json/set/bit 類類型的存儲,需要的朋友可以參考下

前言

這里主要是 由于之前的一個 datetime 存儲的時間 導(dǎo)致的問題的衍生出來的探究 

探究的主要內(nèi)容為 int 類類型的存儲, 浮點(diǎn)類類型的存儲, char 類類型的存儲, blob 類類型的存儲, enum/json/set/bit 類類型的存儲 

本文主要 的相關(guān)內(nèi)容是 bit/json/enum/set 類類型的相關(guān)數(shù)據(jù)的存儲  

這部分?jǐn)?shù)據(jù) 客戶端 和 服務(wù)器這邊的交互 主要是以字符串的形式交互 

服務(wù)器這邊的存儲 相關(guān)的編碼之后的整形, json 為字符串  

 mysql 中 bit的服務(wù)器客戶端的數(shù)據(jù)交互 

測試數(shù)據(jù)表 以及數(shù)據(jù)如下

CREATE TABLE `tz_test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `field1` bit(6) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8
INSERT INTO `test`.`tz_test`(`id`, `field1`) VALUES (1, '7');

測試腳本如下 

package com.hx.test07;
/**
 * Test06MysqlTimezone
 *
 * @author Jerry.X.He
 * @version 1.0
 * @date 2023/4/24 16:26
 */
public class Test06MysqlTimezone {
    // Test06MysqlTimezone
    public static void main(String[] args) {
        String url = "jdbc:mysql://10.60.50.16:3306/test?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&autoReconnectForPools=true&useSSL=false";
        String username = "root";
        String password = "root";
        JdbcTemplate jdbcTemplate = Test14GenExpertSql.getMysqlJdbcTemplate(url, username, password);
        String sql = " select * from tz_test; ";
        List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
        int x = 0;
    }
}

mysql 是將給定的 bit 的數(shù)據(jù)以 字符串的形式 交互給客戶端的

mysql 服務(wù)器中對應(yīng)的類型為 BIT

2cd0f3156ad64e61b44bd67a0998751b.png

bit 這邊轉(zhuǎn)換, 是直接獲取的給定的字段對應(yīng)的 字節(jié)序列

這里是 new byte[] { 0x37 }

83c5ed4a21894aae976038d7ed0982e5.png

與客戶端的交互, 取出存放的 bits 的數(shù)據(jù) 

然后 拷貝到 val_buffer 響應(yīng)給客戶端, 這里輸出了一個 '7' 

017b10e165dd489d97b409af286d339c.png

mysql 服務(wù)器 bit 的存儲

是轉(zhuǎn)換為單字節(jié)進(jìn)行存儲的  

477943a6549a41a6b575314d78bdc44c.png

 mysql 中 json 的服務(wù)器客戶端的數(shù)據(jù)交互 

和上面 bit 相同 

mysql 服務(wù)器中對應(yīng)的類型為 JSON

835ce55ef51f4ce986e7d61b18e679c8.png

與客戶端的交互, 以 my_charset_bin 反序列化為字符串, 格式化為 json 

然后輸出 json 字符串到給定的 buf 

6d7d5da51d3c4596b41034d27cf47271.png

mysql 服務(wù)器 json的存儲

將給定的 json 的 字符串以 my_charset_bin 序列化為 二進(jìn)制, 以二進(jìn)制的形式存儲

以下代碼 基于 mysql-8.0.23

6a43fe7b0c6a443e8b1a3e16c7e67ac7.png

e6018e19fd5642e2ad35749a475daa20.png

 mysql 中 enum的服務(wù)器客戶端的數(shù)據(jù)交互 

和上面 bit 相同 

mysql 服務(wù)器中對應(yīng)的類型為 STRING? 為什么不是 ENUM 

b44f31187e1845188fa1bea22c801ab8.png

與客戶端的交互, 獲取當(dāng)前字段 在枚舉的索引, 然后 根據(jù)配置的選項(xiàng)列表 獲取對應(yīng)的字符串表示

45b75211e57f465d8ea6581f0b66cc80.png

mysql 服務(wù)器 enum 的存儲

根據(jù)輸入的 枚舉字符 獲取索引, 然后 存儲的是具體的索引

0d2e290afbdd4f73a96a6156ff6a6d0d.png

假設(shè)輸入的字段值 不在枚舉列表中, 則存放的是 0, 表示的空字符串

0310debc806941f8a4ac3e998e258719.png

數(shù)據(jù)的存儲是根據(jù)索引的值域 按不同的長度進(jìn)行存儲

a24938127ef84ec991da044672f576d9.png

 mysql 中 set 的服務(wù)器客戶端的數(shù)據(jù)交互

和上面 bit 相同 

mysql 服務(wù)器中對應(yīng)的類型為 STRING? 為什么不是 SET 

acf9a8e7121742368676ef274b3dcfb8.png

與客戶端的交互, 從當(dāng)前字段的值中 按照權(quán)重 獲取相應(yīng)的字符串表示, 并用 分隔符 連接起來

d3ed814b700a465eb7a1700212ffcbb6.png

mysql 服務(wù)器 set 的存儲

可以看到 boy, girl, unknown 的索引分別為 0, 1, 2, 權(quán)重分別為 1, 2, 4

因此 這里存儲的 girl, unknown 為 2 + 4 = 6

數(shù)據(jù)的存儲 和上面 enum 一致, 根據(jù)存儲的值的取值區(qū)間 按不同的長度進(jìn)行存儲 

52b6ba161199459e9d2d631e20b62de8.png

對于匹配不上的值 這里的處理是 直接過濾掉

299dcbdd87354717b7238bfb03f8ac31.png

到此這篇關(guān)于mysql bit/json/enum/set 的數(shù)據(jù)存儲的文章就介紹到這了,更多相關(guān)mysql 數(shù)據(jù)存儲內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL子查詢操作實(shí)例詳解

    MySQL子查詢操作實(shí)例詳解

    這篇文章主要介紹了MySQL子查詢操作,結(jié)合實(shí)例形式較為詳細(xì)的分析了mysql表的創(chuàng)建、常見子查詢運(yùn)算與關(guān)鍵字使用技巧,需要的朋友可以參考下
    2018-06-06
  • 詳解使用navicat連接遠(yuǎn)程linux mysql數(shù)據(jù)庫出現(xiàn)10061未知故障

    詳解使用navicat連接遠(yuǎn)程linux mysql數(shù)據(jù)庫出現(xiàn)10061未知故障

    這篇文章主要介紹了navicat連接遠(yuǎn)程linux mysql數(shù)據(jù)庫出現(xiàn)10061未知故障,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • MySQL不能顯示中文問題及解決

    MySQL不能顯示中文問題及解決

    這篇文章主要介紹了MySQL不能顯示中文問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • linux采用binary方式安裝mysql

    linux采用binary方式安裝mysql

    這篇文章主要為大家詳細(xì)介紹了linux采用binary方式安裝mysql步驟,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • MYSQL關(guān)聯(lián)關(guān)系查詢方式

    MYSQL關(guān)聯(lián)關(guān)系查詢方式

    文章詳細(xì)介紹了MySQL中如何使用內(nèi)連接和左外連接進(jìn)行表的關(guān)聯(lián)查詢,并展示了如何選擇列和使用別名,文章還提供了一些關(guān)于查詢優(yōu)化的建議,并鼓勵讀者參考和支持腳本之家
    2025-02-02
  • 解決Linux下Tomcat向MySQL插入數(shù)據(jù)中文亂碼問題

    解決Linux下Tomcat向MySQL插入數(shù)據(jù)中文亂碼問題

    本文給大家介紹的是如何解決win平臺下開發(fā)的項(xiàng)目移植到Linux平臺后,向MySQL插入數(shù)據(jù)時中文出現(xiàn)亂碼的問題,非常的簡單實(shí)用,有需要的小伙伴可以參考下
    2018-04-04
  • MySQL學(xué)習(xí)之日期函數(shù)的用法詳解

    MySQL學(xué)習(xí)之日期函數(shù)的用法詳解

    本文將學(xué)習(xí)MySQL的日期函數(shù),在前面章節(jié)的練習(xí)中,我們就利用過NOW()函數(shù)來獲取過當(dāng)前系統(tǒng)時間,用DATEDIFF函數(shù)來計(jì)算日期相差的天數(shù),接下來我們就系統(tǒng)的學(xué)習(xí)一下 日期函數(shù)
    2022-08-08
  • MySQL中的性別字段到底加不加索引

    MySQL中的性別字段到底加不加索引

    這篇文章主要介紹了MySQL中的性別字段到底加不加索引問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • MySQL?遷移OB?Oracle場景中自增主鍵實(shí)踐操作

    MySQL?遷移OB?Oracle場景中自增主鍵實(shí)踐操作

    這篇文章主要介紹了MySQL?遷移OB?Oracle場景中自增主鍵實(shí)踐操作詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • MySQL ERROR 1045 (28000): Access denied for user ''root''@''localhost'' (using password: NO) 的原因分解決辦法

    MySQL ERROR 1045 (28000): Access denied for user ''root''@''

    這篇文章主要介紹了MySQL ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 的原因分解決辦法的相關(guān)資料,需要的朋友可以參考下
    2016-05-05

最新評論

许昌市| 重庆市| 阳城县| 三门峡市| 桐乡市| 贵阳市| 类乌齐县| 郯城县| 芜湖市| 封丘县| 馆陶县| 新宁县| 长沙县| 碌曲县| 云林县| 会理县| 沾化县| 泽州县| 介休市| 绿春县| 长宁区| 南康市| 惠安县| 锡林浩特市| 杭锦后旗| 黑龙江省| 久治县| 庄浪县| 台中市| 泰宁县| 渝北区| 东台市| 抚宁县| 诏安县| 昭平县| 泾源县| 全州县| 西青区| 望江县| 揭西县| 商水县|