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

Mysql中的數(shù)據(jù)類型用法及解讀

 更新時間:2025年04月09日 08:50:43   作者:貓咪-9527  
這篇文章主要介紹了Mysql中的數(shù)據(jù)類型用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

1.1數(shù)據(jù)類型分類

MySQL 數(shù)據(jù)類型可以分為三大類:

  1. 數(shù)值類型:包括整數(shù)類型、浮點類型、定點類型等。
  2. 字符串類型:包括 CHAR、VARCHARTEXT 等。
  3. 日期和時間類型:包括 DATEDATETIME、TIMESTAMP 等。

1.2 數(shù)值類型

數(shù)值類型在 MySQL 中主要有整型和小數(shù)型兩種類型。

1.2.1 tinyint 類型

tinyint 類型是一個小的整數(shù)類型,通常用于存儲小范圍的整數(shù)。

范圍

  • 有符號:-128 到 127
  • 無符號:0 到 255
  • 如果插入超出該范圍的值,MySQL 會報錯。

示例:

CREATE TABLE tt1 (num tinyint);
INSERT INTO tt1 VALUES(1);   -- 成功插入
INSERT INTO tt1 VALUES(128); -- 報錯,超出范圍

有符號正數(shù):

有符號負(fù)數(shù):

無符號數(shù):

1.2.2 bit 類型

bit 類型用于存儲位字段,可以存儲二進(jìn)制數(shù)據(jù)。

示例:

CREATE TABLE tt4 (id INT, a BIT(8));
INSERT INTO tt4 VALUES(10, 10); -- 存入10,顯示可能是位二進(jìn)制值

(bit[(M)] : 位字段類型。M表示每個值的位數(shù),范圍從1到64。如果M被忽略,默認(rèn)為1。)

  • 你可以定義存儲的位數(shù),例如 bit(8) 表示存儲 8 位的二進(jìn)制數(shù)。
  • 默認(rèn)情況下,bit 類型在存儲時會顯示為 ASCII 字符。

注:bit字段在顯示時,是按照ASCII碼對應(yīng)的值顯示

1.2.3 小數(shù)類型

1.2.3.1 float 類型

float 類型用于存儲浮動的小數(shù)值,支持四舍五入。

  • 你可以通過 float(M, D) 來定義精度和小數(shù)位數(shù),其中 M 為總位數(shù),D 為小數(shù)位數(shù)。

示例:

CREATE TABLE tt6 (id INT, salary FLOAT(4, 2));
INSERT INTO tt6 VALUES(100, -99.99);  -- 成功插入
INSERT INTO tt6 VALUES(101, -99.991); -- 會進(jìn)行四舍五入,存儲為 -99.99

案例:

小數(shù):float(4,2)表示的范圍是-99.99 ~ 99.99,MySQL在保存值時會進(jìn)行四舍五入。

如果是無符號數(shù)的float,其中的負(fù)數(shù)部分會被舍去。例如:

無符號小數(shù):float(4,2)表示的范圍是0 ~ 99.99,MySQL在保存值時會進(jìn)行四舍五入。

1.2.3.2 decimal 類型

decimal 類型是定點數(shù),精度更高,適用于需要精確存儲小數(shù)的情況。

  • decimal(M, D) 表示最多可以存儲 M 位數(shù),其中 D 位是小數(shù)部分。

示例:

CREATE TABLE tt7 (id INT, salary DECIMAL(5, 2));
INSERT INTO tt7 VALUES(100, 99.99);  -- 成功插入

注: decimal類型和float類型很像,他們都支持四舍五入,他們的無符號類型都是舍去負(fù)數(shù),但是decimal類型的精度比float類型更高。

例如:

1.3 字符串類型

1.3.1 char 類型

char 是固定長度的字符串類型,適用于存儲長度固定的字符串?dāng)?shù)據(jù)。

  • 長度 L 最大為 255 字符。

示例:

CREATE TABLE tt9 (id INT, name CHAR(2));
INSERT INTO tt9 VALUES(100, 'ab');    -- 成功插入
INSERT INTO tt9 VALUES(101, '中國');  -- 成功插入

1.3.2 varchar 類型

varchar 是可變長度的字符串類型,適用于存儲長度不固定的字符串?dāng)?shù)據(jù)。

  • 最大長度是 65535 字節(jié),實際存儲的長度取決于字符集。

示例:

CREATE TABLE tt10 (id INT, name VARCHAR(6));
INSERT INTO tt10 VALUES(100, 'hello');           -- 成功插入
INSERT INTO tt10 VALUES(100, '我愛你,中國');     -- 成功插入

請思考為什么會出現(xiàn)這種情況?

原因是:CHARVARCHAR 類型在 MySQL 中存儲的是字符而非字節(jié)。在默認(rèn)的 utf8 字符集下,每個字符通常占用 3 個字節(jié)。

由于 VARCHAR 是可變長度的字符串類型,它不僅存儲字符本身,還需要額外的空間來記錄實際數(shù)據(jù)的長度。因此,在 utf8 編碼下,VARCHAR 字段的最大字符數(shù)是 21844。

這個限制是因為 VARCHAR 的最大字節(jié)數(shù)為 65535 字節(jié),而每個字符占用 3 個字節(jié),再加上存儲長度的開銷(最多 3 個字節(jié)),因此實際能存儲的最大字符數(shù)為 65535 / 3 = 21845,減去存儲長度所需的空間后,最終可以存儲最多 21844 個字符。

1.3.3charVSvarchar

如何選擇定長或變長字符串?

定長(CHAR

如果數(shù)據(jù)的長度確定且不會變化,使用定長(CHAR)類型更為合適。例如:身份證、手機號、MD5 值等。

變長(VARCHAR

如果數(shù)據(jù)的長度有變化,可以使用變長(VARCHAR)類型。例如:名字、地址等數(shù)據(jù)。

優(yōu)缺點對比:

定長(CHAR

優(yōu)點

  • 存儲固定長度的數(shù)據(jù)時效率高。
  • 因為空間已經(jīng)預(yù)分配,查詢時訪問速度較快。

缺點

  • 存儲短于定義長度的數(shù)據(jù)時會浪費空間。
  • 例如,CHAR(10) 存儲 3 個字符的數(shù)據(jù)時,會浪費 7 個字符的空間。

變長(VARCHAR

優(yōu)點

  • 根據(jù)實際字符長度分配空間,節(jié)省存儲。

缺點

  • 需要動態(tài)計算長度,相比 CHAR 稍慢。
  • 在頻繁查詢或更新時,效率可能較低

1.4 日期和時間類型

常用的日期和時間類型:

  • DATE:存儲日期,格式為 'yyyy-mm-dd'。
  • DATETIME:存儲日期和時間,格式為 'yyyy-mm-dd HH:ii:ss'。
  • TIMESTAMP:存儲時間戳,從1970年1月1日開始計算。

1.5 enum 和 set 類型

1.5.1 enum 類型

enum 類型用于存儲“單選”項。每個選項都有一個數(shù)字編號,對應(yīng)存儲在數(shù)據(jù)庫中的實際值。

示例:

CREATE TABLE votes (username VARCHAR(30), gender ENUM('男', '女'));
INSERT INTO votes VALUES('張三', '男');

enum里面的值默認(rèn)下表從0開始,0表示空NULL

1.5.2 set 類型

set 類型用于存儲“多選”項,可以選擇多個值,值的組合會以數(shù)字標(biāo)識。

示例:

CREATE TABLE votes (username VARCHAR(30), hobby SET('登山', '游泳', '籃球', '武術(shù)'));
INSERT INTO votes VALUES('雷鋒', '登山,游泳');

愛好:爬山登月打球游泳睡覺
601100
510100

原因: SET 類型中的值是按二進(jìn)制位存儲的,每個選項對應(yīng)一個二進(jìn)制位。每個選項的值會用一個數(shù)字表示,數(shù)字的每一位代表一個選項的狀態(tài)(是否選中)。這樣可以節(jié)省存儲空間。

1.6 find_in_set函數(shù)

find_in_set(sub, str_list) 函數(shù)用于查找一個字符串是否在由逗號分隔的字符串列表中。

  • 如果 substr_list 中,返回其位置(下標(biāo))。
  • 如果 sub 不在 str_list 中,返回 0。

示例:

  • find_in_set('a', 'a,b,c') 返回 1,表示 'a''a,b,c' 中的第一個位置。
  • find_in_set('d', 'a,b,c') 返回 0,表示 'd' 不在 'a,b,c' 中。

同時它可以讓查找更方便

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 淺談MySQL next-key lock 加鎖范圍

    淺談MySQL next-key lock 加鎖范圍

    我們知道MYSQL NEXT-KEY LOCK是用來防止幻讀,那么MySQL next-key lock 加鎖范圍是多少,很多人都不知道,本文就來詳細(xì)的介紹一下
    2021-06-06
  • MySQL和Oracle批量插入SQL的通用寫法示例

    MySQL和Oracle批量插入SQL的通用寫法示例

    當(dāng)我們要往數(shù)據(jù)庫中批量保存多條數(shù)據(jù)得時候,分不同數(shù)據(jù)庫,有不同得插入方式,這篇文章主要給大家介紹了關(guān)于MySQL和Oracle批量插入SQL的通用寫法的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • mysql存儲過程詳解

    mysql存儲過程詳解

    我們常用的操作數(shù)據(jù)庫語言SQL語句在執(zhí)行的時候需要要先編譯,然后執(zhí)行,而存儲過程(Stored Procedure)是一組為了完成特定功能的SQL語句集,經(jīng)編譯后存儲在數(shù)據(jù)庫中,用戶通過指定存儲過程的名字并給定參數(shù)(如果該存儲過程帶有參數(shù))來調(diào)用執(zhí)行它
    2012-07-07
  • Linux系統(tǒng)每日定時備份mysql數(shù)據(jù)的方法步驟

    Linux系統(tǒng)每日定時備份mysql數(shù)據(jù)的方法步驟

    這篇文章主要介紹了Linux系統(tǒng)每日定時備份mysql數(shù)據(jù)的方法步驟,包括創(chuàng)建文件夾、編寫腳本、設(shè)置定時任務(wù)和測試腳本,詳細(xì)步驟涵蓋從文件夾創(chuàng)建到腳本執(zhí)行的全過程,幫助用戶實現(xiàn)數(shù)據(jù)庫的自動備份,需要的朋友可以參考下
    2024-11-11
  • springboot啟動404問題以及解決方案

    springboot啟動404問題以及解決方案

    這篇文章主要介紹了springboot啟動404問題以及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • MySQL之where使用詳解

    MySQL之where使用詳解

    我們需要獲取數(shù)據(jù)庫表數(shù)據(jù)的特定子集時,可以使用where子句指定搜索條件進(jìn)行過濾。本文主要介紹了MySQL之where使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • MySQL性能之count* count1 count列對比示例

    MySQL性能之count* count1 count列對比示例

    這篇文章主要為大家介紹了MySQL性能之count* count1 count列對比示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • MySQL8中大小寫敏感與不敏感排序規(guī)則的選擇(根據(jù)字段語義)

    MySQL8中大小寫敏感與不敏感排序規(guī)則的選擇(根據(jù)字段語義)

    MySQL排序規(guī)則決定字符比較、排序等行為,與字符集綁定,影響ORDER?BY等操作,這篇文章主要介紹了MySQL8中大小寫敏感與不敏感排序規(guī)則的選擇,需要的朋友可以參考下
    2026-04-04
  • mysql外鍵(Foreign Key)介紹和創(chuàng)建外鍵的方法

    mysql外鍵(Foreign Key)介紹和創(chuàng)建外鍵的方法

    這篇文章主要介紹了mysql外鍵(Foreign Key)命令和添加外鍵方法,需要的朋友可以參考下
    2014-02-02
  • Mysql IO 內(nèi)存方面的優(yōu)化

    Mysql IO 內(nèi)存方面的優(yōu)化

    這篇文章主要介紹了Mysql IO 內(nèi)存方面的優(yōu)化 的相關(guān)資料,需要的朋友可以參考下
    2016-01-01

最新評論

北流市| 婺源县| 佛冈县| 甘肃省| 田东县| 沭阳县| 杨浦区| 阳泉市| 河北省| 灵武市| 托克逊县| 常德市| 永春县| 海盐县| 靖江市| 东辽县| 陇南市| 隆安县| 林甸县| 琼结县| 田林县| 商洛市| 定州市| 公安县| 南开区| 剑川县| 开封县| 同心县| 富阳市| 白水县| 聊城市| 子洲县| 鱼台县| 和平区| 将乐县| 石渠县| 新建县| 神农架林区| 兴城市| 湖北省| 盐亭县|