資料型態的種類
- 字元字串 :Character String
- 二元資料 :Binary large object
- 整數與十進制數字:Exact numeric
- 浮點數 :Approximate numeric
- 布林數值 :Boolean
- 日期與時間值 :Datetime
- 日期與時間間隔 :Interval
字元字串型態
- CHARACTER (char)
固定數目的字元 , length多少就只能儲存多少個字元 , 儲存的長度少於length時 ,
DBMS會在字串後加上空白字元以湊成length的數目
- CHARACTER VARYING (varchar)
代表可變量的字元 , 與 char 不同的是 , 儲存的長度少於length時 , DBMS不會在字串後加上空白字。
- NATIONAL CHARACTER (nchar)
標準多字元或Unicode字元 , 其餘與 char 相同
- NATIONAL CHARACTER VARYING (nvarchar)
標準多字元或Unicode字元 , 其餘與 varchar 相同
- CLOB
字元大型物件 , 用來持有大量文字的欄位 , 不能作為索引鍵或索引
- NCLOB
國際字元大型物件
- ACCESS的字串型態:text , memo
- SQL Server的字串型態:char , varchar , nchar , nvarchar , text ,
ntext
- Tips
- 兩個連續單引號表示字串中的一個單引號字元--->don''t 表示 don't
- 字串的長度是介於 0 到 length間的數值 , 不包含 ''(空字串或長度為0的字串)
- DBMS對固定字串的排序比較快 , 短欄位要比長欄位快
二元大型物件 (BLOB)
- ACCESS的二元大型物件:ole object
- SQL Server的二元大型物件:binary , varbinary , image
- Tips
- 主要是儲存大量的多媒體資料 , 如圖片 , 音樂 , 影片
- 無法做索引鍵或索引 , 它只支援 = 或 <>
- DBMS並不嘗試去解譯BLOB ; 它們只給應用程式使用
精確數字型態
- 可以是負數、0、或正數
- 它是整數或小數
整數:沒有小數點的數字 -42 , 0 , 76555
小數:-22.06 , 0.0 , 0.0013
- 具有固定的精確度及精密度
精確度:有意義數字的數目,對小數而言,它是小數點兩旁數字的數目總和
精密度:小數點右邊數字的數目總和
- NUMERIC
- DECIMAL
- INTEGER ( int )
整數,儲存的最大最小值視DBMS而定
- SMALLINT
整數,儲存的最大最小值視DBMS而定 , 會比Integer還小
- BIGINT
整數,儲存的最大最小值視DBMS而定 , 會比Integer還大
- Access的數字資料型態:byte, decimal, integer, long integer
- SQL Server的數字資料型態:bigint , int , smallint , tinyint , decimal , numeric
- Tips
- 不要將數字置於引號中 ,如果數字不需要做數學運算 , 便將它以字串方式儲存 , 以避免資料遺失的情況。
如電話號碼。
- 整數計算最快
近似數字型態
- 可以是負數,0,或正數
- 它是浮點數(實數)的近似值
- 一般用來表示在技術、科學、統計與金融計算中極大或極小的數量
- 以科學記號的方式表示
- 具有固定的精確度但沒有明確的精密度
- FLOAT:
代表浮點數
- REAL:單精確度
- DOUBLE PRECISION:
- Access的近似數字資料型態:single, double
- SQL Server的近似數字資料型態:float, real
布林型態
- 有效值為真值(True)、假值(False)、與未知數值(Unknown)
- 事實上,空值等於未知數值 , 通常被用來代替未知數值 ( 大多數DBMS布林型態不接受Unknown值)
- Access的布林資料型態:yes/no
- SQL Server的布林資料型態:bit
日期時間型態
- 數值是參考UTC或GMT
- 時間數值是以24小時為基礎 13:00
- 連字號 - 區分日期欄位 , 冒號 : 區分時間欄位。
日期與時間中以空白字元做分隔
- DATE
日期 2006-03-17
- TIME
代表一天中的時間 22:06:57
- TIMESTAMP
代表以空白字元分隔的DATE TIME組合 2006-03-17 22:06:57
- TIME WITH TIME ZONE
- TIMESTAMP WITH TIME ZONE
- Access日期時間型態:date/time
- SQL Server日期時間型態:datetime, smalldatetime, rowversion
- 只有Access是以 #將日期時間框住 , 其他DBMS都是使用引號
差距型態
其他資料型態
空值
- 關鍵字NULL代表空值
- 代表可能是未知、稍後決定或不適用的數值
- 空值與 0 、空白字串或空字串是不同的
- 空值可以出現在任何型態的欄位 , 只要它們允許NULL
- 利用IS NULL偵測空值
- 空值彼此間不具有相等或不相等的關係
- 雖然空值彼此間不具有相等關係 , 但是Distinct對於欄位中的所有空值都視為相同
- 欄位有空值排序時, 視DBMS決定其是否大於或小於其他數值
- 所有空值相關的算術或操作的結果都是空值
- sum() , avg() , Max()都會忽略空值。count(*)是一個運算式
- 如果Group by子句中的群組欄位含有空值 , 所有空值都會放置到同一群組中
- 空值會影響join執行的結果 , 且在子查詢中會造成問題
- 空值表示欠缺數值
|