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

MySQL?數(shù)據(jù)類型及最優(yōu)選取規(guī)則

 更新時(shí)間:2022年08月26日 09:13:36   作者:昨天的風(fēng)???????  
這篇文章主要介紹了MySQL?數(shù)據(jù)類型及最優(yōu)選取規(guī)則,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)有所幫助

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

日常開發(fā)中,最常使用到的 MySQL 中常用的數(shù)據(jù)類型有 : 整型, 浮點(diǎn)型, 定點(diǎn)數(shù), 字符型, 時(shí)間日期類型. 下面對(duì)其分別進(jìn)行總結(jié)。

整型

格式為 : INT[(M)] [UNSIGNED] [ZEROFILL]

  • 取值范圍:如果是 unsigned 無符號(hào)位 , 則最大值翻倍, 如 tinyint unsigned 的取值范圍為 (0~256).
  • 注意:INT(1) 和 INT(10) 沒有區(qū)別, 占用的內(nèi)存都一樣, 并不是代表其最大位數(shù),只是加上 (M) 值后, 在 CMD 中顯示的結(jié)果的寬度不同而已. 只有在加上 zerofill 零填充后 M 才表現(xiàn)出有點(diǎn)點(diǎn)效果, 比如 int(3) zerofill, 插入到數(shù)據(jù)庫里的是 10, 則實(shí)際插入為 010, 也就是在前面補(bǔ)充加了一個(gè)0.
  • Java 中的 Long 類型, 和 MySQL 中的 bigint 相對(duì)應(yīng).
  • Java 中的 Integer 類型, 和 MySQL 中的 int 相對(duì)應(yīng).
  • Java 中的 Boolean 類型, 和 MySQL 中的 tinyint 相對(duì)應(yīng).  false 代表 0, true 代表 1.

浮點(diǎn)型

  • 設(shè)一個(gè)字段定義為 float(5,3), 5 表示在 CMD 中顯示的總位數(shù)是 5 位, 3 表示小數(shù)位是 3 位.
  • 小數(shù)位超過指定長(zhǎng)度, 對(duì)后面的數(shù)字按照四舍五入截取. 所以如果插入一個(gè)數(shù) 123.45678, 實(shí)際數(shù)據(jù)庫里存的是123.457, 進(jìn)行了四舍五入截取.
  • 小數(shù)位如果都是0, 則不保存小數(shù)位, 直接保存整數(shù).

定點(diǎn)數(shù)

浮點(diǎn)型在數(shù)據(jù)庫中存放的是近似值, 而定點(diǎn)類型在數(shù)據(jù)庫中存放的是精確值. 所以對(duì)于金額等精度要求高的數(shù)據(jù), 使用定點(diǎn)數(shù) decimal 來保存.

decimal(m,d) 參數(shù) m 是總個(gè)數(shù), d 是小數(shù)位.  ( m<65, d<30, d<m )

字符型

字符型含義占用字節(jié)數(shù)
char(n)固定長(zhǎng)度, 最多 255 個(gè)字符4 byte
varchar(n)可變長(zhǎng)度, 最多 65535 個(gè)字符實(shí)際存入字節(jié)數(shù)+1
  • char 類型的字符串檢索速度要比 varchar 類型的快. 所以能 char 的優(yōu)先 選擇 char.
  • char(n) 若存入字符數(shù)小于 n, 則以空格補(bǔ)于其后, 查詢之時(shí)再將空格去掉. 所以 char 類型存儲(chǔ)的字符串末尾不能有空格, varchar 不限于此.
  • char(n) 固定長(zhǎng)度, char(4) 不管是存入幾個(gè)字符, 都將占用 4 個(gè)字節(jié). varchar 可變長(zhǎng)度, 是存入的實(shí)際字符數(shù)+1個(gè)字節(jié)(n<=255)或 2 個(gè)字節(jié)(n>255),  所以 varchar(4), 存入3 個(gè)字符將占用 4 個(gè)字節(jié).
  • varchar(10) 的 10 代表了申請(qǐng)的空間長(zhǎng)度, 即存儲(chǔ)的數(shù)據(jù)的最大長(zhǎng)度, 而 int(10) 的 10 只是代表了展示的長(zhǎng)度.

日期時(shí)間型

日期時(shí)間類型占用空間(字節(jié)數(shù))日期格式
DATETIME8 byteYYYY-MM-DD HH:MM:SS
TIMESTAMP4 byteYYYY-MM-DD HH:MM:SS
DATE4 byteYYYY-MM-DD
TIME3 byteHH:MM:SS
YEAR1 byteYYYY
  • 根據(jù)實(shí)際需要選擇能夠滿足的最小存儲(chǔ)的類型即可. 比如 : DATE 用于表示 年月日, 生日字段使用 DATE 類型即可. 這樣不但能節(jié)省內(nèi)存, 還能提高表的操作效率.
  • 如果要記錄年月日時(shí)分秒, 而且記錄的年代比較久遠(yuǎn), 最好使用 DATETIME. 因?yàn)?nbsp;TIMESTAMP 可以表示的年代范圍比 DATETIME 少的多.
  • 如果記錄的日期需要用到時(shí)區(qū), 需要選擇 TIMESTAMP.
  • 一個(gè)表中至多只能有一個(gè)字段設(shè)置 CURRENT_TIMESTAMP. 并且 CURRENT_TIMESTAMP 只適合 TIMESTAMP 類型的字段.
CREATE TABLE USER(
  ...
  create_time timestamp NULL default CURRENT_TIMESTAMP,    -- 默認(rèn)為當(dāng)前時(shí)間
  ...
)

字段類型的選取原則

  • 字段類型優(yōu)先級(jí) : 整型 > date,time > char,varchar > blob

原因:整型運(yùn)算快, 且節(jié)省空間. char, varchar 要考慮字符集的轉(zhuǎn)換與排序時(shí)的校對(duì)集, 所以速度慢.

  • 優(yōu)先選擇占空間小的類型.

原因 : 小空間的類型占用的磁盤, 內(nèi)存, CPU 緩存, CPU 處理時(shí)間都更少.

  • 對(duì)于字符型和數(shù)字型, 優(yōu)先選擇數(shù)字型.

比如 : 應(yīng)該使用整型來存儲(chǔ) IP 地址, 而不是字符型. 應(yīng)該使用日期時(shí)間類型來存儲(chǔ)日期時(shí)間, 而不是字符型.

  • 對(duì)于 char 和 varchar

如果列中的數(shù)據(jù)長(zhǎng)度差不多一致, 比如 : 身份證號(hào), 學(xué)號(hào)等, 則應(yīng)該考慮使用 char 類型.

對(duì)于那些長(zhǎng)度未知的字符串, 使用 varchar.

如果列中的最大數(shù)據(jù)長(zhǎng)度小于 50 Byte (15個(gè)字符左右), 則一般考慮使用 char.

  • 對(duì)于 decimal 和 float:

精確數(shù)據(jù)只能使用 decimal 類型.

非精確數(shù)據(jù)優(yōu)先使用 float 類型, ( float 比 decimal 的存儲(chǔ)空間小 )

  • 對(duì)于那些可能值很有限的列, 使用 tinyint 代替 varchar / int

比如記錄移動(dòng)設(shè)備平臺(tái), 只有兩個(gè)值:android, ios, 那么就可以使用 0 表示 android, 1 表示 ios, 并寫好注釋.

  • 不要濫用 bigint, 比如文章表的主鍵 id 字段, 用 int 就行了, 21 億篇文章的上限足夠使用了.

以上原則主要是從以下角度考慮 :

  • 查詢速度:定長(zhǎng)數(shù)據(jù)比變長(zhǎng)數(shù)據(jù)查詢快, 因?yàn)槎ㄩL(zhǎng)數(shù)據(jù)與數(shù)據(jù)之間的偏移是固定的, 很容易計(jì)算下一個(gè)數(shù)據(jù)的偏移.

而變長(zhǎng)數(shù)據(jù)則還需要多一步去查詢下一個(gè)數(shù)據(jù)的偏移量. 不過定長(zhǎng)數(shù)據(jù)可能會(huì)浪費(fèi)更多的存儲(chǔ)空間.

  • 排序速度:在對(duì)數(shù)據(jù)進(jìn)行比較 ( 查詢條件, JOIN 條件以及排序 ) 操作時(shí), 同樣的數(shù)據(jù), 數(shù)字的處理比字符串快.

字符串的比較與當(dāng)前的排序規(guī)則有關(guān), 它需要去查詢當(dāng)前排序規(guī)則的字典順序, 而數(shù)字不需要.

到此這篇關(guān)于MySQL 數(shù)據(jù)類型及最優(yōu)選取規(guī)則的文章就介紹到這了,更多相關(guān)MySQL 數(shù)據(jù)類型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL進(jìn)階SELECT語法篇

    MySQL進(jìn)階SELECT語法篇

    從這個(gè)基本語法可以看出,最簡(jiǎn)單的SELECT語句是SELECT select_list,實(shí)際上利用這個(gè)最簡(jiǎn)單的SELECT語句,你也可以完成許多你期待的功能,首先你能利用它進(jìn)行MySQL所支持的任何運(yùn)算,例如:SELECT 1+1,它將返回2;其次,你也能利用它給變量賦值,而在PHP中,運(yùn)用SELECT語句的這種功能,你就可以自由地運(yùn)用MySQL的函數(shù)為PHP程序進(jìn)行各種運(yùn)算,并賦值給變量。在很多的時(shí)候,你會(huì)發(fā)現(xiàn)MySQL擁有許多比PHP更為功能強(qiáng)大的函數(shù)。
    2008-04-04
  • linux系統(tǒng)下安裝配置解壓版的MySQL數(shù)據(jù)庫圖解

    linux系統(tǒng)下安裝配置解壓版的MySQL數(shù)據(jù)庫圖解

    這篇文章主要介紹了linux系統(tǒng)下安裝配置解壓版的MySQL數(shù)據(jù)庫的相關(guān)資料,需要的朋友可以參考下
    2017-12-12
  • Mysql Sql 語句練習(xí)題(50道)

    Mysql Sql 語句練習(xí)題(50道)

    mysql一直作為比較熱門的數(shù)據(jù)庫存儲(chǔ),搭配php使用簡(jiǎn)直是絕配,mysql的sql語句也是很重要的一門課,這里為大家分享一下sql語句,大家可以試試
    2020-12-12
  • 超詳細(xì)MySQL使用規(guī)范分享

    超詳細(xì)MySQL使用規(guī)范分享

    這篇文章主要介紹了MySQL使用規(guī)范,幫助大家更規(guī)范的操作MySQL,感興趣的朋友可以了解下
    2020-08-08
  • MySQL使用show?effective?grants查看權(quán)限官方解讀

    MySQL使用show?effective?grants查看權(quán)限官方解讀

    這篇文章主要為大家介紹了MySQL使用show?effective?grants查看權(quán)限,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • MHA實(shí)現(xiàn)mysql主從數(shù)據(jù)庫手動(dòng)切換的方法

    MHA實(shí)現(xiàn)mysql主從數(shù)據(jù)庫手動(dòng)切換的方法

    這篇文章主要介紹了MHA實(shí)現(xiàn)mysql主從數(shù)據(jù)庫手動(dòng)切換的方法,詳細(xì)的講述了主從數(shù)據(jù)庫切換的步驟與方法,非常實(shí)用,需要的朋友可以參考下
    2014-10-10
  • CentOS7.4 源碼安裝MySQL8.0的教程詳解

    CentOS7.4 源碼安裝MySQL8.0的教程詳解

    這篇文章主要介紹了CentOS7.4 源碼安裝MySQL8.0的教程詳解,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-04-04
  • MySQL如何判斷字符串為NULL或者為空字符串

    MySQL如何判斷字符串為NULL或者為空字符串

    這篇文章主要介紹了MySQL如何判斷字符串為NULL或者為空字符串,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • MySQL Workbench導(dǎo)入excel數(shù)據(jù)的實(shí)現(xiàn)示例

    MySQL Workbench導(dǎo)入excel數(shù)據(jù)的實(shí)現(xiàn)示例

    本文主要介紹了MySQL Workbench導(dǎo)入excel數(shù)據(jù)的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • MySQL 選擇合適的存儲(chǔ)引擎

    MySQL 選擇合適的存儲(chǔ)引擎

    這篇文章主要介紹了MySQL如何選擇合適的存儲(chǔ)引擎,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-09-09

最新評(píng)論