最近在學習mysql,對mysql資料型別做了些查閱資料,以下對最近的查閱情況進行總結~
char和varchar
char(n)
是固定長度,最多255個字元;varchar(n)
是可變長度,最多65535個字元。
在儲存大小上,char(n)
儲存n個位元組大小,如果字串長度小於n,則後面用空格補齊,因此如果字串後面有空格,用char
型別存放是無效的;varchar
則是實際字串的長度+1/2個位元組(如果n<=255,則加1個位元組;如果n>255,則加2個位元組)。
在查詢速度上,char
速度比varchar
快。
浮點型和定點型
浮點型包括有float和double,如float(m,d)
和double(m,d)
,其中m代表總個數,d代表小數字;定點型有decimal,如`decimal(m,d) ,其中,m是總個數,d是小數字。
浮點型在資料庫中存放的是近似值,而定點型別在資料庫中存放的是精確值。
float
是8位精度(4位元組);double
是16位精度(8位元組)。
tinyint、smallint、mediumint、int和bigint
這幾個都是定長的資料型別,以int為例。
int型別屬於定長型別,大小為4個位元組,有符號儲存範圍為-2147483648~2147483647。
int(n)
中的n表示的是其顯示長度,不影響其儲存空間大小。
所以,tinyint、smallint、mediumint、int和bigint後面附屬的n表示其顯示長度,不影響儲存空間大小。
float(m,n),decimal(m,n)
float(m,n)
是屬於變長型別,decimal(m,n)
屬於定長型別,其中m代表總的個數,n代表小數字的精確位數。因此在儲存的時候,先判斷小數字進行「對齊」,即「多刪少補」,多刪的規則是四捨五入,少補就是後面補0。然後對整數字進行判斷是否越界,如果越界,根據不同的模式有不同的處理,嚴格模式則提示error: out of range
,非嚴格模式則儲存為上界數。
char(n),varchar(n)
char(n)
和varchar(n)
的n都是用來限制儲存長度,如果存入的字串長度超過n,則報錯。
比如在tc
表中建立屬性為char(4)
何varchar(4)
的字段,然後分別insert長度為5的字串則會報錯。
小數和整數分別計算,每9位數佔4位元組,剩餘部分如下表換算:
位數占用位元組數00
1-21
3-42
5-63
7-94
舉幾個例子:
比如decimal(18,9)
,整數部分和小數部分各9位,所以各佔4位元組,共8bytes
再比如decimal(20,6)
,整數14位,需要4位元組存9位,還需3位元組存5位;小數6位,需3位元組。共10bytes
mysql數字型別int與tinyint、float與decimal如何選擇
mysql 資料型別
未完,待續~
mysql資料型別總結
mysql支援所有標準sql數值資料型別。這些型別包括嚴格數值資料型別 integer smallint decimal和numeric 以及近似數值資料型別 float real和double precision 關鍵字int是integer的同義詞,關鍵字dec是decimal的同義詞。資料型別...
mysql 資料型別總結
整形 以下為signed,unsigned為無符號,自推 型別占用位元組 範圍tinyint 1 128,127 smallint 2 2 8,2 8 1 mediumint 3 2 12,2 12 1 int4 2 16,2 16 1 bigint 8 2 32,2 32 1 型別占用位元組 fl...
mysql資料個人總結 MySQL資料型別總結
摘要 mysql中的資料型別大的方面來分,可以分為 日期和時間 數值,以及字串。下面就分開來進行總結。日期和時間資料型別mysql資料型別含義d.mysql中的資料型別大的方面來分,可以分為 日期和時間 數值,以及字串。下面就分開來進行總結。日期和時間資料型別 mysql資料型別含義 date3位元...