PostgreSQL 相關

Posted by Adam on August 24, 2022
### [Connecting to Postgresql in a docker container from outside](https://stackoverflow.com/questions/37694987/connecting-to-postgresql-in-a-docker-container-from-outside) ``` psql postgresql://postgres:1234@localhost:5432/postgres ``` ```bash # 連接到資料庫:使用以下指令連接到 PostgreSQL 資料庫 psql -U 用戶名 -d 資料庫名 -h 主機名 -p 連接埠 \l # 列出所有 PostgreSQL 中的資料庫 # 切換資料庫 \c 資料庫名 # 查看資料庫中的 Table \d # 用於顯示當前資料庫中所有關聯對象(包括表格、視圖、索引、序列等)的命令 \dt # 僅顯示當前資料庫中的所有表格(關聯表) \du # 列出 PostgreSQL 中的所有使用者 \d+ 顯示資料表的描述 (表結構) ``` ### SQL ```sql -- 取得最靠近現在時間的五筆資料 SELECT * FROM your_table ORDER BY ABS(EXTRACT(epoch FROM (your_timestamp_column - NOW()))) LIMIT 5; -- 使用 EXTRACT(epoch FROM (your_timestamp_column - NOW())) 來計算每筆資料的時間差,以秒為單位。 -- LIMIT 5 限制結果只返回前五筆資料 ``` ### char(5) to varchar(5) ```sql -- Step 1: 建立新的 varchar(5)欄位 ALTER TABLE order_list ADD COLUMN currency_new varchar(5); -- Step 2: 複製數據至新欄位 UPDATE order_list SET currency_new = currency; -- Step 3: 刪除原始欄位 ALTER TABLE order_list DROP COLUMN currency; -- Step 4: 重新命名新欄位 ALTER TABLE order_list RENAME COLUMN currency_new TO currency; ``` ### 使用者配置 ```sql -- 列出 PostgreSQL 中的所有使用者 SELECT usename FROM pg_user; -- 執行以下命令來創建一個新的使用者 CREATE USER username WITH PASSWORD 'password'; -- 請將 `username` 更換為你想要的使用者名稱,將 `password` 更換為你想要設置的密碼。 -- 新增一個資料庫 CREATE DATABASE dbname; -- 授予使用者適當的權限,例如讓使用者擁有對特定資料庫的訪問權限 GRANT ALL PRIVILEGES ON DATABASE database_name TO username; -- 請將 `database_name` 更換為你想要給予存取權限的資料庫名稱。 -- 完成後,可以使用以下命令檢查新建使用者是否成功添加 \du -- 移除某個使用者對某個資料庫的權限 REVOKE ALL PRIVILEGES ON DATABASE database_name FROM username; -- 請將 `database_name` 替換為欲移除權限的資料庫名稱,將 `username` 替換為欲移除權限的使用者名稱。 ```