SQL 的資料型別 (SQL Data Types)
SQL 基本上有下列幾種資料型別,我們必需了解儲存各類型資料值要分別採用何種資料型別欄位以便進行資料庫設計。
數值:(11, 2.5492, -91)
字串:('學習SQL語言')
空值:(欄位為空)
布林:(true/false)
數值資料 (Numeric Data)
SQL 的數值型態有 integer, float, money等,使用數值資料有一個好處就是你能搭配內建的數值函數來做資料處理,例如
SUM() 函數即可直接獲得該數值欄位的總合。
字串(元)資料 (Character & Strings Data)
儲存字元或符號之資料型別。
日期/時間資料 (Date Data)
用來記錄日期/時間的資料型別,有 date, time, timestamp等。
布林值 (Boolean Data)
true/false, Yes/No, 1/0。
空值 (NULL Data)
空值,沒有資料存在於欄位。通常在建立資料表時,你可以設定欄位是否允許空值:
CREATE TABLE customer (
C_id INT PRIMARY KEY,
Name VARCHAR(10) NOT NULL,
Address VARCHAR(255) NULL,
Phone VARCHAR(10) NULL
);
NULL值和一個空字串''是不一樣的。例如,下列SQL敘述句:
INSERT INTO customer (phone) VALUES (NULL);
INSERT INTO customer (phone) VALUES ("");
其中第一個敘述句的意味著不知道電話號碼;而第二個則是意味著沒有電話。
在大多的資料庫中,你不能索引允許有NULL值的欄位。你必須聲明要索引的欄位為NOT NULL,此外,你也不能插入NULL到具有索引的欄位中。
另外值得注意的是,NULL這字面常量(Literal)在某些特殊情形下使用代表著不同含意:
若你將NULL插入資料表中的TIMESTAMP欄位,則代表目前的日期和時間。
若你將NULL插入一個AUTO_INCREMENT欄位,則代表目前順序中的下一個號碼。