PostgreSQL常用SQL
-- 檢視已建立的資料庫
SELECT datname FROM pg_database;
-- 建立資料庫
CREATE DATABASE mydb;
-- 刪除資料庫
DROP DATABASE mydb;
-- 檢視已建立的使用者
SELECT usename FROM pg_user;
-- 建立使用者並且指定密碼
CREATE USER yuwen WITH PASSWORD 'zdh1234';
-- 建立資料庫並且指定使用者
CREATE DATABASE yuwen WITH ENCODING='utf8' OWNER=yuwen;
-- 檢視已建立的表
SELECT tablename FROM pg_tables;
-- 建立表
CREATE TABLE weather (
cityvarchar(80),
temp_loint,-- 最低溫度
temp_hiint,-- 最高溫度
prcpreal,-- 溼度
datedate-- 時間
);
-- 刪除表
DROP TABLE weather;
-- 查詢表資料,返回所有的列
SELECT * FROM weather;
-- 查詢表資料,返回指定的列
SELECT city, date FROM weather;
-- 查詢表資料,新增WHERE查詢指定資料
SELECT * FROM weather WHERE city='San Francisco';
-- 刪除表資料,刪除所有資料
DELETE FROM weather;
-- 新增WHERE刪除指定資料
DELETE FROM weather WHERE city='San Francisco';
-- 方法1:插入一條資料,省略列名
INSERT INTO weather VALUES ('San Francisco', 46, 50, 0.25, '2019-02-02');
-- 方法2:插入一條資料,明確列出所有的列名
INSERT INTO weather (city, temp_lo, temp_hi, prcp, date) VALUES ('San Francisco', 43, 57, 0.0, '1994-11-29');
-- 方法2的好處在於,可以任意改變列名的順序,以及忽略某些不是必填的列
INSERT INTO weather (date, city, temp_hi, temp_lo) VALUES ('1994-11-29', 'Hayward', 54, 37);
-- 使用ORDER BY對資料排序,預設排序為升序ASC
SELECT * FROM weather ORDER BY city;
-- 建議指明排序方式:ASC升序,DESC降序
SELECT * FROM weather ORDER BY city ASC;
SELECT * FROM weather ORDER BY city DESC;
-- 使用多個欄位排序,越靠近ORDER BY的欄位優先順序越高
SELECT * FROM weather ORDER BY city ASC, date DESC;
-- LIMIT語法,限制返回的行數為1行
SELECT * FROM weather LIMIT 1;
-- 使用offset跳過前1行,返回之後的指定2行
SELECT * FROM weather LIMIT 2 OFFSET 1;
-- 由於資料庫錶行的順序是不可預測的,
-- 因此LIMIT通常配合ORDER BY使用,來控制返回資料順序。
SELECT * FROM weather ORDER BY city LIMIT 1;
-- 使用DISTINCT去掉結果集中的重複行
-- 該distinct子句為每組重複項保留一行
SELECT DISTINCT city FROM weather;
-- 兩個欄位組合用於去掉重複項,查詢結果確保city+date唯一
SELECT DISTINCT city,date FROM weather;
-- 參考文章: