eolas/Databases/SQL/Retrieve_data_from_SQL_table.md

72 lines
1.8 KiB
Markdown
Raw Normal View History

2022-12-06 09:29:41 +00:00
---
categories:
- Databases
- Programming Languages
2022-12-08 20:18:56 +00:00
tags: [SQL, relational-database]
2022-12-06 09:29:41 +00:00
---
# Retrieve data from table with SQL `SELECT` statement
> Select data from the database. The data returned is stored in a result table called the **result-set**.
_A table named `models`:_
| modelId | name | cores | releaseDate |
| ------- | -------------------- | ----- | ----------- |
| 2 | Raspberry Pi Model B | 2 | 2022-11-19 |
| 3 | Raspberry Pi Model C | 4 | 2022-11-25 |
| 4 | MacBook Pro M2 | 9 | 2022-03-18 |
## Basic usage
```sql
SELECT name FROM models
```
We can pass in a comma-separated **list of fields**:
```sql
SELECT name, releaseDate FROM models
```
## With parameters
### `WHERE`
The `WHERE` clause specifies a search criterion. The `WHERE` clause should always be last in the syntax. The clauses are always written in this order: `FROM` followed by `WHERE`
```sql
SELECT name FROM models WHERE cores > 3
```
### Compound statements
Compound statements allow you to apply more filters to your clauses within an SQL statement. SQL allows you to build complex, combinatorial `WHERE` clauses by using Boolean and mathematical operators (i.e `AND` , `OR` , `>` , `<` , `!=` , `<=` ...)
Multiple clauses:
```sql
SELECT name, ram, release_date
FROM model
WHERE release_date > '2018-01-01' AND ram > 512;
```
More complex logic achieve with parentheses:
```sql
SELECT name, cores, release_date
FROM model
WHERE (manufacturer_id = 1 OR manufacturer_id = 2) AND cores >= 2;
```
## Transform returned data
We can apply **ordering** to the return data
```sql
SELECT name FROM models ORDER BY name, cores
SELECT name FROM models ORDER BY name, cores DESC
```
> `ORDER BY` always comes last, after the selection and any filtering clauses but _before_ a `WHERE` clause