91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

mysql8數據類型有哪些

發布時間:2021-07-13 15:29:17 來源:億速云 閱讀:178 作者:Leah 欄目:大數據

這期內容當中小編將會給大家帶來有關mysql8數據類型有哪些,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。


整數類型

mysql8數據類型有哪些
整數類型有可選的unsigned屬性,表示不允許負值,這可以使正數的上限提高一倍(還多1)。
有符號和無符號類型使用相同的存儲空間,并且具有相同的性能,因此可以根據實際情況選擇合適的類型。  
mysql可以為整數類型指定寬度,例如INT(11),對大多數應用來說這是沒有意義的:它不會限制合法范圍,只是規定了mysql的一些交互工具(例如mysql命令行客戶端)用來顯示字符的個數。
對于存儲和計算來說,INT(1)和INT(20)是相同的。

實數類型

mysql8數據類型有哪些
注意FLOAT和DOUBLE可表示的范圍不是完全連續的浮點數,由于精度的限制,有些極小的小數是表示不了的,浮點相關的內容可以參考我的另一篇文章神奇的二進制(二)浮點數。
DECIMAL類型最多允許65個數字,表示為DECIMAL(M,D)的格式。例如DECIMAL(5,2)表示最多保存5個數字,其中2個是小數,表示的范圍在-999.99 到 999.99之間。
如果小數位數D為0,則DECIMAL值不包含小數點或小數部分。
FLOAT和DOUBLE類型只能使用標準的浮點運算進行近似運算,如果需要精確運算,例如金額計算,則需要使用DECIMAL類型。
因為cpu不支持對DECIMAL的直接計算,所以在mysql5.0以上的版本中,mysql服務器自身實現了DECIMAL的高精度計算。  相對而言,cpu直接支持原生的浮點計算,所以浮點計算明顯更快。
涉及到金額計算,在數據量比較大的時候,可以考慮用BIGINT代替DECIMAL。例如金額單位精確到分,99.99可以用9999表示,以分為單位存儲在BIGINT字段里,這樣可以同時避免浮點數計算的不精確和DECIMAL精確計算代價高的問題。

字符串類型

mysql8數據類型有哪些
CHAR
CHAR類型是定長的,會根據定義的長度分配空間。當存儲CHAR值時,mysql會刪除所有的末尾空格。  
 mysql8數據類型有哪些  
CHAR很適合存儲很短的字符串,或者所有的值都接近同一個長度,例如,CHAR非常適合存儲密碼的MD5的值,因為這是一個定長的長度。
對于經常變動的數據,CHAR也比VARCHAR更好,因為定長的CHAR類型不容易產生碎片。
對于非常短的列,CHAR比VARCHAR在存儲空間上也更有優勢,例如用CHAR(1)來存儲只有Y和N的值,如果采用單字節字符集只需1個字節,但是VARCHAR(1)卻需要2個字節,因為還需要一個記錄長度的額外字節。

VARCHAR
VARCHAR用于存儲可變長的字符串,它比定長類型更節省空間。VARCHAR需要使用1或2個額外字節記錄字符串的長度:如果列的最大長度小于或等于255字節,則只使用1個字節表示,如果列長度大于255字節,則需要使用2個字節表示長度。
假設采用latin字符集,一個VARCHAR(10)的列需要11個字節空間存儲,一個VARCHAR(1000)的列則需要1002個字節空間存儲,因為需要存儲2個字節的長度信息。
哪些情況使用VARCHAR類型比較合適呢?
  • 字符串的列長度比平均長度大很多

  • 列的更新很少,碎片不是問題

  • 使用了想UTF-8這樣復雜的字符集,每個字符都使用了不同的字節數進行存儲



BINARY和VARBINARY
BINARY和VARBINARY它們存儲的是二進制字符串。二進制字符串和常規的字符串非常相似,但是二進制字符串存儲的字節碼而不是字符。

填充也不一樣:mysql填充BINARY采用的是 \0(零字節)而不是空格,在檢索時也不會去掉填充值。

當需要存儲二進制數據時,可以使用 BINARY或VARBINARY,mysql比較二進制字符串時,每次按一個字節,并且根據該字節的數值進行比較。
因此二進制比較比字符串比較簡單的多,所以也更快。

BLOB和TEXT
BLOB和TEXT都是為了存儲很大數據而設計的字符串數據類型,分別采用二進制和字符方式存儲。
二進制類型:TINYBLOB,BLOB,MEDIUMBLOB,LONGBLOB
字符類型:TINYTEXT,TEXT,MEDIUMTEXT,LONGTEXT
與其他類型不同,mysql把每個BLOB和TEXT值當做一個獨立的對象處理。存儲引擎在存儲是通常會做特殊處理,當BLOB和TEXT值太大時,InnoDB會使用專門的“外部”存儲區域來進行存儲,
此時每個值在行內需要1~4個字節存儲一個指針,然后在外部存儲區域存儲實際值。
BLOB和TEXT家族之間僅有的不同是,BLOB存儲的是二進制數據,沒有排序規則和字符集;而TEXT存儲的是字符,有排序規則和字符集。
mysql對BLOB和TEXT列進行排序和其他數據類型不同:它只對每個列的前max_sort_length字節而不是整個字符串做排序。
如果只需要排序前面的一小部分字符,則可以減少max_sort_length的值,或者使用ORDER BY SUBSTRING(column,length)。
mysql不能將BLOB和TEXT列全部長度的字符串進行索引,也不能使用這些索引消除排序。

日期和時間類型

mysql8數據類型有哪些
DATETIME使用8個字節的存儲空間,和時區無關。
TIMESTAMP使用4個字節的存儲空間,顯示的時間依賴時區,保存了從1970年1月1號午夜(格林尼治標準時間)以來的秒數,它和unix的時間戳相同。TIMESTAMP只能表示從1970年到2038年。
如果插入和更新數據時沒有指定TIMESTAMP的值,mysql會默認的更新TIMESTAMP的值當前系統時間。

位數類型

類型范圍
BIT
1 to 64 位

BIT(1)定義一個包含1個位的數據,BIT(2)包含2個位,以此類推,最大長度為64個位。
mysql把BIT當做字符串類型,而不是數字類型。當檢索BIT的值時,結果是對應二進制表示的ASCII碼轉換后的字符,然而在數字上下文場景中檢索的時候,會使用二進制表示的數字。
例如,如果存儲一個值b’00111001’(十進制的值為57)到BIT(8)的列并檢索它時,得到的結果是9(9的ASCII碼是57),如果對該字段進行加減,則返回結果57。

 mysql8數據類型有哪些

JSON類型

mysql8支持直接存儲json格式字符串,對應的是json數據類型。
  • json數據列會自動驗證json的數據格式,如果格式不正確會報錯。


  • 最優化存儲格式。json數據類型會把json格式的字符串轉換成內部格式,能夠快速的讀取其中的元素。



mysql8數據類型有哪些
 

小結

mysql設計表的數據類型的時候,下面幾個簡單的原則有助于設計出好的數據類型:
  • 更小的更好



    選擇你認為不會超越范圍的最小類型,更小的數據類型通常更快,因為它們占用更少的磁盤、內存和cpu緩存,并且處理時需要的cpu周期更少。

  • 簡單就好


    簡單的數據類型操作通常更快,例如整形的操作比字符串更快,因為字符串有字符集和校對規則(排序規則)比整形更復雜。


  • 盡量避免null


    如果字段可以不存儲null值,盡量把字段設置成not null。因為可為null的列使得索引、索引統計和值比較都更復雜,可為null的列會使用更多的存儲空間,在mysql里也需要特殊處理。


上述就是小編為大家分享的mysql8數據類型有哪些了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

公安县| 尼勒克县| 那坡县| 利川市| 图木舒克市| 曲沃县| 泰顺县| 酒泉市| 辉县市| 洪泽县| 历史| 恩平市| 南丰县| 乌兰浩特市| 武定县| 长岛县| 定襄县| 株洲市| 麻江县| 曲麻莱县| 金寨县| 婺源县| 上饶县| 九江市| 普陀区| 金溪县| 额尔古纳市| 盐边县| 南平市| 巴东县| 方山县| 搜索| 德阳市| 枣庄市| 丰台区| 正定县| 盐亭县| 枞阳县| 富阳市| 玉龙| 阿拉尔市|