1 整型
2 定點型decimal, numeric, 在mysql中以binary形式儲存,用於精確儲存數值。
decimal(m,n): m為最大有效位數(不超過65,預設為10),用於控制數值的精度,n為最大小數字數
3 浮點型float(4 bytes), double(8bytes) , 用於近似儲存數值。
float(m,n): m為最大有效位數(0-23), n為最大小數字數
double(m, n):m為最大有效位數(24-53), n為最大小數字數
但是這裡的m並不能用於控制精度,而是用於確定儲存空間的大小(是float還是double).
為了保持最大的可移植性,一般最好不要對m和n進行限制。
4 日期時間型別
date: mysql預設以'yyyy-mm-dd'格式展現date資料, 有效範圍是'1000-01-01'
到'9999-12-31'
datetime: 預設展現格式'yyyy-mm-dd hh:mm:ss[.fraction]'
, 有效範圍'1000-01-01 00:00:00.000000'
到'9999-12-31 23:59:59.999999',最高時間精度可以到微秒(6位小數)
timestamp: 有效範圍'1970-01-01 00:00:01.000000'
到'2038-01-19 03:14:07.999999', timestamp會將當地時間轉化成utc進行儲存,然後再轉化成當地時間進行展示,預設當前時區為伺服器所在時區。
注:
1. mysql會將無效的date, datetime, timestamp 所有位都置零進行儲存。
2. 2位年份轉化為4位的規則:00-69==》2000-2069;70-99==》1970-1999;
3. 可以為timestamp和datetime賦值當前時間的變數或者函式current_timestamp()
,now()
,localtime
,localtime()
,localtimestamp
, 和localtimestamp
(),這些量都具有相同的含義。
time: 預設展現為'hh:mm:ss[.fraction]'或者
'hhh:mm:ss[.fraction]'格式, 有效範圍為
'-838:59:59'到
'838:59:59'。大的時間主要用於表徵事件的時間差。
注意:'1234'表示'00:12:34', '12:34'表示'12:34:00'
year:佔1byte。 可以限定為year(4)(有效範圍:1901
to2155
)和year(2)(有效範圍:1970-2069)
注意:'00'在year(2)和year(4)中代表的分別是2000和0000.
非法年份會記錄成0000.
年份可以為'1999',也可以為數字1999.
年份可以用now()返回值賦值。
5 字串型別
char(m): 定長字串,m取值範圍0-255
varchar(m): 變長字串,m為字串的最大長度,取值範圍0-65535。 varchar在字串前會有1-2bytes的長度字首,用於標記可變字串的長度。
注意:1. 對於過長的字串,varchar型別會在插入前截斷,並且輸出警告, char 型別直接截斷無反饋。
2. char型別讀取時會截斷尾部空白字元,而varchar不會
3. 除了模式匹配外,mysql中的字串比較都是忽略尾部空白字元的。
6 二進位制型別
bit(m): 用於儲存二進位制值,m為最大二進位制位數(1-64)。賦值可以用b'value', 例如 b'10001000'等等。
binary(m): 類似char,但是其儲存的是二進位制字串,而沒有包含字符集,因此所有的排序比較都是根據二進位制代表的數值來進行的。m為最大可儲存的byte數, 0<=m<=255.
varbinary: 類似varchar, m<65535, 其實際所佔空間為存入的內容長度+1或者2.
注意:1. binary插入資料時,位數不足會用ox00在最右邊填充, 而varbinary沒有填充。
2. binary沒有字符集和字元規則,而char binary儲存的是普通字串通過二進位制規則進行儲存,這二者是不一樣的。
blob (tinyblob-2^8+1bytes
,blob-2^16+1bytes
,mediumblob-2^24+2bytes
, andlongblob-2^32+2bytes
):blob是binary large object.
text (tinytext
-2^8+1bytes
,text-2^16+1bytes
,mediumtext-2^24+2bytes
, andlongtext-2^32+2bytes
):
注意:blob和text的訪問無填充無截斷。
enum:可取的選項數小於65535, 實際操作中一般不多於3000.
1. 索引從1開始
2. 插入enum中的字串如果不存在與選項中,則會插入空字串,索引為0.
3. 如果enum列可以為空,則預設為空,否則預設為第乙個索引的值。
4. enum的排序是根據索引值來進行的。如果要按字母順序表來進行,則 要使用order by cast(
col
as char)
5. enum的內容只能通過常量來建立
set: 最多可以有64個不同的成員
1. 重複的成員會導致警告,或者報錯(strict mode)
2. 自動刪除結尾空白
3. set以數值儲存。每個成員代表乙個bit位,若以數值返回成員則分別為1, 2, 4, 8......
4. 插入資料時,每個成員都只計入一次
5. 查詢, 使用find_in_set或者like, 例如:
mysql>select * from tbl_name
where find_in_set('value
',set_col
)>0;mysql>select * from tbl_name
whereset_col
like '%value
%';
也可以查詢索引和多個成員, 如:
mysql>select * from tbl_name
whereset_col
& 1;mysql>select * from tbl_name
whereset_col
= 'val1
,val2
';
MYSQL中的資料型別
mysql支援大量的列型別,它可以被分為3類 數字型別 日期和時間型別以及字串 字元 型別。本節首先給出可用型別的乙個概述,並且總結每個 列型別的儲存需求,然後提供每個類中的型別性質的更詳細的描述。概述有意簡化,更詳細的說明應該考慮到有關特定列型別的附加資訊,例如你能為其指定值的允 許格式。由mys...
mysql 中的資料型別
mysql 中的資料型別 2008 01 29 13 23 資料型別 描述位元組 推薦使用 smallint 整數,從 32000到 32000範圍 2儲存相對比較小的整數。比如 年紀,數量 int整數,從 2000000000 到 2000000000 範圍 4儲存中等整數 例如 距離 bigin...
MySQL中的資料型別
資料型別 描述 位元組 推薦使用 allint 整數,從 32000到 32000範圍 2 儲存相對比較小的整數。比如 年紀,數量 int 整數,從 2000000000 到 2000000000 範圍 4 儲存中等整數 例如 距離 bigint 不能用 allint 或 int描述的超大整數。8 ...