哈嘍,大家好,我是木頭左!
一、引言
在當今這個資料驅動的時代,資料庫已經成為了企業和個人不可或缺的工具。而在眾多資料庫產品中,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 -- 數量,整數型別,不能為空
);
我是木頭左,感謝各位童鞋的點贊、收藏,我們下期更精彩!