SQL的數據類型決定了一個字段的內容在數據庫中會被如何處理
存儲和顯示
SQL
定義了標准的數據類型
目的是給數據庫制造商建立自己的數據類型提供藍圖
在前面的文章中
我們介紹了一些常用的數據類型
這些數據類型分為四大類
串行
數值
日期時間
區間型
本文將向你概述這些數據類型在數據庫中是如何使用的
然後著重解釋串行數據類型
這些信息可以作為有用的參考
或者作為關於某個數據庫制造商具體產品中數據類型的背景知識
使用數據類型
當你在數據庫中創建了一個表格
你就定義了每列的名字以及要輸入到這些列中的內容的數據類型
從先前的文章中借用一個例子
CREATE TABLE Products
(prod_id INT(
)AUTO_INCREMENT
prod_color VARCHAR(
)
prod_descr VARCHAR(
)
prod_size DECIMAL(
)
UNIQUE (`prod_id`));
在以上的查詢中
定義行prod_color VARCHAR(
)發出指令要創建一個列
名字是prod_color
數據類型是VARCHAR
長度為
你的數據庫使用和每個類型相關的描述符來區別數據類型
例如
VARCHAR數據類型的描述符所含的信息將它區別為串行數據型
它包含所有的串字符
其長度是可變的
數據庫裡列的定義還包含了其他信息
例如對應於數據類型的特定長度
如前所述
每個數據庫制造商都希望在SQL
定義的標准上建立自己的數據類型
這樣每個數據庫在定義數據類型時都能夠設定自己所需要的最大容量限制和其他屬性
許多數據庫使用的數據類型名字和這裡列出來的一樣
盡管每種的實現方法都有微小的差別
要確定特定數據類型使用方法的細節最好的方法還是查閱數據庫制造商的文檔
已經說過了
希望對標准字符串數據類型有更多的了解就往下看
串
有兩種主要的串行數據類型
字符和位
串行使用數據庫裡由SQL_TEXT所定義的字符
SQL_
標准同時還提供了NATIONAL CHARACTER(國家字符集)和NATIONAL CHARACTER VARYING(國家字符集變體)
這兩者都能使用可定義字符集
後者的處理方法和CHARACTER以及CHARACTER VARYING類型一樣
CHARACTER | CHAR
使用方法
CHARACTER(clength) | CHAR(clength)
CHARACTER和CHAR這兩個關鍵字是相同的
CHARACTER類型一個突出的特點是它們能夠包含
這個字符
CHARACTER 類型包含了固定長度的串字符(來自SQL_TEXT的語言集)clength
字符在值的長度小於clength時起填充作用這表示CHARACTER字段的長度是固定的
你可以把CHARACTER的數據類型字段和相同類型的其他允許不同長度的字段比較或者和CHARACTER VARYING 數據類型比較
有些數據庫允許和數值數據類型比較
CHARACTER VARYING | CHAR VARYING | VARCHAR
使用方法CHARACTER VARYING(maxlength) | CHAR VARYING(maxlength) | VARCHAR(maxlength)
CHARACTER VARYINGCHAR VARYING和VARCHAR這幾個關鍵字是相同的
這些類型能容納最大長度的字符串maxlength
數據庫把字段的長度作為值的實際長度
你可以把這些數據類型的字段和相同類型的其他允許不同最大長度的字段比較
BIT
使用方法BIT(blength)
這種類型包含了帶有長度的位字符(和)blength例如如果我們使用BIT()樣本值將為
有的數據庫會在串的開頭插入空位其的則會填充它們以符合固定長度的要求
位字符是串不是整數
你可以把BIT數據類型的字段與相同類型的允許不同長度的其它字段比較或者和BIT VARYING數據類型比較
有些數據庫允許BITS和CHARACTER或者INTEGER類型比較
BIT VARYING
使用方法 BIT VARYING(maxlength)
這種類型包含了最大長度的位字符maxlength
所記錄的長度被設為值的實際長度
數據庫允許和其的BIT VARYING數據字段比較或者和BIT的數據字段比較
對我們的SQL系列有了一些了解了嗎?
請把你的評論問題或者回應發到下面的討論欄或者如果你有關於SQL基礎系列的論題可以發到我們編輯的信箱
串理論
數據庫生產商通過建立這些基礎的數據類型來創建你實際要實現的數據類型對於字符串這就可能包括相同名字的(不同)類型例如CHAR或BIT或者擴展到包括TEXTSMALL TEXT以及包含字符串的其他數據類型
數據從一個數據庫遷移到另一個數據庫時這種設計上的彈性產生了一個必須克服的障礙在一個數據庫裡你可能會有一個叫做CHAR的類型這個類型所允許的最大容量大於你要遷移到的數據庫的最大容量而且(SQL)標准中沒有明確定義的類型可能會變化較大這樣的話只用遵從慣例來簡化遷移
在ZDNet China最近的文章《BLOB移植的替換方案》中討論了存在數據類型移植問題時保護數據的一個可能的解決方案SQL標准沒要包括存儲二進制數據的指標這造成了不同數據庫制造商產品間的不兼容軟件開發者必須找到提到方案列清除這些障礙
在這個系列的下一篇文章中我們會看看SQL的數字數據類型每個有什麼特點以及對要實現這些類型的數據庫的要求
From:http://tw.wingwit.com/Article/program/SQLServer/201311/22151.html