There is some discussion in relational theory of the meaning of tables with zero columns. Also described as relations of zero degree.
Relational theory researcher C. J. Date refers to TABLE_DUM and TABLE_DEE. Both have no columns, but the difference is that TABLE_DUM has no columns and no rows, whereas TABLE_DEE has one row (even though that row has no columns).
See this excerpt from "Database in Depth: Relational Theory for Practitioners": https://flylib.com/books/en/2.214.1.38/1/
The following query will therefore return no rows:
SELECT * FROM TABLE_DUM CROSS JOIN MyTable;
Whereas this query will return the same rows and columns as MyTable:
SELECT * FROM TABLE_DEE CROSS JOIN MyTable;
So there's some precedent and significance for a table with no columns. You can think of it by analogy as the role of 0 and 1 in multiplication:
- 0 x any number is 0
- 1 x any number is the same number
HOWEVER, standard SQL doesn't allow it. SQL doesn't exactly implement all of the concept of relational theory faithfully. In this case, standard SQL defines a table as having at least one column. The designers of SQL decided that a table with no columns isn't so interesting as to justify support in the SQL language.
If PostgreSQL or some other implementation of SQL decides to allow a table with no columns, they are doing it as an extension to standard SQL.