PostgreSQL:所有支援的資料型別及建表語句例項

木头左發表於2024-06-03

哈嘍,大家好,我是木頭左!

一、引言

在當今這個資料驅動的時代,資料庫已經成為了企業和個人不可或缺的工具。而在眾多資料庫產品中,PostgreSQL以其強大的功能和高度的可擴充套件性,受到了越來越多開發者的青睞。那麼,PostgreSQL支援哪些資料型別呢?本文將為大家詳細解析,並透過建表語句舉例說明。讓一起揭開PostgreSQL神秘的面紗吧!

二、PostgreSQL支援的資料型別

1. 數值型資料型別

(1) 整型資料型別
(2) 浮點型資料型別

2. 字元型資料型別

  • char:固定長度的字串,長度範圍為1到10個字元
  • varchar:可變長度的字串,長度範圍為1到1048576個字元
  • text:最長可達到1GB的文字資料

3. 日期和時間型資料型別

  • date:日期型別,格式為’YYYY-MM-DD’
  • time:時間型別,格式為’HH:MI:SS’或’HH:MM:SS AM’/‘PM’
  • timestamp:時間戳型別,表示從’1970-01-01 00:00:00+00’到指定時間的秒數(精確到納秒)
  • interval:間隔型別,表示兩個日期或時間之間的時間間隔(以天、小時、分鐘、秒為單位)

4. 布林型資料型別

  • boolean:布林型別,只有兩個值:true和false

5. 複合資料型別

PostgreSQL支援複合資料型別,可以將多個資料型別組合在一起。例如,陣列(array)、記錄(record)、結構體(struct)等。這些複合資料型別的定義和使用方式較為複雜,需要根據實際需求進行選擇和使用。

三、建表語句例項

1. 建立一個使用者表(user)

CREATE TABLE user (
    id SERIAL PRIMARY KEY, -- 主鍵ID,自增序列
    name VARCHAR(50) NOT NULL, -- 使用者名稱,長度為50個字元,不能為空
    email VARCHAR(100) NOT NULL, -- 郵箱,長度為100個字元,不能為空
    age INTEGER, -- 年齡,整數型別
    created_at TIMESTAMP NOT NULL DEFAULT current_timestamp, -- 建立時間,預設為當前時間戳
    updated_at TIMESTAMP NOT NULL DEFAULT current_timestamp ON UPDATE current_timestamp -- 更新時間,預設為當前時間戳,自動更新為當前時間戳
);

2. 建立一個訂單表(order)

CREATE TABLE order (
    id SERIAL PRIMARY KEY, -- 主鍵ID,自增序列
    user_id INTEGER REFERENCES user(id), -- 使用者ID,外來鍵關聯使用者表的id欄位
    product_name VARCHAR(100) NOT NULL, -- 產品名稱,長度為100個字元,不能為空
    quantity INTEGER NOT NULL, -- 數量,整數型別,不能為空
    total_price DECIMAL(10, 2) NOT NULL -- 總價,十進位制數型別,保留兩位小數,不能為空
);

3. 建立一個商品表(product)和訂單詳情表(order_detail)

CREATE TABLE product (
    id SERIAL PRIMARY KEY, -- 主鍵ID,自增序列
    name VARCHAR(100) NOT NULL, -- 商品名稱,長度為100個字元,不能為空
    price DECIMAL(10, 2) NOT NULL -- 價格,十進位制數型別,保留兩位小數,不能為空
);

CREATE TABLE order_detail (
    id SERIAL PRIMARY KEY, -- 主鍵ID,自增序列
    order_id INTEGER REFERENCES order(id), -- 訂單ID,外來鍵關聯訂單表的id欄位
    product_id INTEGER REFERENCES product(id), -- 商品ID,外來鍵關聯商品表的id欄位
    quantity INTEGER NOT NULL -- 數量,整數型別,不能為空
);

我是木頭左,感謝各位童鞋的點贊、收藏,我們下期更精彩!

相關文章