資源描述:
《Mysql數(shù)據(jù)類型(字段)介紹》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、MySql數(shù)據(jù)庫(kù)的列類型(字段類型)MySQL數(shù)據(jù)庫(kù)的表是一個(gè)二維表,由一個(gè)或多個(gè)數(shù)據(jù)列構(gòu)成。每個(gè)數(shù)據(jù)列都有它的特定類型,該類型決定了MySQL如何看待該列數(shù)據(jù),我們可以把整型數(shù)值存放到字符類型的列中,MySQL則會(huì)把它看成字符串來(lái)處理。MySQL中的列類型有三種:數(shù)值類、字符串類和日期/時(shí)間類。從大類來(lái)看列類型和數(shù)值類型一樣,都是只有三種。但每種列類型都還可細(xì)分。下面對(duì)各種列類型進(jìn)行詳細(xì)介紹。數(shù)值類的數(shù)據(jù)列類型數(shù)值型的列類型包括整型和浮點(diǎn)型兩大類。TINYINT:1字節(jié)?非常小的正整數(shù),帶符號(hào):-128~127,不帶符號(hào):0~255?SMALLINT:2字節(jié)?小整數(shù)
2、,帶符號(hào):-32768~32767,不帶符號(hào):0~65535?MEDIUMINT:3字節(jié)?中等大小的整數(shù),帶符號(hào):-8388608~8388607,不帶符號(hào):0~16777215?INT:4字節(jié)?標(biāo)準(zhǔn)整數(shù),帶符號(hào):-2147483648~2147483647,不帶符號(hào):0~4294967295?BIGINT:8字節(jié)?大整數(shù),帶符號(hào):-9223372036854775808~9233372036854775807,不帶符號(hào):0~18446744073709551615?FLOAT:4字節(jié)?單精度浮點(diǎn)數(shù),最小非零值:+-1.175494351E-38,最大非零值:+-3.
3、402823466E+38?DOUBLE:8字節(jié)?雙精度浮點(diǎn)數(shù),最小非零值:+-2.2250738585072014E-308,最大非零值:+-1.7976931348623157E+308?DECIMAL:M+2字節(jié)?以字符串形式表示的浮點(diǎn)數(shù),它的取值范圍可變,由M和D的值決定。?整型數(shù)據(jù)列類型MySQL有五種整型數(shù)據(jù)列類型,即TINYINT,SMALLINT,MEDIUMINT,INT和BIGINT。它們之間的區(qū)別是取值范圍不同,存儲(chǔ)空間也各不相同。在整型數(shù)據(jù)列后加上UNSIGNED屬性可以禁止負(fù)數(shù),取值從0開(kāi)始。聲明整型數(shù)據(jù)列時(shí),我們可以為它指定個(gè)顯示寬度M(1
4、~255),如INT(5),指定顯示寬度為5個(gè)字符,如果沒(méi)有給它指定顯示寬度,MySQL會(huì)為它指定一個(gè)默認(rèn)值。顯示寬度只用于顯示,并不能限制取值范圍和占用空間,如:INT(3)會(huì)占用4個(gè)字節(jié)的存儲(chǔ)空間,并且允許的最大值也不會(huì)是999,而是INT整型所允許的最大值。浮點(diǎn)型數(shù)據(jù)列類型MySQL有三種浮點(diǎn)型數(shù)據(jù)列類型,分別是:FLOAT,DOUBLE和DECIMAL。浮點(diǎn)類數(shù)據(jù)類型有一個(gè)最大可表示值和一個(gè)最小非零可表示值,最小非零可表示值決定了該類型的精確度。MySQL?4.0.2版之后,F(xiàn)LOAT和DOUBLE都可以指定UNSIGNED屬性。當(dāng)指定該屬性時(shí),取值范圍不平移
5、到正數(shù)區(qū)間,而只是簡(jiǎn)單地把浮點(diǎn)類型的負(fù)數(shù)部份去掉。浮點(diǎn)類型也有M(1~255)和D(1~30,且不能大于M-2)。分別表示顯示寬度和小數(shù)位數(shù)。M和D在FLOAT和DOUBLE中是可選的,默認(rèn),當(dāng)MySQL版本大于3.23.6時(shí),F(xiàn)LOAT和DOUBLE類型將被保存為硬件所支持的最大精度。DECIMAL的M和D值在MySQL3.23.6后可選,默認(rèn)D值為0,M值為10。?如何選擇數(shù)值類數(shù)據(jù)列類型?為了節(jié)省存儲(chǔ)空間和提高數(shù)據(jù)庫(kù)處理效率,我們應(yīng)根據(jù)應(yīng)用數(shù)據(jù)的取值范圍來(lái)選擇一個(gè)最適合的數(shù)據(jù)列類型。如果把一個(gè)超出數(shù)據(jù)列取值范圍的數(shù)存入該列,則MySQL就會(huì)截短該值,如:我們把9
6、9999存入SMALLINT(3)數(shù)據(jù)列里,因?yàn)镾MALLINT(3)的取值范圍是-32768~32767,所以就會(huì)被截短成32767存儲(chǔ)。顯示寬度3不會(huì)影響數(shù)值的存儲(chǔ)。只影響顯示。對(duì)于浮點(diǎn)數(shù)據(jù)列,存入的數(shù)值會(huì)被該列定義的小數(shù)位進(jìn)行四舍五入。如把一個(gè)1.234存入FLOAT(6.1)數(shù)據(jù)列中,結(jié)果是1.2。DECIMAL與FLOAT和DOUBLE的區(qū)別是:DECIMAL類型的值是以字符串的形式被儲(chǔ)存起來(lái)的,它的小數(shù)位數(shù)是固定的。它的優(yōu)點(diǎn)是,不會(huì)象FLOAT和DOUBLE類型數(shù)據(jù)列那樣進(jìn)行四舍五入而產(chǎn)生誤差,所以很適合用于財(cái)務(wù)計(jì)算;而它的缺點(diǎn)是:由于它的存儲(chǔ)格式不同,C
7、PU不能對(duì)它進(jìn)行直接運(yùn)算,從而影響運(yùn)算效率。DECIMAL(M,D)總共要占用M+2個(gè)字節(jié)。數(shù)值類數(shù)據(jù)列的屬性ZEROFILL屬性適用于所有數(shù)值類數(shù)據(jù)列類型,作用是,如果數(shù)值的寬度小于定義的顯示寬度,則在數(shù)值前填充0。UNSIGNED屬性不允許數(shù)據(jù)列出現(xiàn)負(fù)數(shù)。AUTO_INCREMENT屬性可生成獨(dú)一無(wú)二的數(shù)字序列。只對(duì)整數(shù)類的數(shù)據(jù)列有效。NULL和NOT?NULL屬性設(shè)置數(shù)據(jù)列是否可為空。DEFAULT屬性可為數(shù)據(jù)列指定默認(rèn)值。//////////////////////////////////////////////////////字符串類數(shù)據(jù)列