欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL字段類型全面解讀

 更新時(shí)間:2023年10月18日 16:48:05   作者:kun_行者  
這篇文章主要介紹了MySQL字段類型,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

前言

要了解一個(gè)數(shù)據(jù)庫,我們必須了解其支持的數(shù)據(jù)類型。MySQL 支持大量的字段類型,其中常用的也有很多。

前面我們也講過 int 及 varchar 類型的用法,但一直沒有全面講過字段類型,本篇文章我們將把字段類型一網(wǎng)打盡,講一講常用字段類型的用法。

常用的字段類型大致可以分為數(shù)值類型、字符串類型、日期時(shí)間類型三大類,下面我們按照分類依次來介紹下。

1.數(shù)值類型

數(shù)值類型大類又可以分為整型、浮點(diǎn)型定點(diǎn)型三小類。

整型主要用于存儲(chǔ)整數(shù)值,主要有以下幾個(gè)字段類型:

image.png

整型經(jīng)常被用到,比如 tinyint、int、bigint 。

默認(rèn)是有符號(hào)的,若只需存儲(chǔ)無符號(hào)值,可增加 unsigned 屬性。

int(M)中的 M 代表最大顯示寬度,并不是說 int(1) 就不能存儲(chǔ)數(shù)值10了,不管設(shè)定了顯示寬度是多少個(gè)字符,int 都是占用4個(gè)字節(jié),即int(5)和int(10)可存儲(chǔ)的范圍一樣。

存儲(chǔ)字節(jié)越小,占用空間越小。所以本著最小化存儲(chǔ)的原則,我們要盡量選擇合適的整型,例如:存儲(chǔ)一些狀態(tài)值或人的年齡可以用 tinyint ;主鍵列,無負(fù)數(shù),建議使用 int unsigned 或者 bigint unsigned,預(yù)估字段數(shù)字取值會(huì)超過 42 億,使用 bigint 類型。

浮點(diǎn)型主要有 float,double 兩個(gè),浮點(diǎn)型在數(shù)據(jù)庫中存放的是近似值,例如float(6,3),如果插入一個(gè)數(shù)123.45678,實(shí)際數(shù)據(jù)庫里存的是123.457,但總個(gè)數(shù)還以實(shí)際為準(zhǔn),即6位,整數(shù)部分最大是3位。 float 和 double 平時(shí)用的不太多。

image.png

定點(diǎn)型字段類型有 DECIMAL 一個(gè),主要用于存儲(chǔ)有精度要求的小數(shù)。

image.png

DECIMAL 從 MySQL 5.1 引入,列的聲明語法是 DECIMAL(M,D) 。

NUMERIC 與 DECIMAL 同義,如果字段類型定義為 NUMERIC ,則將自動(dòng)轉(zhuǎn)成 DECIMAL 。

對(duì)于聲明語法 DECIMAL(M,D) ,自變量的值范圍如下:

  • M是最大位數(shù)(精度),范圍是1到65??刹恢付ǎJ(rèn)值是10。
  • D是小數(shù)點(diǎn)右邊的位數(shù)(小數(shù)位)。范圍是0到30,并且不能大于M,可不指定,默認(rèn)值是0。

例如字段 salary DECIMAL(5,2),能夠存儲(chǔ)具有五位數(shù)字和兩位小數(shù)的任何值,因此可以存儲(chǔ)在salary列中的值的范圍是從-999.99到999.99。

2.字符串類型

字符串類型也經(jīng)常用到,常用的幾個(gè)類型如下表:

image.png

其中 char 和 varchar 是最常用到的。char 類型是定長(zhǎng)的,MySQL 總是根據(jù)定義的字符串長(zhǎng)度分配足夠的空間。當(dāng)保存 char 值時(shí),在它們的右邊填充空格以達(dá)到指定的長(zhǎng)度,當(dāng)檢索到 char 值時(shí),尾部的空格被刪除掉。varchar 類型用于存儲(chǔ)可變長(zhǎng)字符串,存儲(chǔ)時(shí),如果字符沒有達(dá)到定義的位數(shù),也不會(huì)在后面補(bǔ)空格。

char(M) 與 varchar(M) 中的的 M 表示保存的最大字符數(shù),單個(gè)字母、數(shù)字、中文等都是占用一個(gè)字符。char 適合存儲(chǔ)很短的字符串,或者所有值都接近同一個(gè)長(zhǎng)度。例如,char 非常適合存儲(chǔ)密碼的 MD5 值,因?yàn)檫@是一個(gè)定長(zhǎng)的值。對(duì)于字符串很長(zhǎng)或者所要存儲(chǔ)的字符串長(zhǎng)短不一的情況,varchar 更加合適。

我們?cè)诙x字段最大長(zhǎng)度時(shí)應(yīng)該按需分配,提前做好預(yù)估,能使用 varchar 類型就盡量不使用 text 類型。除非有存儲(chǔ)長(zhǎng)文本數(shù)據(jù)需求時(shí),再考慮使用 text 類型。

BLOB 類型主要用于存儲(chǔ)二進(jìn)制大對(duì)象,例如可以存儲(chǔ)圖片,音視頻等文件。日常很少用到,有存儲(chǔ)二進(jìn)制字符串時(shí)可以考慮使用。

3.日期時(shí)間類型

MySQL支持的日期和時(shí)間類型有 YEAR 、TIME 、DATEDATETIME 、TIMESTAMP,幾種類型比較如下:

image.png

涉及到日期和時(shí)間字段類型選擇時(shí),根據(jù)存儲(chǔ)需求選擇合適的類型即可。

關(guān)于 DATETIME 與 TIMESTAMP 兩種類型如何選用,可以按照存儲(chǔ)需求來,比如要求存儲(chǔ)范圍更廣,則推薦使用 DATETIME ,如果只是存儲(chǔ)當(dāng)前時(shí)間戳,則可以使用 TIMESTAMP 類型。

不過值得注意的是,TIMESTAMP 字段數(shù)據(jù)會(huì)隨著系統(tǒng)時(shí)區(qū)而改變但 DATETIME 字段數(shù)據(jù)不會(huì)。總體來說 DATETIME 使用范圍更廣。

總結(jié)

本篇文章主要介紹了 MySQL 中常用的字段類型,平時(shí)用到的字段類型基本都在這里了,以一張思維導(dǎo)圖總結(jié)如下:

image.png

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

相關(guān)文章

  • MySQL中的隱藏列的具體查看

    MySQL中的隱藏列的具體查看

    mysql中存在一些隱藏列,例如行標(biāo)識(shí)、事務(wù)ID、回滾指針等,不知道大家是否和我一樣好奇過,要怎樣才能實(shí)際地看到這些隱藏列的值呢,感興趣的可以了解一下
    2021-09-09
  • mysql動(dòng)態(tài)游標(biāo)學(xué)習(xí)(mysql存儲(chǔ)過程游標(biāo))

    mysql動(dòng)態(tài)游標(biāo)學(xué)習(xí)(mysql存儲(chǔ)過程游標(biāo))

    mysql動(dòng)態(tài)游標(biāo)示例,通過準(zhǔn)備語句、視圖和靜態(tài)游標(biāo)實(shí)現(xiàn),大家參考使用吧
    2013-12-12
  • MySQL連接池DataSource的使用及實(shí)踐

    MySQL連接池DataSource的使用及實(shí)踐

    DruidDataSource作為一款優(yōu)秀的數(shù)據(jù)庫連接池組件,不僅提供了高效的連接管理,還包含了豐富的監(jiān)控和診斷功能,本文主要介紹了MySQL連接池DataSource的使用及實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • MySQL中RANK()函數(shù)的介紹和用法

    MySQL中RANK()函數(shù)的介紹和用法

    這篇文章主要介紹了MySQL中RANK()的介紹和用法,通過RANK()函數(shù),我們可以方便地為查詢結(jié)果進(jìn)行排序并為每個(gè)行分配排名,本文介紹了RANK()函數(shù)的概念和使用方法,并通過示例和輸出結(jié)果向讀者展示了具體的操作步驟和效果,感興趣的朋友一起看看吧
    2023-07-07
  • MySQL修改lower_case_table_names參數(shù)的方法實(shí)踐

    MySQL修改lower_case_table_names參數(shù)的方法實(shí)踐

    本文主要介紹了MySQL修改lower_case_table_names參數(shù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • 解決mysql輸入密碼閃退的問題

    解決mysql輸入密碼閃退的問題

    之前安裝的mysql一直運(yùn)行正常,但是在昨天裝了個(gè)VS2010旗艦版。結(jié)果今天mysql就不能用了,于是在網(wǎng)上看了一下最只要就是mysql的服務(wù)沒有起來的緣故。本文分享了幾個(gè)解決方案,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-11-11
  • MySQL sql_mode的使用詳解

    MySQL sql_mode的使用詳解

    這篇文章主要介紹了MySQL sql_mode的使用詳解,幫助大家更好的理解和學(xué)習(xí)使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2021-05-05
  • Linux中使用mysqladmin extended-status配合Linux命令查看MySQL運(yùn)行狀態(tài)

    Linux中使用mysqladmin extended-status配合Linux命令查看MySQL運(yùn)行狀態(tài)

    這篇文章主要介紹了Linux中使用mysqladmin extended-status配合Linux命令查看MySQL運(yùn)行狀態(tài),需要的朋友可以參考下
    2014-08-08
  • 在Ubuntu或Debian系統(tǒng)的服務(wù)器上卸載MySQL的方法

    在Ubuntu或Debian系統(tǒng)的服務(wù)器上卸載MySQL的方法

    這篇文章主要介紹了在Ubuntu或Debian系統(tǒng)的服務(wù)器上卸載MySQL的方法,適用于Debian系的Linux系統(tǒng),需要的朋友可以參考下
    2015-06-06
  • Windows中Mysql啟動(dòng)失敗的完美解決方案

    Windows中Mysql啟動(dòng)失敗的完美解決方案

    這篇文章主要介紹了Windows中Mysql啟動(dòng)失敗解決方案,mysql服務(wù)啟動(dòng)失敗分為2種情況給大家詳細(xì)介紹,針對(duì)每一種給大家詳細(xì)解決,需要的朋友可以參考下
    2022-10-10

最新評(píng)論