好比C++中,定義int類型需要多少字節,定義double類型需要多少字節一樣,MySQL對表每個列中的數據也會實行嚴格控制,這是數據驅動應用程序成功的關鍵。MySQL提供了一組可以賦給表中各個列的數據類型,每個類型都強制數據滿足為該數據類型預先確定的一組規則,例如大小、類型及格式。
這裡先總結數據類型。MySQL中的數據類型大的方面來分,可以分為:日期和時間、數值,以及字符串。下面就分開來進行總結。
MySQL數據類型 含義 date 3字節,日期,格式:2014-09-18 time 3字節,時間,格式:08:42:30 datetime 8字節,日期時間,格式:2014-09-18 08:42:30 timestamp 4字節,自動存儲記錄修改的時間 year 1字節,年份
整型
MySQL數據類型 含義(有符號) tinyint 1字節,范圍(-128~127) smallint 2字節,范圍(-32768~32767) mediumint 3字節,范圍(-8388608~8388607) int 4字節,范圍(-2147483648~2147483647) bigint 8字節,范圍(+-9.22*10的18次方)
上面定義的都是有符號的,當然了,也可以加上unsigned關鍵字,定義成無符號的類型,那麼對應的取值范圍就要翻翻了,比如:
tinyint unsigned的取值范圍為0~255。
浮點型
MySQL數據類型 含義 float(m, d) 4字節,單精度浮點型,m總個數,d小數位 double(m, d) 8字節,雙精度浮點型,m總個數,d小數位 decimal(m, d) decimal是存儲為字符串的浮點數
我在MySQL中建立了一個表,有一列為float(5, 3);做了以下試驗:
所以,在使用浮點型的時候,還是要注意陷阱的,要以插入數據庫中的實際結果為准。
MySQL數據類型 含義 char(n) 固定長度,最多255個字符 varchar(n) 可變長度,最多65535個字符 tinytext 可變長度,最多255個字符 text 可變長度,最多65535個字符 mediumtext 可變長度,最多2的24次方-1個字符 longtext 可變長度,最多2的32次方-1個字符
上面大概總結了MySQL中的數據類型,當然了,上面的總結肯定是不全面的,如果要非常全面的總結這些內容,好幾篇文章都不夠的。下面就再來總結一些常用的屬性。
id smallint not null auto_increment primary key
hostname char(25) binary not null
subscribed enum('0', '1') not null default '0'
create table employees
(
id varchar(9) not null,
firstname varchar(15) not null,
lastname varchar(25) not null,
email varchar(45) not null,
phone varchar(10) not null,
index lastname(lastname),
primary key(id));
我們也可以利用MySQL的create index命令在創建表之後增加索引:
create index lastname on employees (lastname(7));
這一次只索引了名字的前7個字符,因為可能不需要其它字母來區分不同的名字。因為使用較小的索引時性能更好,所以應當在實踐中盡量使用小的索引。
email varchar(45) unique
orderid int unsigned zerofill not null
總結完畢!!!