the verbosity of "(SELECT * FROM A)"? This might be a novice question. But sometimes, I find it necessary to use things like (SELECT * FROM A) in doing relational algebra in SQL (instead of using the relation A itself). 

For example, when trying to work on the UNION of two relations A and B having the same structure, the following

SELECT * FROM (A UNION B) t;


generates a syntax error (with PostgreSQL 9.x).

ERROR:  syntax error at or near "UNION"


And I had to do

SELECT * FROM ((SELECT * FROM A) UNION (SELECT * FROM B)) t;


My questions are:

Is the verbosity of the subquery (SELECT * FROM A) really necessary in the SQL language (or am I missing something about better way to write it)? Why can't the relations A and B be used directly here? 

Is (SELECT * FROM A) equivalent to A in relational algebra? What does the expansion (SELECT * FROM A) buy us? When is the long form required?
If you want shorter syntax in SQL, there is the TABLE name syntax that you can use - where name is a table name (base table or view or cte):

SELECT * FROM ((TABLE A) UNION (TABLE B)) t ;


The parentheses are not needed:

SELECT * FROM (TABLE A UNION TABLE B) t ;


and you could even write:

TABLE A UNION TABLE B ;




Regarding whether the syntax is ISO/ANSI SQL, I found this in a (copy of a) draft of SQL 2011:

6.41 &lt;multiset value constructor&gt; 

Function

Specify construction of a multiset.  

Format

&lt;multiset value constructor&gt; ::=
    &lt;multiset value constructor by enumeration&gt;
    | &lt;multiset value constructor by query&gt;
    | &lt;table value constructor by query&gt;

&lt;multiset value constructor by enumeration&gt; ::=
    MULTISET &lt;left bracket or trigraph&gt; &lt;multiset element list&gt; &lt;right bracket or trigraph&gt;

&lt;multiset element list&gt; ::=
    &lt;multiset element&gt; [ { &lt;comma&gt; &lt;multiset element&gt; }... ]

&lt;multiset element&gt; ::=
    &lt;value expression&gt;

&lt;multiset value constructor by query&gt; ::=
    MULTISET &lt;table subquery&gt;

&lt;table value constructor by query&gt; ::=
    TABLE &lt;table subquery&gt;