SQL中的五種數(shù)據(jù)類(lèi)型

2010-08-28 10:47:45來(lái)源:西部e網(wǎng)作者:

  簡(jiǎn)要描述一下SQL中的五種數(shù)據(jù)類(lèi)型:字符型,文本型,數(shù)值型,邏輯型和日期型

  字符型

  VARCHAR VS CHAR

  VARCHAR型和CHAR型數(shù)據(jù)的這個(gè)差別是細(xì)微的,但是非常重要。他們都是用來(lái)儲(chǔ)存字符串長(zhǎng)度小于255的字符。

  假如你向一個(gè)長(zhǎng)度為四十個(gè)字符的VARCHAR型字段中輸入數(shù)據(jù)Bill Gates。當(dāng)你以后從這個(gè)字段中取出此數(shù)據(jù)時(shí),你取出的數(shù)據(jù)其長(zhǎng)度為十個(gè)字符——字符串Bill Gates的長(zhǎng)度。 現(xiàn)在假如你把字符串輸入一個(gè)長(zhǎng)度為四十個(gè)字符的CHAR型字段中,那么當(dāng)你取出數(shù)據(jù)時(shí),所取出的數(shù)據(jù)長(zhǎng)度將是四十個(gè)字符。字符串的后面會(huì)被附加多余的空格。

  當(dāng)你建立自己的站點(diǎn)時(shí),你會(huì)發(fā)現(xiàn)使用VARCHAR型字段要比CHAR型字段方便的多。使用VARCHAR型字段時(shí),你不需要為剪掉你數(shù)據(jù)中多余的空格而操心。

  VARCHAR型字段的另一個(gè)突出的好處是它可以比CHAR型字段占用更少的內(nèi)存和硬盤(pán)空間。當(dāng)你的數(shù)據(jù)庫(kù)很大時(shí),這種內(nèi)存和磁盤(pán)空間的節(jié)省會(huì)變得非常重要

  文本型

  TEXT

  使用文本型數(shù)據(jù),你可以存放超過(guò)二十億個(gè)字符的字符串。當(dāng)你需要存儲(chǔ)大串的字符時(shí),應(yīng)該使用文本型數(shù)據(jù)。

  注意文本型數(shù)據(jù)沒(méi)有長(zhǎng)度,而上一節(jié)中所講的字符型數(shù)據(jù)是有長(zhǎng)度的。一個(gè)文本型字段中的數(shù)據(jù)通常要么為空,要么很大。

  當(dāng)你從HTML form的多行文本編輯框(TEXTAREA)中收集數(shù)據(jù)時(shí),你應(yīng)該把收集的信息存儲(chǔ)于文本型字段中。但是,無(wú)論何時(shí),只要你能避免使用文本型字段,你就應(yīng)該不適用它。文本型字段既大且慢,濫用文本型字段會(huì)使服務(wù)器速度變慢。文本型字段還會(huì)吃掉大量的磁盤(pán)空間。

  一旦你向文本型字段中輸入了任何數(shù)據(jù)(甚至是空值),就會(huì)有2K的空間被自動(dòng)分配給該數(shù)據(jù)。除非刪除該記錄,否則你無(wú)法收回這部分存儲(chǔ)空間。

  數(shù)值型

  SQL支持許多種不同的數(shù)值型數(shù)據(jù)。你可以存儲(chǔ)整數(shù) INT 、小數(shù) NUMERIC、和錢(qián)數(shù) MONEY。

  INT VS SMALLINT VS TINYINT

  他們的區(qū)別只是字符長(zhǎng)度:

  INT型數(shù)據(jù)的表數(shù)范圍是從-2,147,483,647到2,147,483,647的整數(shù)

  SMALLINT 型數(shù)據(jù)可以存儲(chǔ)從-32768到32768的整數(shù)

  TINYINT 型的字段只能存儲(chǔ)從0到255的整數(shù),不能用來(lái)儲(chǔ)存負(fù)數(shù)

  通常,為了節(jié)省空間,應(yīng)該盡可能的使用最小的整型數(shù)據(jù)。一個(gè)TINYINT型數(shù)據(jù)只占用一個(gè)字節(jié);一個(gè)INT型數(shù)據(jù)占用四個(gè)字節(jié)。這看起來(lái)似乎差別不大,但是在比較大的表中,字節(jié)數(shù)的增長(zhǎng)是很快的。另一方面,一旦你已經(jīng)創(chuàng)建了一個(gè)字段,要修改它是很困難的。因此,為安全起見(jiàn),你應(yīng)該預(yù)測(cè)以下,一個(gè)字段所需要存儲(chǔ)的數(shù)值最大有可能是多大,然后選擇適當(dāng)?shù)臄?shù)據(jù)類(lèi)型。

  MUNERIC

  為了能對(duì)字段所存放的數(shù)據(jù)有更多的控制,你可以使用NUMERIC型數(shù)據(jù)來(lái)同時(shí)表示一個(gè)數(shù)的整數(shù)部分和小數(shù)部分。NUMERIC型數(shù)據(jù)使你能表示非常大的數(shù)——比INT型數(shù)據(jù)要大得多。一個(gè)NUMERIC型字段可以存儲(chǔ)從-1038到1038范圍內(nèi)的數(shù)。NUMERIC型數(shù)據(jù)還使你能表示有小數(shù)部分的數(shù)。例如,你可以在NUMERIC型字段中存儲(chǔ)小數(shù)3.14。

  當(dāng)定義一個(gè)NUMERIC型字段時(shí),你需要同時(shí)指定整數(shù)部分的大小和小數(shù)部分的大小。如:MUNERIC(23,0)

  一個(gè) NUMERIC型數(shù)據(jù)的整數(shù)部分最大只能有28位,小數(shù)部分的位數(shù)必須小于或等于整數(shù)部分的位數(shù),小數(shù)部分可以是零。

  MONEY VS SMALLMONEY

  你可以使用 INT型或NUMERIC型數(shù)據(jù)來(lái)存儲(chǔ)錢(qián)數(shù)。但是,專(zhuān)門(mén)有另外兩種數(shù)據(jù)類(lèi)型用于此目的。如果你希望你的網(wǎng)點(diǎn)能掙很多錢(qián),你可以使用MONEY型數(shù)據(jù)。如果你的野心不大,你可以使用SMALLMONEY型數(shù)據(jù)。MONEY型數(shù)據(jù)可以存儲(chǔ)從-922,337,203,685,477.5808到922,337,203,685,477.5807的錢(qián)數(shù)。如果你需要存儲(chǔ)比這還大的金額,你可以使用NUMERIC型數(shù)據(jù)。

  SMALLMONEY型數(shù)據(jù)只能存儲(chǔ)從-214,748.3648到214,748.3647 的錢(qián)數(shù)。同樣,如果可以的話,你應(yīng)該用SMALLMONEY型來(lái)代替MONEY型數(shù)據(jù),以節(jié)省空間。

  邏輯型

  BIT

  如果你使用復(fù)選框( CHECKBOX)從網(wǎng)頁(yè)中搜集信息,你可以把此信息存儲(chǔ)在BIT型字段中。BIT型字段只能取兩個(gè)值:0或1。

  當(dāng)心,在你創(chuàng)建好一個(gè)表之后,你不能向表中添加 BIT型字段。如果你打算在一個(gè)表中包含BIT型字段,你必須在創(chuàng)建表時(shí)完成。

  日期型

  DATETIME VS SMALLDATETIME

  一個(gè) DATETIME型的字段可以存儲(chǔ)的日期范圍是從1753年1月1日第一毫秒到9999年12月31日最后一毫秒。

  如果你不需要覆蓋這么大范圍的日期和時(shí)間,你可以使用SMALLDATETIME型數(shù)據(jù)。它與DATETIME型數(shù)據(jù)同樣使用,只不過(guò)它能表示的日期和時(shí)間范圍比DATETIME型數(shù)據(jù)小,而且不如DATETIME型數(shù)據(jù)精確。一個(gè)SMALLDATETIME型的字段能夠存儲(chǔ)從1900年1月1日到2079年6月6日的日期,它只能精確到秒。

  DATETIME型字段在你輸入日期和時(shí)間之前并不包含實(shí)際的數(shù)據(jù),認(rèn)識(shí)這一點(diǎn)是重要的。

關(guān)鍵詞:SQL