It is coming out the same because the query optimizer is doing its job.
One of the purposes of SQL (and similar languages) is that you write a query specifying what you want, and not how you want it, and let the query system deal with the how.
In this case the query optimizer rules end up with the same actual query execution plan. This may or may not change depending on the volume of data later on. My guess is it won't.
As for the *
in the first, you can try with 1
instead and it'll work out fine, it is used as a placeholder for "data" in this case.