SQL 其實由好幾個領域組成,各有專屬縮寫與子語言:
- DML(data manipulation language,資料操作語言):
INSERT、UPDATE、DELETE,用來把資料輸入系統。 - DDL(data definition language,資料定義語言):
CREATE、ALTER、DROP,用來定義存放資料的磁碟結構,以及約束(constraint)與索引(index)——即所謂的 SQL 物件。 - TCL(transaction control language,交易控制語言):
BEGIN、COMMIT、ROLLBACK、START TRANSACTION、SET TRANSACTION,還有較少人知道的SAVEPOINT、RELEASE SAVEPOINT、ROLLBACK TO SAVEPOINT,以及兩階段提交(two-phase commit)的PREPARE COMMIT、COMMIT PREPARED、ROLLBACK PREPARED。 - DCL(data control language,資料控制語言):
GRANT與REVOKE。 - PostgreSQL 維護指令:
VACUUM、ANALYZE、CLUSTER。 - 其他 PostgreSQL 提供的指令:
PREPARE/EXECUTE、EXPLAIN、LISTEN/NOTIFY、LOCK、SET等。
「查詢」本身——以
SELECT、TABLE、VALUES、WITH開頭的語句——只占整份指令清單的一小部分,卻是複雜度所在,也是本部接下來投注心力的重點。