第3章MySQL存儲(chǔ)引擎和數(shù)據(jù)類型(2)MySQL的數(shù)據(jù)類型_第1頁
第3章MySQL存儲(chǔ)引擎和數(shù)據(jù)類型(2)MySQL的數(shù)據(jù)類型_第2頁
第3章MySQL存儲(chǔ)引擎和數(shù)據(jù)類型(2)MySQL的數(shù)據(jù)類型_第3頁
第3章MySQL存儲(chǔ)引擎和數(shù)據(jù)類型(2)MySQL的數(shù)據(jù)類型_第4頁
第3章MySQL存儲(chǔ)引擎和數(shù)據(jù)類型(2)MySQL的數(shù)據(jù)類型_第5頁
已閱讀5頁,還剩66頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第3章 MySQL存儲(chǔ)引擎和數(shù)據(jù)類型(2)MySQL的數(shù)據(jù)類型MySQL數(shù)據(jù)類型簡介 數(shù)字類型字符串類型日期時(shí)間類型選擇正確的數(shù)據(jù)類型1、MySQL的數(shù)據(jù)類型簡介MySQL 的數(shù)據(jù)類型是一種手段,通過這種手段可以描述一個(gè)表列包含什么類型的值,這又決定了 MySQL 怎樣處理這些值。例如,數(shù)值既可用數(shù)字也可用字符串的數(shù)據(jù)類型來存放,但是根據(jù)存放這些值的類型, MySQL 對(duì)它們的處理將會(huì)有些不同。 1字符串“12345”保存方法2數(shù)字12345保存方法不同數(shù)據(jù)類型的保存方法不同數(shù)據(jù)類型的保存方法共計(jì)占用5個(gè)字節(jié)存儲(chǔ)空間字符“1”編碼00110001字符“2”編碼00110010字符“3”編碼00

2、110011字符“4”編碼00110100字符“5”編碼00110101共計(jì)占用2個(gè)字節(jié)存儲(chǔ)空間數(shù)字12345的二進(jìn)制編碼00110000001110011、MySQL的數(shù)據(jù)類型簡介每種列類型都有幾個(gè)特性如下:其中可以存放什么類型的值。值要占據(jù)多少空間,以及該值是否是定長的(所有值占相同數(shù)量的空間)或可變長的(所占空間量依賴于所存儲(chǔ)的值)。該類型的值怎樣比較和存儲(chǔ)。此類型是否允許 NULL 值。此類型是否可以索引。1、MySQL的數(shù)據(jù)類型簡介p數(shù)據(jù)保存的格式不同,讀取這些數(shù)據(jù)時(shí)進(jìn)行的操作當(dāng)然也就不同,因此數(shù)據(jù)庫在存儲(chǔ)數(shù)據(jù)之前都必須要明確數(shù)據(jù)的格式,也就是數(shù)據(jù)的數(shù)據(jù)類型。p如果不知道某一個(gè)數(shù)據(jù)存

3、儲(chǔ)時(shí)所使用的數(shù)據(jù)類型,就無法正確的讀出該數(shù)據(jù)來,因?yàn)槭褂貌煌臄?shù)據(jù)格式去讀去同一個(gè)數(shù)據(jù)時(shí),得到的結(jié)果也是截然不同的。1、MySQL的數(shù)據(jù)類型簡介2.數(shù)字類型 數(shù)字類型用于存儲(chǔ)數(shù)字,可分為整數(shù)類型和浮點(diǎn)數(shù)(小數(shù))類型。如果僅從數(shù)學(xué)的角度上分析,整數(shù)和小數(shù)都可以統(tǒng)一為小數(shù),整數(shù)只是小數(shù)位為零的小數(shù),但在MySQL中這兩數(shù)據(jù)類型的保存方式卻有很大的不同。一般而言,能使用整數(shù)保存的數(shù)據(jù),就盡量選擇使用整數(shù)類型。比如,要保存商品的價(jià)格時(shí),可能會(huì)因?yàn)橐粋€(gè)筆記本的價(jià)格是3.20元而為這個(gè)數(shù)據(jù)選擇浮點(diǎn)數(shù)類型,但更好的選擇卻是將3.20元變換成320分后以整數(shù)方式保存。 MySQL 支持科學(xué)表示法,由整數(shù)或浮點(diǎn)

4、數(shù)后跟“ e”或“E”、一個(gè)符號(hào)(“+”或“-”)和一個(gè)整數(shù)指數(shù)來表示。1.34E+12 和 43.27e-1 都是合法的科學(xué)表示法表示的數(shù)。而1.34E12 不是合法的,因?yàn)橹笖?shù)前的符號(hào)未給出。指數(shù)前的“ e”也是一個(gè)合法的十六進(jìn)制數(shù)字,因此有可能會(huì)弄錯(cuò)。數(shù)值前可放一個(gè)負(fù)號(hào)“-”以表示負(fù)值。2.數(shù)字類型 數(shù)字類型可以結(jié)合UNSIGNED及ZEROFILL符號(hào)使用,UNSIGNED表示無符號(hào)數(shù)字,ZEROFILL表示使用“0”作為填充符進(jìn)行填充。2.數(shù)字類型 2.1 整數(shù)整數(shù)在MySQL中保存時(shí),MySQL會(huì)將其轉(zhuǎn)換成二進(jìn)制編碼的形式直接保存。整數(shù)可以直接以十六進(jìn)制表示,方法為在整數(shù)對(duì)應(yīng)的十六

5、進(jìn)制編碼(“0”到“9”及“a”到“f”)前加上“0 x”。例如,0 x0a為十進(jìn)制的10,而0 xffff為十進(jìn)制的65535。十六進(jìn)制數(shù)字不區(qū)分大小寫,但其前綴“0 x”不能為“0X”。即0 x0a和0 x0A都是合法的,但0X0a和0X0A不是合法的。2.1 整數(shù)類型名類型名字節(jié)數(shù)字節(jié)數(shù)取值范圍取值范圍無符號(hào)無符號(hào)(unsigned)(unsigned)有符號(hào)有符號(hào)(signed)(signed)TINYINT1 0 28-1-27 27-1SMALLINT20 216-1-215 215-1MEDIUMINT30 224-1-223 223-1INT40 232-1-231 231-1

6、BIGINT80 264-1-263 263-12.1 整數(shù)在指定整數(shù)類型時(shí),可以采用“類型名顯示長度”的寫法,如int3,其中“顯示長度”用于指定數(shù)字在顯示時(shí)的長度,“顯示長度”對(duì)數(shù)據(jù)的大小范圍沒有影響。當(dāng)數(shù)字的實(shí)際長度比顯示長度要小時(shí),MySQL顯示該數(shù)字時(shí)會(huì)自動(dòng)使用填充符補(bǔ)足指定的“顯示長度”;當(dāng)數(shù)字的實(shí)際長度比顯示長度大時(shí),MySQL會(huì)突破顯示長度的限制而顯示數(shù)字的實(shí)際值。2.1 整數(shù)默認(rèn)情況下MySQL會(huì)用空格作為填充符進(jìn)行填充,但“顯示長度”通常會(huì)與ZEROFILL屬性連用,表示MySQL使用“0”作為填充符。我們應(yīng)該盡量避免數(shù)字的實(shí)際長度超過其顯示長度,出現(xiàn)這種情況時(shí)不僅僅是使表

7、中的記錄看起來不協(xié)調(diào),還會(huì)在進(jìn)行某些復(fù)雜的表聯(lián)結(jié)操作時(shí)出錯(cuò)。 2.2 浮點(diǎn)數(shù) 浮點(diǎn)數(shù)可以理解為我們通常所說的小數(shù),MySQL提供三種浮點(diǎn)類型:FLOAT、DOUBLE和DECIMAL。浮點(diǎn)數(shù)類型的取值范圍與整型不同,除了有最大值和最小值外,浮點(diǎn)數(shù)類型還有最小正數(shù)和最大負(fù)數(shù),這兩個(gè)值的絕對(duì)值相等,用于衡量浮點(diǎn)數(shù)的精度,這對(duì)于記錄科學(xué)數(shù)據(jù)來說是非常重要的。2.2 浮點(diǎn)數(shù) FLOAT型FLOAT類型有兩種使用方法:FLOAT(有效位數(shù),小數(shù)位數(shù))FLOAT(二進(jìn)制位數(shù))。2.2 浮點(diǎn)數(shù) FLOAT(有效位數(shù),小數(shù)位數(shù))此類型又稱為單精度浮點(diǎn)數(shù)類型,占用4字節(jié)長度,取值范圍是:-3.402823466

8、E+38到3.402823466E+38,最小正數(shù)是1.175494351E-38,最大負(fù)數(shù)是-1.175494351E-38。以上列出的只是理論值,不同計(jì)算機(jī)的硬件可能會(huì)使這一范圍有所不同。2.2 浮點(diǎn)數(shù) 其中,“有效位數(shù)”表示有效數(shù)字的最大位數(shù);“小數(shù)位數(shù)”表示小數(shù)點(diǎn)后的最大位數(shù)。如果“有效位數(shù)”和“小數(shù)位數(shù)”都省略,其默認(rèn)值會(huì)因硬件不同而有所不同,單精度浮點(diǎn)數(shù)可精確到小數(shù)點(diǎn)后第7位。FLOAT類型表示小數(shù)部分時(shí),由于二進(jìn)制的原因只能準(zhǔn)確的表示1/2n(n不大于表示小數(shù)位的二進(jìn)制位數(shù)),或它們的組合,因此在表示小數(shù)時(shí)會(huì)有不精確的現(xiàn)象。2.2 浮點(diǎn)數(shù) FLOAT(二進(jìn)制位數(shù))這是一個(gè)混合了F

9、LOAT和DOUBLE兩種類型的數(shù)據(jù)類型,其中“二進(jìn)制位數(shù)”代表表示該浮點(diǎn)數(shù)所占用的二進(jìn)制位數(shù),這個(gè)參數(shù)唯一的作用就是使MySQL確定該使用FLOAT型還是DOUBLE型來作為實(shí)際的數(shù)據(jù)類型。2.2 浮點(diǎn)數(shù) FLOAT(二進(jìn)制位數(shù))當(dāng)“二進(jìn)制位數(shù)”在0到24(包括24)之間時(shí),這一數(shù)據(jù)類型等同于未指定“有效位數(shù)”和“小數(shù)位數(shù)”的FLOAT型。當(dāng)“二進(jìn)制位數(shù)”在25到53之間時(shí),這一數(shù)據(jù)類型會(huì)被MySQL轉(zhuǎn)換成未指定“有效位數(shù)”和“小數(shù)位數(shù)”的DOUBLE型。其取值范圍也與相應(yīng)的數(shù)據(jù)類型一致。2.2 浮點(diǎn)數(shù) DOUBLE (有效位數(shù),小數(shù)位數(shù)) 此類型又稱雙精度浮點(diǎn)數(shù)類型,占用8字節(jié)長度,取值范

10、圍是: -1.7976931348623157E+308到1.7976931348623157E+308,最大負(fù)數(shù)是: -2.2250738585072014E-308, 最小正數(shù)是:2.2250738585072014E-308。以上列出的也只是理論值,不同計(jì)算機(jī)的硬件可能會(huì)使這一范圍有所不同。2.2 浮點(diǎn)數(shù) 聲明DOUBLE類型時(shí)可使用“DOUBLE(有效位數(shù),小數(shù)位數(shù))”的寫法。其中,“有效位數(shù)”表示有效數(shù)字的最大位數(shù);“小數(shù)位數(shù)”表示小數(shù)點(diǎn)后的最大位數(shù)。雙精度浮點(diǎn)數(shù)可精確到小數(shù)點(diǎn)后第15位。2.2 浮點(diǎn)數(shù) DECIMAL(有效位數(shù),小數(shù)位數(shù))此類型用于保存對(duì)精確度要求較高的數(shù)值。在My

11、SQL 5.1以前,DECIMAL類型在保存小數(shù)時(shí),使用的不是二進(jìn)制保存法,而是使用的類似字符串的保存方法,對(duì)每一位小數(shù)位單獨(dú)保存;在MySQL 5.1中,DECIMAL類型使用的是二進(jìn)制保存法。2.2 浮點(diǎn)數(shù) 聲明時(shí)可使用“DECIMAL (有效位數(shù),小數(shù)位數(shù))”的寫法。其中,“有效位數(shù)”表示有效數(shù)字的最大位數(shù);“小數(shù)位數(shù)”表示小數(shù)點(diǎn)后的最大位數(shù)。如果使用DECIMAL(有效位數(shù))的寫法,而不指明“小數(shù)位數(shù)”,則相當(dāng)于DECIMAL(有效位數(shù),0)的寫法,此時(shí)不保存小數(shù)部分。如果使用DECIMAL的寫法,既不指明“有效位數(shù)”,也不指定“小數(shù)位數(shù)”,則等同于DECIMAL(10,0)的寫法。2

12、.2 浮點(diǎn)數(shù) DECIMAL類型的最大有效位數(shù)是65,最大小數(shù)位數(shù)是30,其實(shí)際的取值范圍由聲明時(shí)指定的有效位數(shù)和小數(shù)位數(shù)而定,如DECIMAL(5,2)的取值范圍是-999.99至999.99。如果在插入數(shù)值時(shí),小數(shù)位數(shù)超過了指定的“小數(shù)位數(shù)”,MySQL會(huì)將該值的小數(shù)位數(shù)轉(zhuǎn)換成指定的小數(shù)位數(shù)。2.3 位類型 位類型可會(huì)為BIT型和BOOL型。BIT位數(shù) 此類型用于聲明一個(gè)指定位數(shù)的數(shù)據(jù),位數(shù)的取值范圍是1到64,默認(rèn)值是1。此類型所占用的字節(jié)數(shù)由“位數(shù)”決定,每滿8位即需一個(gè)新的字節(jié),其長度的計(jì)算方法為“(位數(shù)+7)/8”,如有小數(shù)則進(jìn)一。如BIT25占用4個(gè)字節(jié),而BIT26則占用5個(gè)字

13、節(jié)。2.3 位類型 此數(shù)據(jù)類型用于存儲(chǔ)基于位的數(shù)值,指定位類型的值時(shí),可以采用b二進(jìn)制值的寫法。如, b111 代表7,b10000000代表128。如果所插入的值的位數(shù)比指定的位數(shù)少時(shí),MySQL會(huì)在值的左邊用0填充,如將值b111插入到BIT8時(shí),等同于插入值b00000111。2.3 位類型 bool型bool型數(shù)據(jù)用于存儲(chǔ)邏輯值,它只有兩種狀態(tài),即“TRUE”和“FALSE”,或“1”和“0”。此類型等價(jià)于TINYINT(1)類型。其值為0時(shí)表示“FALSE”,所有非0值都表示“TRUE”。3. 字符串類型 字符串類型包括以下類型:CHARVARCHARBINARYVARBINARYB

14、LOBTEXTENUMSET字符串中可使用幾個(gè)轉(zhuǎn)義序列,它們用來表示特殊的字符。每個(gè)序列以一個(gè)反斜杠(“”)開始,指出臨時(shí)不同于通常的字符解釋。注意 NUL 字節(jié)與 NULL 值不同;NUL 為一個(gè)零值字節(jié),而 NULL 為沒有值。3. 字符串類型 3. 字符串類型 轉(zhuǎn)義字符轉(zhuǎn)義字符含義含義0NUL (ASCII 0)單引號(hào)”雙引號(hào)b退格n新行r回車t 制表符反斜杠3. 字符串類型 要在串中包括一個(gè)引號(hào),可有如下三種選擇:如果串是用相同的引號(hào)括起來的,那么在串中需要引號(hào)的地方雙寫引號(hào)即可。如果串是用另外的引號(hào)括起來的,則不需要雙寫相應(yīng)引號(hào)。用反斜杠方式表示,這種方法不去管用來將串括起的是單引號(hào)

15、還是雙引號(hào)。3.1 CHAR和VARCHAR這兩個(gè)類型都用于保存小型字符串,只是MySQL保存它們的方法不同。CHAR字符串長度CHAR字符串長度用于聲明一個(gè)定長類型的列,其中“字符串長度”用于限制可插入的字符串的最大長度,如CHAR100最多只能保存100個(gè)字符。“字符串長度”的設(shè)置范圍為0到255。3.1 CHAR和VARCHARCHAR類型的列,無論插入的字符數(shù)量是多少,最終都會(huì)被MySQL處理成指定字符串長度的列。當(dāng)插入的字符串長度小于指定的字符串長度時(shí),MySQL會(huì)在字符串尾部以空格進(jìn)行填充。3.1 CHAR和VARCHARVARCHAR字符串長度VARCHAR字符串長度用于聲明一個(gè)

16、變長類型的列,其中“字符串長度”也用于限制插入字符串的最大長度,“字符串長度”的設(shè)置范圍為0到65535。(由于MySQL規(guī)定一條記錄的所有列的長度之和不能超過65535個(gè)字節(jié),受此限制一列的最大長度實(shí)際只能到65532字節(jié)。)3.1 CHAR和VARCHAR與CHAR類型不同的是,VARCHAR類型在保存數(shù)據(jù)時(shí)使用的是“按需分配”存儲(chǔ)空間的策略,它在保存數(shù)據(jù)的同時(shí)記錄下該字符串的實(shí)際長度,因此所占用的存儲(chǔ)空間大多數(shù)情況下是小于指定的“字符串長度”的。如果插入的字符串的長度超過了指定的字符串長度,MySQL會(huì)截?cái)嘣撟址.?dāng)被截掉的字符串不是空格時(shí),MySQL會(huì)進(jìn)行警告提示。如果MySQL工作

17、在“strict”模式,將不允許截掉空格以外的字符,否則會(huì)產(chǎn)生運(yùn)行錯(cuò)誤,而不僅僅是一個(gè)警告提示。3.1 CHAR和VARCHAR使用VARCHAR類型是要注意的一個(gè)問題是,VARCHAR在保存字符串時(shí),會(huì)自動(dòng)去除字符串結(jié)束處的空格,如果要進(jìn)行字符串的比較,MySQL也會(huì)將僅有尾部空格不同的字符串認(rèn)為是相同的字符串。這一點(diǎn)與標(biāo)準(zhǔn)SQL的處理方法不同。3.2 BINARY和VARBINARY BINARY和VARBINARY與CHAR和VARCHAR類型很相似,它們主要用存儲(chǔ)二進(jìn)制數(shù)據(jù),而不是普通的字符串。這兩種數(shù)據(jù)類型沒有對(duì)應(yīng)的字符集,對(duì)它們的排序或比較也都只是基于二進(jìn)制值的比較,而不是字符集的

18、比較。BINARY和VARBINARY的最大長度與CHAR和VARCHAR類型一樣,唯一的區(qū)別是BINARY和VARBINARY類型的最大長度是指的字節(jié)數(shù),而CHAR和VARCHAR類型的最大長度則是指的字符數(shù)。3.2 BINARY和VARBINARY MySQL在存儲(chǔ)BINARY類型時(shí),會(huì)在數(shù)據(jù)的尾部追加0 x00(數(shù)字0)以確保長度為指定的長度,但在執(zhí)行SELECT語句會(huì)不會(huì)主動(dòng)刪除掉尾部的0 x00。同時(shí),尾部的0 x00也會(huì)參與比較和排序,甚至?xí)绊懙紻ISTINCT關(guān)鍵字。另外,0 x00與空格也不相等,0 x00 SELECT * FROM 表名 WHERE enum列=0;3NU

19、LL值的索引為NULL。 3.4 枚舉ENUM 可以將ENUM類型的數(shù)據(jù)直接作為數(shù)字使用,該數(shù)據(jù)所對(duì)應(yīng)的數(shù)字即是其索引值。例如,可以用如下語句將ENUM列顯示為其索引值:mysql SELECT enum列+0 FROM 表名;3.4 枚舉ENUM 如果將一個(gè)數(shù)字賦值給ENUM類型的列,該數(shù)字會(huì)被處理成該ENUM類型的索引值,實(shí)際保存的值將是該索引值對(duì)應(yīng)的枚舉成員。雖然這種做法是可行的,但本書不建議使用這種方法來定義一個(gè)ENUM列,因?yàn)檫@很容易引起混淆,并且完全喪失了ENUM類型的優(yōu)勢(shì)。 3.4 枚舉ENUM MySQL在對(duì)ENUM類型的列進(jìn)行排序時(shí),會(huì)按照其索引值進(jìn)行排序。例如,對(duì)于ENUM

20、(a,b),a排在b前面,但對(duì)于ENUM(b,a),b排在a前面。空字符串排在非空字符串前面,并且NULL值排在所有其它枚舉值前面。要想防止意想不到的結(jié)果,按字母順序規(guī)定ENUM列。還可以使用GROUP BY CAST(ENUM列 AS CHAR)來確保按照詞匯對(duì)列進(jìn)行排序而不是用索引值。3.4 枚舉ENUM 如果想查看一個(gè)ENUM列的所有可能的值,可以使用如下語句:SHOW COLUMNSFROM 表名LIKE enum列3.5 多值SETSET類型也對(duì)應(yīng)一個(gè)值列表,但與ENUM不同的是,SET類型允許被賦值為這些值中若干個(gè)值的組合。指定包括多個(gè)SET成員的SET列值時(shí)各成員之間用逗號(hào)(,)

21、隔開,這就要求SET成員值本身不能包含逗號(hào)。3.5 多值SETSET最多可以有64個(gè)不同的成員。當(dāng)創(chuàng)建表時(shí),SET成員值的尾部空格將自動(dòng)被刪除。當(dāng)讀取SET類型的列時(shí),MySQL將會(huì)使用SET類型定義時(shí)所使用的大小寫來顯示。同ENUM類型一樣,也可以為SET列分配字符集和校對(duì)規(guī)則。3.5 多值SETMySQL保存SET類型的值時(shí),并不會(huì)保存相應(yīng)的成員字符串,而是采用二進(jìn)制的保存方法。二進(jìn)制數(shù)字的每一位對(duì)應(yīng)于SET值的一項(xiàng),其中低階位對(duì)應(yīng)第1個(gè)SET成員。如果將一個(gè)SET類型的值作為數(shù)字使用時(shí),該值的位設(shè)置對(duì)應(yīng)組成列值的SET成員。如下代碼可以讀取出SET類型的列所對(duì)應(yīng)索引值:mysql SEL

22、ECT set列+0 FROM 表名;4. 日期時(shí)間類型 日期時(shí)間類型包括為DATETIME、DATE、TIMESTAMP、TIME和YEAR等類型。每個(gè)類型都有不同的有效值范圍和“零”值,當(dāng)指定的時(shí)間值無法保存到對(duì)應(yīng)的類型中時(shí),MySQL將會(huì)把“零”值保存在該類型中。TIMESTAMP是比較特殊的類型,它有專有的自動(dòng)更新特性。4. 日期時(shí)間類型 一般情況下,如果試圖插入一個(gè)不合法的日期,MySQL將給出警告或錯(cuò)誤。但是如果打開了“ALLOW_INVALID_DATES”SQL模式,則MySQL會(huì)允許接受一些不合法的日期,如1999-11-31。在“ALLOW_INVALID_ DATES”S

23、QL模式下,MySQL只驗(yàn)證月范圍為從0到12,日范圍為從0到31,注意月和日都可以為零。4. 日期時(shí)間類型 MySQL還允許將0000-00-00保存為“偽日期”(如果不找啟用NO_ZERO_DATE SQL模式)。這在某些情況下比使用NULL值更方便,而且數(shù)據(jù)和索引占用的空間會(huì)更小。4. 日期時(shí)間類型 使用時(shí)間日期類型時(shí),應(yīng)該注意以下幾點(diǎn):1包含兩位年值的日期會(huì)令人模糊,因?yàn)闊o法確定其世紀(jì)。MySQL使用以下規(guī)則解釋兩位年值:70-99范圍的年值轉(zhuǎn)換為1970-199900-69范圍的年值轉(zhuǎn)換為2000-20692日期總是以年-月-日順序(如,98-09-04),而不是月-日-年或日-月-

24、年順序。3如果需要,MySQL可以將日期或時(shí)間類型的值轉(zhuǎn)換為數(shù)字,反之亦然。4. 日期時(shí)間類型 4當(dāng) MySQL遇到一個(gè)日期或時(shí)間類型的超出范圍或?qū)τ谠擃愋筒缓戏ǖ闹禃r(shí),它將該值轉(zhuǎn)換為該類的“零”值。但是超出范圍的TIME值會(huì)被裁剪到TIME范圍的相應(yīng)端點(diǎn)。5“零”值是特殊值,可以使用值0或0來將一個(gè)時(shí)間日期類型的列設(shè)置成“零”值。4.1 DATATIME當(dāng)需要同時(shí)包含日期和時(shí)間信息的值時(shí)應(yīng)該使用DATETIME類型。MySQL以YYYY-MM-DD HH:MM:SS格式檢索和顯示DATETIME值。支持的范圍為1000-01-01 00:00:00到9999-12-31 23:59:59。4

25、.1 DATATIME可以使用任何常見格式指定DATETIME值:YYYY-MM-DD HH:MM:SS或YY-MM-DD HH:MM:SS格式的字符串。YYYYMMDDHHMMSS或YYMMDDHHMMSS格式的沒有間割符的字符串,如果字符串對(duì)于日期類型是有意義的,也允許使用。YYYYMMDDHHMMSS或YYMMDDHHMMSS格式的數(shù)字,如果數(shù)字對(duì)于日期類型是有意義的,也允許使用。4.1 DATATIME以上寫法中,無效DATETIME值被轉(zhuǎn)換為相應(yīng)類型的“零”值(0000-00-00 00:00:00、0000-00-00或者00000000000000)。如果字符串中有分隔符,則月和

26、日只有一位時(shí)可以只寫一位,但如果沒有分隔符,就必須寫成兩位,其中十位數(shù)字為0。4.2 DATE當(dāng)只需要日期值而不需要時(shí)間部分時(shí)應(yīng)使用DATE類型。MySQL用YYYY-MM-DD格式檢索和顯示DATE值。支持的范圍是1000-01-01到 9999-12-31。 4.3 TIMESTAMPTIMESTAMP列用于INSERT或UPDATE操作時(shí)記錄日期和時(shí)間。如果人為的給它分配一個(gè)值,表中的第一個(gè)TIMESTAMP列自動(dòng)設(shè)置為最近操作的日期和時(shí)間。也可以通過分配一個(gè)NULL值,將TIMESTAMP列設(shè)置為當(dāng)前的日期和時(shí)間。TIMESTAMP值返回后顯示為YYYY-MM-DD HH:MM:SS格

27、式的字符串,顯示寬度固定為19個(gè)字符。如果想要獲得數(shù)字值,可以在TIMESTAMP 列添加+0。4.3 TIMESTAMP初始化和更新TIMESTAMP列的方法如下:1可以將當(dāng)前的時(shí)間戳指定為默認(rèn)值或自動(dòng)更新的值,但二者不能同時(shí)選擇。2可以指定任意一個(gè)TIMESTAMP列為自動(dòng)初始化或更新為當(dāng)前的日期和時(shí)間,而不僅限于第1個(gè)TIMESTAMP列。4.4 TIMETIME類型用于保存精確到秒的時(shí)間,范圍是-838:59:59到838:59:59。MySQL以HH:MM:SS格式顯示TIME值,但允許使用字符串或數(shù)字為TIME列分配值。小時(shí)部分之所以沒有限制為小于24小時(shí),是因?yàn)樗€可用于記錄兩個(gè)時(shí)刻之間的時(shí)間間隔,這個(gè)間隔可能會(huì)超過一天的時(shí)間。 4.4 TIME為TIME賦值的方法可參考DATATIME中的相關(guān)內(nèi)容,如果要保存的值超出TIME

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論