@startuml scale 800 width state Query state Create Create : Create database table state Drop Drop : Drop database table state Select Select: Query rows Select: Add columns state Insert Insert: Insert rows state Update Update: Update rows Update: Set table name state Delete Delete: Delete items from table state Table Table: Set table name state Into Into: Set table name Into: Add columns state From From: Set table name state Join Join: Set table Join: Set join type (inner left, right, outer) state Where Where: Add where clause state Set Set: Set column value pairs state Values Values: Set values state On: On: Set Expression state GroupBy GroupBy: Add column names state OrderBy OrderBy: Add expression state Limit Limit: Add number of max result elements [*] --> Query Query --> Create Query --> Drop Query --> Select Query --> Insert Query --> Update Query --> Delete Create --> Table Drop --> Table Select --> From Insert --> Into Delete --> From Into --> Values Update --> Set Set -> Where From --> Where From --> OrderBy From --> GroupBy From --> Join Join --> On On --> Where Where --> GroupBy Where --> OrderBy Where --> Limit GroupBy --> OrderBy OrderBy --> Limit Table --> [*] Values ---> [*] Where --> [*] Set --> [*] From --> [*] Limit --> [*] OrderBy --> [*] GroupBy --> [*] @enduml