亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

整型

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

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

浮點型

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

定點數(shù)

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

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

字符型

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

日期時間型

日期時間類型占用空間(字節(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ù)實際需要選擇能夠滿足的最小存儲的類型即可. 比如 : DATE 用于表示 年月日, 生日字段使用 DATE 類型即可. 這樣不但能節(jié)省內(nèi)存, 還能提高表的操作效率.
  • 如果要記錄年月日時分秒, 而且記錄的年代比較久遠, 最好使用 DATETIME. 因為 TIMESTAMP 可以表示的年代范圍比 DATETIME 少的多.
  • 如果記錄的日期需要用到時區(qū), 需要選擇 TIMESTAMP.
  • 一個表中至多只能有一個字段設置 CURRENT_TIMESTAMP. 并且 CURRENT_TIMESTAMP 只適合 TIMESTAMP 類型的字段.
CREATE TABLE USER(
  ...
  create_time timestamp NULL default CURRENT_TIMESTAMP,    -- 默認為當前時間
  ...
)

字段類型的選取原則

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

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

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

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

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

比如 : 應該使用整型來存儲 IP 地址, 而不是字符型. 應該使用日期時間類型來存儲日期時間, 而不是字符型.

  • 對于 char 和 varchar

如果列中的數(shù)據(jù)長度差不多一致, 比如 : 身份證號, 學號等, 則應該考慮使用 char 類型.

對于那些長度未知的字符串, 使用 varchar.

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

  • 對于 decimal 和 float:

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

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

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

比如記錄移動設備平臺, 只有兩個值:android, ios, 那么就可以使用 0 表示 android, 1 表示 ios, 并寫好注釋.

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

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

  • 查詢速度:定長數(shù)據(jù)比變長數(shù)據(jù)查詢快, 因為定長數(shù)據(jù)與數(shù)據(jù)之間的偏移是固定的, 很容易計算下一個數(shù)據(jù)的偏移.

而變長數(shù)據(jù)則還需要多一步去查詢下一個數(shù)據(jù)的偏移量. 不過定長數(shù)據(jù)可能會浪費更多的存儲空間.

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

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

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

相關文章

  • MySQL進階SELECT語法篇

    MySQL進階SELECT語法篇

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

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

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

    Mysql Sql 語句練習題(50道)

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

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

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

    MySQL使用show?effective?grants查看權限官方解讀

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

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

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

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

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

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

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

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

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

    MySQL 選擇合適的存儲引擎

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

最新評論