1. mysql的資料型別 在mysql中有如下幾種資料型別:
(1)數值型
數值前可放乙個負號「-」以表示負值。
(2)字元(串)型
(3)日期和時間型
日期和時間是一些諸如「2006-07-12」或「12:30:43」這樣的值。mysql還支援日期/時間的組合,如「2006-07-12 12:30:43」。
(4)null值
null表示未知值,與空「」不一樣。
2. mysql的列(字段)型別 資料庫中的每個表都是由乙個或多個列(字段)構成的。在用create table語句建立乙個表時,要為每列(字段)指定乙個型別。列(字段)的型別比資料型別更為細化,它精確地描述了給定表列(字段)可能包含的值的種類,如是否帶小數、是否文字很多。
2.1數值列型別
mysql有整數和浮點數值的列型別,如表1所示。整數列型別可以有符號也可無符號。有一種特殊的屬性允許整數列值自動生成,這對需要唯一序列或標識號的應用系統來說是非常有用的。
型別說明
tinyint
非常小的整數
smallint
較小整數
mediumint
中等大小整數
int標準整數
bigint
較大整數
float
單精度浮點數
double
雙精度浮點數
decimal
乙個串的浮點數
表1:數值列型別
型別說明
取值範圍
tinyint[(m)]
有符號值:-128 到127(- 27 到27 - 1)
無符號值:0到255(0 到28 - 1)
smallint[(m)]
有符號值:-32768 到32767(- 215 到215 - 1)
無符號值:0到65535(0 到216 - 1)
mediumint[(m)]
有符號值:-8388608 到8388607(- 223 到223 - 1 )
無符號值:0到16777215(0 到224 - 1)
int[(m)]
有符號值:-2147683648 到2147683647(- 231 到231- 1)
無符號值:0到4294967295(0 到232 - 1)
bigint[(m)]
有符號值:-9223372036854775808 到9223373036854775807(- 263到263-1)
無符號值:0到18446744073709551615(0到264 – 1)
float[(m, d)]
最小非零值:±1.175494351e - 38
double[(m,d)]
最小非零值:±2.2250738585072014e - 308
decimal (m, d)
可變;其值的範圍依賴於m 和d
表2:數值列型別的取值範圍
型別說明
儲存需求
tinyint[(m)]
1位元組smallint[(m)]
2位元組mediumint[(m)]
3位元組int[(m)]
4位元組bigint[(m)]
8位元組float[(m, d)]
4位元組double[(m, d)]
8位元組decimal (m, d)
m位元組(mysql < 3.23),m+2位元組(mysql > 3.23 )
表3:數值列型別的儲存需求
mysql提供了五種整型: tinyint、smallint、mediumint、int和bigint。int為integer的縮寫。這些型別在可表示的取值範圍上是不同的。整數列可定義為unsigned從而禁用負值;這使列的取值範圍為0以上。各種型別的儲存量需求也是不同的。取值範圍較大的型別所需的儲存量較大。
mysql 提供三種浮點型別: float、double和decimal。與整型不同,浮點型別不能是unsigned的,其取值範圍也與整型不同,這種不同不僅在於這些型別有最大值,而且還有最小非零值。最小值提供了相應型別精度的一種度量,這對於記錄科學資料來說是非常重要的(當然,也有負的最大和最小值)。
在選擇了某種數值型別時,應該考慮所要表示的值的範圍,只需選擇能覆蓋要取值的範圍的最小型別即可。選擇較大型別會對空間造成浪費,使表不必要地增大,處理起來沒有選擇較小型別那樣有效。
對於整型值,如果資料取值範圍較小,如人員年齡或兄弟姐妹數,則tinyint最合適。mediumint能夠表示數百萬的值並且可用於更多型別的值,但儲存代價較大。bigint在全部整型中取值範圍最大,而且需要的儲存空間是表示範圍次大的整型int型別的兩倍,因此只在確實需要時才用。對於浮點值,double占用float的兩倍空間。除非特別需要高精度或範圍極大的值,一般應使用只用一半儲存代價的float型來表示資料。
在定義整型列時,可以指定可選的顯示尺寸m。如果這樣,m應該是乙個1 到255的整數。它表示用來顯示列中值的字元數。例如,mediumint(4)指定了乙個具有4個字元顯示寬度的mediumint列。如果定義了乙個沒有明確寬度的整數列,將會自動分配給它乙個預設的寬度。預設值為每種型別的「最長」值的長度。如果某個特定值的可列印表示需要不止m個字元,則顯示完全的值;不會將值截斷以適合m個字元。
對每種浮點型別,可指定乙個最大的顯示尺寸m 和小數字數d。m 的值應該取1 到255。d的值可為0 到3 0,但是不應大於m - 2(如果熟悉odbc 術語,就會知道m 和d 對應於odbc 概念的「精度」和「小數點位數」)。m和d對float和double 都是可選的,但對於decimal是必須的。在選項m 和d時,如果省略了它們,則使用預設值。
2.2字串列型別
型別名說明
char
定長字串
varchar
可變長字串
tinyblob
非常小的blob(二進位製大物件)
blob
小blob
mediumblob
中等的blob
longblob
大blob
tinytext
非常小的文字串
text
小文字串
mediumtext
中等文字串
longtext
大文字串
enum
列舉;列可賦予某個列舉成員
set集合;列可賦予多個集合成員
表4:字串列型別
型別說明
最大尺寸
儲存需求
char( m)
m 位元組
m 位元組
varchar(m)
m 位元組
l + 1位元組
tinyblob, tinytext
28- 1位元組
l + 1位元組
blob, text
216 - 1 位元組
l + 2位元組
mediumblob, mediumtext
224- 1位元組
l + 3位元組
longblob, longtext
232- 1位元組
l + 4位元組
enum(「value1」, 「value2」, ...)
65535 個成員
1 或2位元組
set (「value1」, 「value2」, ...)
64個成員
1、2、3、4 或8位元組
表5:串列型別最大尺寸及儲存需求
l 以外所需的額外位元組為存放該值的長度所需的位元組數。mysql通過儲存值的內容及其長度來處理可變長度的值。這些額外的位元組是無符號整數。請注意,可變長型別的最大長度、此型別所需的額外位元組數以及占用相同位元組數的無符號整數之間的對應關係。例如,mediumblob 值可能最多224 - 1位元組長並需要3 個位元組記錄其結果。3 個位元組的整數型別mediumint 的最大無符號值為224 - 1。
2.3日期時間列型別
mysql 提供了幾種時間值的列型別,它們分別是: date、datetime、time、timestamp和year。下表給出了mysql為定義儲存日期和時間值所提供的這些型別,並給出了每種型別的合法取值範圍。
型別名說明
date
「yyyy-mm-dd」格式表示的日期值
time
「hh:mm:ss」格式表示的時間值
datetime
「yyyy-mm-dd hh:mm:ss」格式
timestamp
「yyyymmddhhmmss」格式表示的時間戳值
year
「yyyy」格式的年份值
表6:日期時間列型別
型別名取值範圍
儲存需求
date
「1000-01-01」到「9999-12-31」
3位元組time
「-838:59:59」到「838:59:59」
3位元組datetime
「1000-01-01 00:00:00」 到「9999-12-31 23:59:59」
8位元組timestamp
19700101000000 到2037 年的某個時刻
4位元組year
1901 到2155
1位元組表7: 日前時間列型別的取值範圍和儲存需求
對於資料型別,在確定可能範圍的情況下盡量選用較小的型別。對於主鍵和索引,最好選用int型,可以減小索引的大小;對於包含text和blob的表,肯定會儲存在磁碟,相對於記憶體操作,到磁碟讀取資料的效率也會非常低。
部落格原載:
MYSQL的基本型別
mysql 資料型別 mysql中定義資料欄位的型別對你資料庫的優化是非常重要的。mysql支援多種型別,大致可以分為三類 數值 日期 時間和字串 字元 型別。數值型別 mysql支援所有標準sql數值資料型別。這些型別包括嚴格數值資料型別 integer smallint decimal和nume...
MySQL資料的基本型別 實用篇
mysql mysql 是現在最流行的關係型資料庫管理系統 關係型資料 關係型資料庫指 多張能互相聯接的二維行列 組成的資料庫 類似windows下的excel 資料 sql 表示 structrued query language 結構化查詢語言 mysql主要功能 儲存資料 倉庫 管理資料 增刪...
MySQL大文字型別
char n 固定長度 最多 255 個字元 varchar n 可變長度,mysql 4.1 及以前最大 255 字元,mysql 5 之後最大 65535 位元組 tinytext 可變長度,最多 255 個字元 text 可變長度 乙個blob或text列,最大長度為65535 2 16 1 ...