SELECT FROM
The first, most basic operation is to get all data from a table.
We can do this with the SELECT and FROM clauses.
Let's go back to the hypothetical dating app, "Teender", that stores its users in a table named daters.
We can get all the data from daters like so:
SELECT *
FROM daters;
| name VARCHAR | height_cm INTEGER | eye_color VARCHAR |
|---|---|---|
Ray | 180 | brown |
Florence | 167 | blue |
Claude | 156 | brown |
Kim | 178 | blue |
Frederick | 170 | green |
Anita | 188 | brown |
We've fetched all rows and all columns from the daters table.
The FROM clause specifies the table we are sourcing from.
In this case, daters is the table name.
The SELECT clause specifies what you want from that table.
Here, * is a special shortcut for all columns.
So this query simply gets the entire table without any transformations.
Specific Columns
What if we don't want all the columns?
We can control this in the SELECT clause. For example:
SELECT name, eye_color
FROM daters;
| name VARCHAR | eye_color VARCHAR |
|---|---|
Ray | brown |
Florence | blue |
Claude | brown |
Kim | blue |
Frederick | green |
Anita | brown |
SELECT name, height_cm
FROM daters;
| name VARCHAR | height_cm INTEGER |
|---|---|
Ray | 180 |
Florence | 167 |
Claude | 156 |
Kim | 178 |
Frederick | 170 |
Anita | 188 |
Instead of *, we list the column names we want in a comma-separated list.
As mentioned before, clauses represent relational algebra operations, or transformations on a table. Here is a visual way to represent this transformation.
Generally, to select columns we want, we need to know which columns are available.
In practice, one way to know the column names is to SELECT * FROM table_name first, then see the columns in the result.
A better way is to look at a diagram like this:
| column_name | type |
|---|---|
name | VARCHAR |
height_cm | INTEGER |
eye_color | VARCHAR |
It shows the names and types for each column. Remember that the type is the kind of data in the column. We'll look at this more in the next section.
Aliasing
The SELECT clause can do more than just select columns, it can also alias them.
This is done by adding AS new_name after the column.
SELECT
name AS first_name,
height_cm
FROM daters;
| first_name VARCHAR | height_cm INTEGER |
|---|---|
Ray | 180 |
Florence | 167 |
Claude | 156 |
Kim | 178 |
Frederick | 170 |
Anita | 188 |
Notice how name was changed to first_name, but height_cm was left alone.
This isn't a permanent rename.
It only applies to this query.