Self-join examples are tiny finite-table transforms with two aliases of one source table; SQL dialect completeness, type coercion, optimizer behavior, execution cost, indexing, and database-product claims are out of scope.
One table, two roles
The same rows will be read in two roles, not copied by hand.
one table two roles
Summary
The compiler keeps the source table visible before alias pairing.