MySQL數據類型和經常使用字段屬性總結。本站提示廣大學習愛好者:(MySQL數據類型和經常使用字段屬性總結)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL數據類型和經常使用字段屬性總結正文
媒介
比如C++中,界說int類型須要若干字節,界說double類型須要若干字節一樣,MySQL對表每一個列中的數據也會實施嚴厲掌握,這是數據驅動運用法式勝利的症結。M媒介
比如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);做了以下實驗:
1.拔出123.45678,最初查詢獲得的成果為99.999;
2.拔出123.456,最初查詢成果為99.999;
3.拔出12.34567,最初查詢成果為12.346;
所以,在應用浮點型的時刻,照樣要留意圈套的,要以拔出數據庫中的現實成果為准。
字符串數據類型
MySQL數據類型 寄義 char(n) 固定長度,最多255個字符 varchar(n) 可變長度,最多65535個字符 tinytext 可變長度,最多255個字符 text 可變長度,最多65535個字符 mediumtext 可變長度,最多2的24次方-1個字符 longtext 可變長度,最多2的32次方-1個字符1.char(n)和varchar(n)中括號中n代表字符的個數,其實不代表字節個數,所以當應用了中文的時刻(UTF8)意味著可以拔出m個中文,然則現實會占用m*3個字節。
2.同時char和varchar最年夜的差別就在於char不論現實value都邑占用n個字符的空間,而varchar只會占用現實字符應當占用的空間+1,而且現實空間+1<=n。
3.跨越char和varchar的n設置後,字符串會被截斷。
4.char的下限為255字節,varchar的下限65535字節,text的下限為65535。
5.char在存儲的時刻會截斷尾部的空格,varchar和text不會。
6.varchar會應用1-3個字節來存儲長度,text不會。
其它類型
1.enum(“member1″, “member2″, … “member65535″)
enum數據類型就是界說了一種列舉,最多包括65535個分歧的成員。當界說了一個enum的列時,該列的值限制為列界說中聲明的值。假如列聲明包括NULL屬性,則NULL將被以為是一個有用值,而且是默許值。假如聲清楚明了NOT NULL,則列表的第一個成員是默許值。
2.set(“member”, “member2″, … “member64″)
set數據類型為指定一組預界說值中的零個或多個值供給了一種辦法,這組值最多包含64個成員。值的選擇限制為列界說中聲明的值。
數據類型屬性
下面年夜概總結了MySQL中的數據類型,固然了,下面的總結確定是不周全的,假如要異常周全的總結這些內容,好幾篇文章都不敷的。上面就再來總結一些經常使用的屬性。
1.auto_increment
auto_increment能為新拔出的行賦一個獨一的整數標識符。為列賦此屬性將為每一個新拔出的行賦值為上一次拔出的ID+1。
MySQL請求將auto_increment屬性用於作為主鍵的列。另外,每一個表只許可有一個auto_increment列。例如:
id smallint not null auto_increment primary key
2.binary
binary屬性只用於char和varchar值。當為列指定了該屬性時,將以辨別年夜小寫的方法排序。與之相反,疏忽binary屬性時,將應用不辨別年夜小寫的方法排序。例如:
hostname char(25) binary not null
3.default
default屬性確保在沒有任何值可用的情形下,付與某個常量值,這個值必需是常量,由於MySQL不許可拔出函數或表達式值。另外,此屬性沒法用於BLOB或TEXT列。假如曾經為此列指定了NULL屬性,沒有指定默許值時默許值將為NULL,不然默許值將依附於字段的數據類型。例如:
subscribed enum('0', '1') not null default '0'
4.index
假如一切其他身分都雷同,要加快數據庫查詢,應用索引平日是最主要的一個步調。索引一個列會為該列創立一個有序的鍵數組,每一個鍵指向其響應的表行。今後針對輸出前提可以搜刮這個有序的鍵數組,與搜刮全部未索引的表比擬,這將在機能方面獲得極年夜的晉升。
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個字符,由於能夠不須要其它字母來辨別分歧的名字。由於應用較小的索引時機能更好,所以應該在理論中盡可能應用小的索引。
5.not null
假如將一個列界說為not null,將不許可向該列拔出null值。建議在主要情形下一直應用not null屬性,由於它供給了一個根本驗證,確保曾經向查詢傳遞了一切需要的值。
6.null
為列指定null屬性時,該列可以堅持為空,而豈論行中其它列能否曾經被填充。記住,null准確的說法是“無”,而不是空字符串或0。
7.primary key
primary key屬性用於確保指定行的獨一性。指定為主鍵的列中,值不克不及反復,也不克不及為空。為指定為主鍵的列付與auto_increment屬性是很罕見的,由於此列不用與行數據有任何干系,而只是作為一個獨一標識符。主鍵又分為以下兩種:
(1)單字段主鍵
假如輸出到數據庫中的每行都曾經有弗成修正的獨一標識符,普通會應用單字段主鍵。留意,此主鍵一旦設置就不克不及再修正。
(2)多字段主鍵
假如記載中任何一個字段都弗成能包管獨一性,便可以應用多字段主鍵。這時候,多個字段結合起來確保獨一性。假如湧現這類情形,指定一個auto_increment整數作為主鍵是更好的方法。
8.unique
被付與unique屬性的列將確保一切值都有分歧的值,只是null值可以反復。普通會指定一個列為unique,以確保該列的一切值都分歧。例如:
email varchar(45) unique
9.zerofill
zerofill屬性可用於任何數值類型,用0填充一切殘剩字段空間。例如,無符號int的默許寬度是10;是以,當“零填充”的int值為4時,將表現它為0000000004。例如:
orderid int unsigned zerofill not null
總結終了!!!