iT邦幫忙

2022 iThome 鐵人賽

DAY 6
1
自我挑戰組

三十天,PG與我系列 第 6

Postgres 基本SQL指令(1)

  • 分享至 

  • xImage
  •  

我們這次使用PostgreSQL自帶的psql命令列工具來做練習,可以參考之前的文章將它打開之後,使用超級使用者連上自己的資料庫方便操作。

建立資料庫

語法:
CREATE DATABASE ${資料庫名稱};
這樣輸入之後,PostgreSQL會複製系統內建的template1樣板來建立一個新的資料庫,當然我們也可以修改template1或是建立自己的樣板資料庫。

移除資料庫

語法:
DROP DATABASE ${資料庫名稱};

建立TABLE(表格)

語法:
(先連線到你想要在其中建立table的資料庫)
(在系統命令列執行'psql -U postgres -d ${資料庫名稱}'或是在psql已連線的情況下用\c ${資料庫名稱}來切換)
CREATE TABLE ${OPTIONS} mytable (
table_id integer PRIMARY KEY NOT NULL,
owner VARCHAR(20) NOT NULL,
.......
);
在外面輸入CREATE TABLE及table名稱,括號內以分隔逗號指定table的每個欄位之名稱,資料類型以及欄位限制,這些內容在下一篇文章會進一步說明。

PostgreSQL資料型態

文字:
CHAR(長度):固定長度字串
VARCHAR(長度):不超過特定長度的可變長度字串
TEXT:不限長度的文字內容
二進位:
BYTEA(n):長度為n個byte的二進位陣列,最長可以到255
整數類:
SMALLINT (-32768, +32768)
INTEGER (二十億)
BIGINT - (10的18次方左右)
浮點數:
REAL:10的38次方,精度可以到小數點後7位
DOUBLE PRECISION:10的308次方,精度可以到小數點後14位
NUMERIC(accuracy, decimal):可以手動指定長度以及小數點後的位數
日期:
TIMESTAMP - 'YYYY-MM-DD HH:MM:SS'
DATE - 'YYYY-MM-DD'
TIME - 'HH:MM:SS'

Postgres在建立table的時候,有幾種選項可以指定:

  1. IF NOT EXISTS
    如果說輸入CREATE TABLE IF NOT EXISTS來建立table,則偵測到系統內有同名TABLE的時候不會出現錯誤
    https://ithelp.ithome.com.tw/upload/images/20220906/20114934Gm0OmiFOCD.png
  2. TEMP table
    如果在創建TABLE的時候輸入CREATE TEMP TABLE,這樣子建立出來的table只有在當前的SESSION底下可以被看到,或者也可以在CREATE TEMP TABLE的括號後面加上ON COMMIT DROP來讓temporary table在transaction commit之後被移除。
  3. UNLOGGED table
    如果在創建TABLE的時候輸入CREATE UNLOGGED TABLE,則table被建立之後其上的變更不會被做到WAL裡面,是一種犧牲資料穩定性來換取效能的做法。

移除TABLE

語法:
DROP TABLE ${表格名稱};
也可以寫'DROP TABLE ${表格名稱} IF EXISTS;',跟CREATE ...IF NOT EXISTS是類似的概念。


上一篇
PostgreSQL特性介紹- WAL & checkpoint
下一篇
Postgres 基本SQL指令(2)
系列文
三十天,PG與我30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言