SQL 資料型態
資料型態的種類
  • 字元字串    :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執行的結果 , 且在子查詢中會造成問題
  • 空值表示欠缺數值