[SQL] Query 常用指令
:thumbsup: PostgreSQL Tutorial
FAQ
單引號和雙引號有什麼不同?
What is the difference between single quotes and double quotes in PostgreSQL? @ StackOverflow
在 Postgres 中,單引號用來表示「字串」,而雙引號是針對欄位名稱或資料表名稱使用(一般來說可以省略):
select * from "employee" where "employee_name"='elina';
SELECT
SELECT column_1, column_2, ... FROM table_name;
SELECT * FROM table_name;
- SQL 語法本身是不區分打小寫的(case-insensitive),但慣例上來說,會把 SQL 內的關鍵字用大寫呈現,以方便閱讀。
- 使用
*
來選出所有欄位的資料一般來說不是太好的作法,這會拖慢資料庫以及應用程式的效能。因為你可能會拿出許多沒有必要的欄位資料,同時導致伺服器的負荷增加,拖慢應用程式的效能。因此,最好只在特殊的情況使用(例如,直接操作資料庫時)。
範例
SELECT first_name FROM customer;
Querying Data
ORDER BY
keywords: ASC
, DESC
, NULLS FIRST
, NULLS LAST
SELECT column_1, column_2, ...
FROM table_name
ORDER BY column_1 ASC[, column_2 DESC];
ORDER BY
預設是使用ASC
排序。- 如果根據兩個以上的欄位排序,則會以前者為優先,例如先依照
column_1
排序,當column_1
的值一樣的話,在根據column_2
排序。 - 在
PSQL
中,即使要排序的欄位沒有透過SELECT
選起來,也可以指定它來作為排序的依據,但在MYSQL
或Oracle SQL
中可能不行這麼做。
範例
-- 排序多個欄位
SELECT first_name, last_name FROM customer ORDER BY first_name ASC, last_name DESC;
-- 將 expression 作為排序依據
SELECT first_name, LENGTH(first_name) len
FROM customer
ORDER BY len DESC;
-- 使用 NULLS FIRST 或 NULLS LAST 來搭配 NULL 進行排序
SELECT num FROM sort_demo ORDER BY num DESC NULLS FIRST;