SQL欄位類型

來源:互聯網
上載者:User
text和image 16位元組,不能改,存放的時候,把內容存放與硬碟,表裡記錄的是內容地址和內容大小。所以image和text也不能進行索引。欄位類型
不同的欄位類型用來存放不同類型的資料。建立和使用表時,更你應該理解五種常用的欄位類型:字元型,文本型,數值型,邏輯性和日期型。

字元型資料
字元型資料非常有用。當你需要儲存短的字串資訊時,你總是要用到字元型資料。例如,你可以把從HTML form的文字框中搜集到的資訊放在字元型欄位中。
要建立一個欄位用來存放可變長度的字串資訊,你可以使用運算式 VARCHAR。考慮你前面建立的表guestbook:
CREATE TABLE guestbook (visitor VARCHAR(40),comments TEXT,entrydate
DATETIME)
在這個例子中,欄位visitor的資料類型為VARCHAR。注意跟在資料類型後面的括弧中的數字。這個數字指定了這個欄位所允許存放的字串的最大長度。在這個例子中,欄位visitor能存放的字串最長為四十個字元。如果名字太長,字串會被截斷,只保留四十個字元。
VARCHAR類型可以儲存的字串最長為255個字元。要儲存更長的字串資料,可以使用文本型資料(下一節中講述)。
另一種字元型資料用來儲存固定長度的字元資料。下面是一個使用這種資料類型的例子:
CREATE TABLE guestbook (visitor CHAR(40),comments TEXT,entrydate
DATETIME)
在這個例子中,欄位visitor被用來儲存四十個字元的固定長度字串。運算式CHAR指定了這個欄位應該是固定長度的字串。
VARCHAR型和CHAR型資料的這個差別是細微的,但是非常重要。假如你向一個長度為四十個字元的VARCHAR型欄位中輸入資料Bill Gates。當你以後從這個欄位中取出此資料時,你取出的資料其長度為十個字元——字串Bill Gates的長度。
現在假如你把字串輸入一個長度為四十個字元的CHAR型欄位中,那麼當你取出資料時,所取出的資料長度將是四十個字元。字串的後面會被附加多餘的空格。
當你建立自己的網站時,你會發現使用VARCHAR型欄位要比CHAR型欄位方便的多。使用VARCHAR型欄位時,你不需要為剪掉你資料中多餘的空格而操心。
VARCHAR型欄位的另一個突出的好處是它可以比CHAR型欄位佔用更少的記憶體和硬碟空間。當你的資料庫很大時,這種記憶體和磁碟空間的節省會變得非常重要。

文本型資料
字元型資料限制了字串的長度不能超過255個字元。而使用文本型資料,你可以存放超過二十億個字元的字串。當你需要儲存大串的字元時,應該使用文本型資料。
這裡有一個使用文本型資料的例子:
CREATE TABLE guestbook (visitor VARCHAR(40),comments TEXT,entrydate
DATETIME)
在這個例子中,欄位comments被用來存放訪問者對你網站的意見。注意文本型資料沒有長度,而上一節中所講的字元型資料是有長度的。一個文本型欄位中的資料通常要麼為空白,要麼很大。
當你從HTML form的多行文本編輯框(TEXTAREA)中收集資料時,你應該把收集的資訊儲存於文本型欄位中。但是,無論何時,只要你能避免使用文本型欄位,你就應該不適用它。文本型欄位既大且慢,濫用文本型欄位會使伺服器速度變慢。文本型欄位還會吃掉大量的磁碟空間。
警告:
一旦你向文本型欄位中輸入了任何資料(甚至是空值),就會有2K的空間被自動分配給該資料。除非刪除該記錄,否則你無法收回這部分儲存空間。

數值型資料
SQL Sever支援許多種不同的數值型資料。你可以儲存整數、小數、和錢數。
通常,當你需要在表中的存放數字時,你要使用整型(INT)資料。INT型資料的表數範圍是從-2,147,483,647到2,147,483,647的整數。下面是一個如何使用INT型資料的例子:
CREATE TABLE visitlog (visitor VARCHAR(40),numvisits INT)
這個表可以用來記錄你網站被訪問的次數。只要沒有人訪問你的網站超過2,147,483,647次,nubvisits欄位就可以儲存訪問次數。
為了節省記憶體空間,你可以使用SMALLINT型資料。SMALLINT 型資料可以儲存從-32768到32768的整數。這種資料類型的使用方法與INT型完全相同。
最後,如果你實在需要節省空間的,你可以使用TINYINT型資料。同樣,這種類型的使用方法也與INT型相同,不同的是這種類型的欄位只能儲存從0到255的整數。TINYINT型欄位不能用來儲存負數。
通常,為了節省空間的,應該儘可能的使用最小的整型資料。一個TINYINT型資料只佔用一個位元組;一個INT型資料佔用四個位元組。這看起來似乎差別不大,但是在比較大的表中,位元組數的增長是很快的。另一方面,一旦你已經建立了一個欄位,要修改它是很困難的。因此,為安全起見,你應該預測以下,一個欄位所需要儲存的數值最大有可能是多大,然後選擇適當的資料類型。
為了能對欄位所存放的資料有更多的控制,你可以使用NUMERIC型資料來同時表示一個數的整數部分和小數部分。NUMERIC型資料使你能表示非常大的數——比INT型資料要大得多。一個NUMERIC型欄位可以儲存從-1038到1038範圍內的數。NUMERIC型資料還使你能表示有小數部分的數。例如,你可以在NUMERIC型欄位中儲存小數3.14。
當定義一個NUMERIC型欄位時,你需要同時指定整數部分的大小和小數部分的大小。這裡有一個使用這種資料類型的例子:
CREATE TABLE numeric_data (bignumber NUMERIC(28,0),
fraction NUMERIC (5,4) )
當這個語句執行時,將建立一個名為numeric_data的包含兩個欄位的表。欄位bignumber可以儲存直到28位的整數。欄位fraction可以儲存有五位整數部分和四位小數部分的小數。
一個NUMERIC型資料的整數部分最大隻能有28位,小數部分的位元必須小於或等於整數部分的位元,小數部分可以是零。
你可以使用INT型或NUMERIC型資料來儲存錢數。但是,專門有另外兩種資料類型用於此目的。如果你希望你的網點能掙很多錢,你可以使用MONEY型資料。如果你的野心不大,你可以使用SMALLMONEY型資料。MONEY型資料可以儲存從-922,337,203,685,477.5808到922,337,203,685,477.5807的錢數。如果你需要儲存比這還大的金額,你可以使用NUMERIC型資料。
SMALLMONEY型資料只能儲存從-214,748.3648到214,748.3647 的錢數。同樣,如果可以的話,你應該用SMALLMONEY型來代替MONEY型資料,以節省空間的。下面的例子顯示了如何使用這兩種表示錢的資料類型:
CREATE TABLE products (product VARCHAR(40),price MONEY,
Discount_price SMALLMONEY)
這個表可以用來儲存商品的折扣和普通售價。欄位price 的資料類型是MONEY,欄位discount_price的資料類型是SMALLMONEY。

儲存邏輯值
如果你使用複選框(CHECKBOX)從網頁中搜集資訊,你可以把此資訊儲存在BIT型欄位中。BIT型欄位只能取兩個值:0或1。這裡有一個如何使用這種欄位的例子:
CREATE TABLE opinion (visitor VARCHAR(40),good BIT)
這個表可以用來存放對你的網點進行民意調查所得的資訊。訪問者可以投票表示他們是否喜歡你的網點。如果他們投YES,就在BIT型欄位中存入1。反之,如果他們投NO,就在欄位中存入0(在下一章裡,你將學會如何計算投票)。
當心,在你建立好一個表之後,你不能向表中添加BIT型欄位。如果你打算在一個表中包含BIT型欄位,你必須在建立表時完成。

儲存日期和時間
當你建立一個網點時,你也許需要記錄在一段時間內的訪問者數量。為了能夠儲存日期和時間,你需要使用DATETIME型資料,如下例所示:
CREATE TABL visitorlog( visitor VARCHAR (40), arrivaltime DATETIME ,
departuretime DATETIME)
這個表可以用來記錄訪問者進入和離開你網點的時間和日期。一個DATETIME型的欄位可以儲存的日期範圍是從1753年1月1日第一毫秒到9999年12月31日最後一毫秒。
如果你不需要覆蓋這麼大範圍的日期和時間,你可以使用SMALLDATETIME型資料。它與DATETIME型資料同樣使用,只不過它能表示的日期和時間範圍比DATETIME型資料小,而且不如DATETIME型資料精確。一個SMALLDATETIME型的欄位能夠儲存從1900年1月1日到2079年6月6日的日期,它只能精確到秒。
DATETIME型欄位在你輸入日期和時間之前並不包含實際的資料,認識這一點是重要的。在下一章,你將學習怎樣使用大量的SQL函數來讀取和操作日期和時間(參見下面的“預設值”一節)。你也可以在VBScript和JScript 中使用日期和時間函數來向一個DATETIME型欄位中輸入日期和時間。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.