MySQL中的 資料型別 MySQL 中的資料型別

2021-10-18 22:15:28 字數 1572 閱讀 2669

整數型別

整數型別(whole number) tinyint、smallint、medinuint、int和bigint,分別使用8,16,24,32,64位儲存空間。含有可選 unsigned 屬性,表示不允許為負數

實數型別(real number)

是帶有小數部分的數字,float和double decimal只是一種儲存型別

字串型別

varchar 和 char

如何儲存在硬碟和記憶體中與儲存引擎有關。 varchar(200)與char(5)儲存hello 的開銷是一樣的,使用 char 會更有優勢,更長的列會消耗更多的記憶體,因為 mysql 通常會分配固定大小的記憶體來儲存內部值。最好只分配真正需要的空間

blob 和 text 型別

blob 和 text 都是為儲存很大的資料而設計的字串型別,分別採用二進位制和字元方式儲存

blob 與 text 之間不同事 blob 型別儲存的是二進位制資料,沒有排序規則或字符集。而 text 型別有字符集和排序規則

列舉(enum)型別

列舉可以把一些不重複的字串儲存成乙個預定義的集合。mysql 儲存列舉的值非常程序,會將列表值的數量雅座到乙個或兩個檔案中。mysql 真正儲存的是整數,而不是字串。

在特殊情況下,把 char/varchat 列與列舉列進行關聯,可能比 char/varchar 關聯要慢

日期和時間型別

mysql 能儲存的最小時間粒度為秒(可以使用微秒級的粒度進行臨時運算)

datetime表示範圍到2023年,而 timestamp(包括時區) 表示範圍到2023年。

timestamp 占用4位元組,datetime 占用8位元組。timestamp 在時間處理上更方便一些

timestamp翻譯為漢語即"時間戳",它是當前時間到 unix元年(1970 年 1 月 1 日 0 時 0 分 0 秒)的秒數。對於某些時間的計算,如果是以datetime的形式會比較困難,假如我是1994-1-20 06:06:06出生,現在的時間是2016-10-1 20:04:50,那麼要計算我活了多少秒鐘用datetime還需要函式進行轉換,但是timestamp直接相減就行。

timestamp只佔 4 個位元組,而且是以utc的格式儲存, 它會自動檢索當前時區並進行轉換。

datetime以 8 個位元組儲存,不會進行時區的檢索.

也就是說,對於timestamp來說,如果儲存時的時區和檢索時的時區不一樣,那麼拿出來的資料也不一樣。對於datetime來說,存什麼拿到的就是什麼。

還有乙個區別就是如果存進去的是null,timestamp會自動儲存當前時間,而datetime會儲存null。

char 與 varchar 的區別

char 型別用於儲存定長字串,varchar儲存可變長子字串

varchar 需要1-2個位元組儲存長度資訊

char 在儲存的時候會補空格到達指定長度來儲存,varchar 則不需要

char 在檢索的時候會刪除尾部的空格(可增加配置引數 pad_char_to_full_length 保留尾綴空格)

char 的訪問速度要比 varchar 快,而 varchar 的空間利用率會更高

參考鏈結

mysq中的l資料型別

1 數值型別 整型和小數 例如 int 3 數字僅用於顯示,不顯示資料真正的範圍 float 和 double 屬於浮點,沒有小數字數的說法,精度差,主要體現在自動進行四捨五入的顯示,decimal 字串 unsigned 屬性把資料範圍擴大了一倍 2 字元型別 字元 blob text enum ...

Mysq資料庫中基本資料型別

1.mysql整型資料型別 型別名稱 說明儲存需求 tinyint 很小的整數 1個位元組 smallint 小的整數 2個位元組 mediumint 中型的整數 3個位元組 int integeter 普通大小的整數 4個位元組 bigint 很大的整數 8個位元組 2.日期和時間型別 型別名稱 ...

MYSQL中的資料型別

mysql支援大量的列型別,它可以被分為3類 數字型別 日期和時間型別以及字串 字元 型別。本節首先給出可用型別的乙個概述,並且總結每個 列型別的儲存需求,然後提供每個類中的型別性質的更詳細的描述。概述有意簡化,更詳細的說明應該考慮到有關特定列型別的附加資訊,例如你能為其指定值的允 許格式。由mys...