SELECT: This clause specifies the columns from the data source that should be included in the query results.
FROM: This clause specifies the data source(s) that should be queried. This can be a table, a view, or the results of another query.
WHERE: This clause specifies conditions that must be met for a row to be included in the query results.
GROUP BY: This clause groups the rows of the query results by the values in one or more columns, allowing aggregate functions to be applied to each group.
HAVING: This clause is used to filter the groups in the query results, based on the values of aggregate functions applied to each group.
ORDER BY: This clause specifies the order in which the rows of the query results should be returned.