iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 7
0
AI & Data

後端前進PostgreSQL系列 第 7

資料類型

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

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

我們前幾天有建立一張 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

數字

整數

資料類型 儲存空間 範圍
smallint 2bytes -32768 ~ +32767
integer 4bytes -2147483648 ~ +2147483647
bigint 8bytes -9223372036854775808 ~ +9223372036854775807

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

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

自動遞增的整數

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

資料類型 儲存空間 範圍
smallserial 2bytes 1 ~ 32767
serial 4bytes 1 ~ 2147483647
bigserial 8bytes 1 ~ 9223372036854775807

小數點

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

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

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

日期時間

資料類型 儲存空間 說明 範圍
timestamp 8bytes 日期與時間 史前4713年到西元294276年
date 4bytes 日期 史前4713年到西元5874897年
time 8bytes 時間 00:00:00 到 24:00:00
interval 16bytes 時間區隔 +/- 178,000,000年

其他

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

上一篇
插入資料、SELECT資料
下一篇
資料類型-注意事項
系列文
後端前進PostgreSQL30

尚未有邦友留言

立即登入留言