Running a query gives a copy of your original table that contains only the requested columns. This resulting table is often called the *result set*.
The result set isn’t stored permanently in the database, and it doesn’t change any tables in the database.
Returning all data from a table is often useful to inspect new databases. But it’s sometimes a bad idea to use the SELECT syntax for real production data (which is often a lot of data). A couple reasons:
Unnecessary costs! Some databases charge money per retrieved data (e.g. Google’s BigQuery)
When working with multiple tables it’s possible to return two columns of the same name from two different tables (often leading to crashes!).