In general terms, a clause is just a logical chunk of a SQL statement - and, usually, is a chunk that is (theoretically) optional.
I'm a SQL Server guy, so I'll be thinking in those terms.
SELECT GETDATE()
is a valid SQL Server SELECT
statement. It'll return the current date and time.
If I add a FROM
clause:
SELECT GETDATE()
FROM sys.objects
I'll get back n rows (where n is the number of rows in the sys.objects
table), each of which will have the same (unnamed) column, showing the current date and time.
You can add a WHERE
clause to limit the number of rows you bring back; a GROUP BY
clause to either deduplicate your data, or to allow you to put aggregate values in the SELECT
list; a HAVING clause (usually to eliminate rows based on aggregate data); an ORDER BY
clause to sort the data - but, none of those have to be there.
You'll note I said "SELECT
list" when referring to the list of columns returned. I've never heard this referred to as a clause - presumably, because it does have to be there.
An operator, on the other hand is used to combine or compare two complete items. Just like the +
operator lets you combine numbers (1 + 2
) or strings ([firstname] + ' ' + [lastname]
), the UNION
, EXCEPT
, DIFFERENCE
, and INTERSECT
operators let you combine two SQL statements.
I'm probably oversimplifying, but thinking in these terms should at least head you in the right direction.