明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

本文教你SQL:6串行數(shù)據(jù)分類

[摘要]SQL的數(shù)據(jù)類型決定了一個字段的內(nèi)容在數(shù)據(jù)庫中會被如何處理、存儲和顯示。SQL92定義了標準的數(shù)據(jù)類型,目的是給數(shù)據(jù)庫制造商建立自己的數(shù)據(jù)類型提供藍圖。在前面的文章中,我們介紹了一些常用的數(shù)據(jù)類型,...

   SQL的數(shù)據(jù)類型決定了一個字段的內(nèi)容在數(shù)據(jù)庫中會被如何處理、存儲和顯示。SQL92定義了標準的數(shù)據(jù)類型,目的是給數(shù)據(jù)庫制造商建立自己的數(shù)據(jù)類型提供藍圖。在前面的文章中,我們介紹了一些常用的數(shù)據(jù)類型,這些數(shù)據(jù)類型分為四大類:
   串行
   數(shù)值
   日期時間
   區(qū)間型
 
   本文將向你概述這些數(shù)據(jù)類型在數(shù)據(jù)庫中是如何使用的,然后著重解釋串行數(shù)據(jù)類型。這些信息可以作為有用的參考,或者作為關(guān)于某個數(shù)據(jù)庫制造商具體產(chǎn)品中數(shù)據(jù)類型的背景知識。

   使用數(shù)據(jù)類型
   當你在數(shù)據(jù)庫中創(chuàng)建了一個表格,你就定義了每列的名字以及要輸入到這些列中的內(nèi)容的數(shù)據(jù)類型。從先前的文章中借用一個例子:

CREATE TABLE Products
(prod_id INT(16)AUTO_INCREMENT, prod_color VARCHAR(20),
prod_descr VARCHAR(255), prod_size DECIMAL(8,2),
UNIQUE (`prod_id`));

   在以上的查詢中,定義行prod_color VARCHAR(20)發(fā)出指令要創(chuàng)建一個列,名字是prod_color,數(shù)據(jù)類型是VARCHAR,長度為20。

   你的數(shù)據(jù)庫使用和每個類型相關(guān)的描述符來區(qū)別數(shù)據(jù)類型。例如,VARCHAR數(shù)據(jù)類型的描述符所含的信息將它區(qū)別為串行數(shù)據(jù)型,它包含所有的串字符,其長度是可變的。數(shù)據(jù)庫里列的定義還包含了其他信息,例如對應(yīng)于數(shù)據(jù)類型的特定長度。

   如前所述,每個數(shù)據(jù)庫制造商都希望在SQL92定義的標準上建立自己的數(shù)據(jù)類型。這樣每個數(shù)據(jù)庫在定義數(shù)據(jù)類型時都能夠設(shè)定自己所需要的最大容量限制和其他屬性。許多數(shù)據(jù)庫使用的數(shù)據(jù)類型名字和這里列出來的一樣,盡管每種的實現(xiàn)方法都有微小的差別。要確定特定數(shù)據(jù)類型使用方法的細節(jié)最好的方法還是查閱數(shù)據(jù)庫制造商的文檔。

   已經(jīng)說過了,希望對標準字符串數(shù)據(jù)類型有更多的了解就往下看。

  串
 
   有兩種主要的串行數(shù)據(jù)類型:字符和位。串行使用數(shù)據(jù)庫里由SQL_TEXT所定義的字符。SQL_92標準同時還提供了NATIONAL CHARACTER(國家字符集)和NATIONAL CHARACTER VARYING(國家字符集變體),這兩者都能使用可定義字符集。后者的處理方法和CHARACTER以及CHARACTER VARYING類型一樣。

CHARACTER CHAR
   使用方法:CHARACTER(clength) CHAR(clength)

CHARACTER和CHAR這兩個關(guān)鍵字是相同的。
CHARACTER類型一個突出的特點是它們能夠包含<space(空白)>這個字符。
CHARACTER 類型包含了固定長度的串字符(來自SQL_TEXT的語言集),clength。
<space> 字符在值的長度小于clength時起填充作用。這表示CHARACTER字段的長度是固定的。
   你可以把CHARACTER的數(shù)據(jù)類型字段和相同類型的其他允許不同長度的字段比較,或者和CHARACTER VARYING 數(shù)據(jù)類型比較。
   有些數(shù)據(jù)庫允許和數(shù)值數(shù)據(jù)類型比較。
CHARACTER VARYING CHAR VARYING VARCHAR
   使用方法:CHARACTER VARYING(maxlength) CHAR VARYING(maxlength) VARCHAR(maxlength)

CHARACTER VARYING,CHAR VARYING,和VARCHAR這幾個關(guān)鍵字是相同的。
   這些類型能容納最大長度的字符串,maxlength。
   數(shù)據(jù)庫把字段的長度作為值的實際長度。
   IT

  使用方法:BIT(blength)

   這種類型包含了帶有長度的位字符(1和0),blength。例如,如果我們使用BIT(2),樣本值將為"01"。
   有的數(shù)據(jù)庫會在串的開頭插入空位,其的則會填充它們以符合固定長度的要求。
   位字符是串,不是整數(shù)。
   你可以把BIT數(shù)據(jù)類型的字段與相同類型的允許不同長度的其它字段比較,或者和BIT VARYING數(shù)據(jù)類型比較。
   有些數(shù)據(jù)庫允許BITS和CHARACTER或者INTEGER類型比較。
   BIT VARYING

   使用方法: BIT VARYING(maxlength)

   這種類型包含了最大長度的位字符,maxlength。
   所記錄的長度被設(shè)為值的實際長度。
   數(shù)據(jù)庫允許和其的BIT VARYING數(shù)據(jù)字段比較,或者和BIT的數(shù)據(jù)字段比較。
   對我們的SQL系列有了一些了解了嗎?

   請把你的評論、問題或者回應(yīng)發(fā)到下面的討論欄,或者如果你有關(guān)于SQL基礎(chǔ)系列的論題,可以發(fā)到我們編輯的信箱。

   串理論
   數(shù)據(jù)庫生產(chǎn)商通過建立這些基礎(chǔ)的數(shù)據(jù)類型來創(chuàng)建你實際要實現(xiàn)的數(shù)據(jù)類型。對于字符串,這就可能包括相同名字的(不同)類型,例如CHAR或BIT,或者擴展到包括TEXT,SMALL TEXT,以及包含字符串的其他數(shù)據(jù)類型。

   數(shù)據(jù)從一個數(shù)據(jù)庫遷移到另一個數(shù)據(jù)庫時,這種設(shè)計上的彈性產(chǎn)生了一個必須克服的障礙。在一個數(shù)據(jù)庫里,你可能會有一個叫做CHAR的類型,這個類型所允許的最大容量大于你要遷移到的數(shù)據(jù)庫的最大容量。而且,(SQL92)標準中沒有明確定義的類型可能會變化較大,這樣的話只用遵從慣例來簡化遷移。

   在ZDNet China最近的文章《BLOB移植的替換方案》中討論了存在數(shù)據(jù)類型移植問題時保護數(shù)據(jù)的一個可能的解決方案。SQL標準沒要包括存儲二進制數(shù)據(jù)的指標,這造成了不同數(shù)據(jù)庫制造商產(chǎn)品間的不兼容。軟件開發(fā)者必須找到提到方案列清除這些障礙。

   在這個系列的下一篇文章中,我們會看看SQL92的數(shù)字數(shù)據(jù)類型,每個有什么特點,以及對要實現(xiàn)這些類型的數(shù)據(jù)庫的要求。

關(guān)鍵詞標簽:類型,數(shù)據(jù),數(shù)據(jù)庫,CHA

學習教程快速掌握從入門到精通的SQL知識。