SQL 其實由好幾個領域組成,各有專屬縮寫與子語言:

  • DML(data manipulation language,資料操作語言):INSERTUPDATEDELETE,用來把資料輸入系統。
  • DDL(data definition language,資料定義語言):CREATEALTERDROP,用來定義存放資料的磁碟結構,以及約束(constraint)與索引(index)——即所謂的 SQL 物件。
  • TCL(transaction control language,交易控制語言):BEGINCOMMITROLLBACKSTART TRANSACTIONSET TRANSACTION,還有較少人知道的 SAVEPOINTRELEASE SAVEPOINTROLLBACK TO SAVEPOINT,以及兩階段提交(two-phase commit)的 PREPARE COMMITCOMMIT PREPAREDROLLBACK PREPARED
  • DCL(data control language,資料控制語言):GRANTREVOKE
  • PostgreSQL 維護指令:VACUUMANALYZECLUSTER
  • 其他 PostgreSQL 提供的指令:PREPAREEXECUTEEXPLAINLISTENNOTIFYLOCKSET 等。

「查詢」本身——以 SELECTTABLEVALUESWITH 開頭的語句——只占整份指令清單的一小部分,卻是複雜度所在,也是本部接下來投注心力的重點。