資料類型

在建立資料表的過程中,我們需要對新建立的資料表定義欄位結構。

每個欄位都必須給它屬性,例如 文字、數字、日期 這些最常見。

我們前幾天有建立一張 animals 資料表,sql 語法如下

CREATE TABLE animals (
    id bigserial,
    name varchar(255),
    created_at timestamp,
    updated_at timestamp
);
  • bigserial 遞增型的八位元整數
  • varchar 自動適應的字串最大255字元
  • timestamp 日期與時間

之前有說明過,但還有很多資料類型!

文字

資料類型說明
char(n)標準SQL的類型之一,假設 char(10) 如果你只存入5個字,其他會以空白補滿!固定長度10個字元,目前這方式比較少見了!但還是有一些格式的內容可以這樣使用
varchar(n)標準SQL的類型之一,長度不固定,假設 varchar(20) 表示最大可以存入20個字元,目前比較常見的文字資料類型,可以節省很多儲存空間。
text非標準SQL的類型,但其他資料庫(MySQL)也有這樣的作法,長度可以任意變化,看PostgreSQL官方文件表示字元長度可以達到 1 gigabyte

數字

整數

資料類型儲存空間範圍
smallint2bytes-32768 ~ +32767
integer4bytes-2147483648 ~ +2147483647
bigint8bytes-9223372036854775808 ~ +9223372036854775807

以上三種看你的資料範圍會落在哪裡,儲存空間越大自然也越佔空間,員工編號就可以使用integer就好!我想一間公司應該不會有21億個員工。

如果範圍小於三萬 smallint 就是一個明智的選擇。

自動遞增的整數

如上 animals 資料表的 id 就是使用 bigserial 自動遞增的欄位

資料類型儲存空間範圍
smallserial2bytes1 ~ 32767
serial4bytes1 ~ 2147483647
bigserial8bytes1 ~ 9223372036854775807

小數點

小數點分為定點數以及浮點數,例如 123.456 這串數字的 「.」 的位置,會不會變動區分。

如果欄位設定總共5個數字(包含小數點後的數字),小數點後2位,這就是定點數 100.00 、 123.45

資料類型儲存空間儲存類型範圍
numeric, decimal可變定點數最多小數點前131072位數,小數點後16383位數
real4bytes浮點數6位數精度
double precision8bytes浮點數15位數精度

日期時間

資料類型儲存空間說明範圍
timestamp8bytes日期與時間史前4713年到西元294276年
date4bytes日期史前4713年到西元5874897年
time8bytes時間00:00:00 到 24:00:00
interval16bytes時間區隔+/- 178,000,000年

其他

類型
布林true/false
地理點、線、圓圈、二維物件
IP/MACIP、MAC位址
UUID不重複的編號
JSON、XML儲存這些結構化格式的資訊

發佈留言