TP2
120
tp2.md
120
tp2.md
@@ -1,6 +1,6 @@
|
|||||||
# Travaux pratiques n°2
|
# Travaux pratiques n°2
|
||||||
|
|
||||||
## Sélections de colonnes
|
## Sélection de colonnes
|
||||||
|
|
||||||
- Afficher les titres et identifiants des albums.
|
- Afficher les titres et identifiants des albums.
|
||||||
|
|
||||||
@@ -8,16 +8,16 @@
|
|||||||
select Title, AlbumId from Albums
|
select Title, AlbumId from Albums
|
||||||
```
|
```
|
||||||
|
|
||||||
Afficher les colonnes prénom, nom et ville de la table clients.
|
- Afficher les colonnes prénom, nom et ville de la table clients.
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
SELECT FirstName, LastName, City from customers;
|
SELECT FirstName, LastName, City from customers;
|
||||||
```
|
```
|
||||||
|
|
||||||
- Afficher le nom complet de tous les clients. Le nom complet est la concaténation dans <ins>une seule colonne</ins> du prénom et du nom. Donner le titre NomComplet à cette colonne.
|
- Afficher le nom complet des clients. Le nom complet est la concaténation dans <ins>une seule colonne</ins> du prénom et du nom. Donner le titre _NomComplet_ à cette colonne.
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
select firstName || ' ' || lastName as nomComplet, City from customers;
|
select FirstName || ' ' || LastName as nomComplet, City from customers;
|
||||||
```
|
```
|
||||||
|
|
||||||
L'opérateur `||` est l'opérateur de concaténation de chaine équivalent à + mais pour le texte.
|
L'opérateur `||` est l'opérateur de concaténation de chaine équivalent à + mais pour le texte.
|
||||||
@@ -57,8 +57,9 @@ select firstName || ' ' || lastName as nomComplet
|
|||||||
where Country = 'Brazil'
|
where Country = 'Brazil'
|
||||||
```
|
```
|
||||||
|
|
||||||
[!WARNING]
|
|
||||||
Le respect des majuscules n'est pas obligatoire pour le nom des tables et colonnes mais cela l'est pour les valeurs *brazil* est différent de *Brazil*.
|
> [!WARNING]
|
||||||
|
> Le respect des majuscules n'est pas obligatoire pour le nom des tables et colonnes mais cela l'est pour les valeurs *brazil* est différent de *Brazil*.
|
||||||
|
|
||||||
- Filtrer les clients dont l'age est inférerieur à 25 ans et qui vivent aux USA
|
- Filtrer les clients dont l'age est inférerieur à 25 ans et qui vivent aux USA
|
||||||
|
|
||||||
@@ -120,6 +121,9 @@ from invoices
|
|||||||
where InvoiceDate between '2010-01-01' and '2010-12-31'
|
where InvoiceDate between '2010-01-01' and '2010-12-31'
|
||||||
```
|
```
|
||||||
|
|
||||||
|
L'opérateur `between` combine supérieur ou égal >= ET inférieur ou égal <= dans une seule commande
|
||||||
|
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
select InvoiceId, InvoiceDate , Total
|
select InvoiceId, InvoiceDate , Total
|
||||||
from invoices
|
from invoices
|
||||||
@@ -163,38 +167,124 @@ select
|
|||||||
from invoices
|
from invoices
|
||||||
```
|
```
|
||||||
|
|
||||||
## Filtrage et tri avancés
|
## Top
|
||||||
|
|
||||||
- Affichez le titre des albums de l’artiste AC/DC.
|
Pour afficher un top il suffit de trier par ordre décroissant `DESC` et de limiter le nombre de lignes.
|
||||||
|
|
||||||
- Listez les 10 pistes les plus longues (Name, Milliseconds) par durée décroissante.
|
- Afficher les 10 pistes les plus longues en durée.
|
||||||
|
|
||||||
- Montrez les 5 premières factures triées par montant total (Total) décroissant.
|
```sql
|
||||||
|
SELECT Name, Milliseconds FROM tracks
|
||||||
|
order by Milliseconds DESC
|
||||||
|
LIMIT 10;
|
||||||
|
```
|
||||||
|
|
||||||
|
- Afficher les 5 factures les plus importantes par montant total.
|
||||||
|
|
||||||
|
```sql
|
||||||
|
select Total from invoices
|
||||||
|
order by Total desc
|
||||||
|
limit 5
|
||||||
|
```
|
||||||
|
|
||||||
|
## Null
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> Null est égal à rien même pas à lui même. Il faut utiliser les opérateurs `IS NULL` ou `IS NOT NULL`
|
||||||
|
|
||||||
- Listez les employés (FirstName, LastName) qui reportent à un manager (ReportsTo non nul).
|
- Listez les employés (FirstName, LastName) qui reportent à un manager (ReportsTo non nul).
|
||||||
|
|
||||||
|
```sql
|
||||||
|
-- NE FONCTIONNE PAS !!
|
||||||
|
SELECT * FROM employees WHERE ReportsTo <> NULL;
|
||||||
|
|
||||||
|
SELECT * FROM employees WHERE ReportsTo IS NOT NULL;
|
||||||
|
```
|
||||||
|
|
||||||
|
- Le client qui n'a pas de numéro de téléphone
|
||||||
|
|
||||||
|
```sql
|
||||||
|
SELECT * FROM customers WHERE Phone IS NULL;
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
# Jointures simples
|
# Jointures simples
|
||||||
|
|
||||||
|
- Affichez le titre des albums de l’artiste AC/DC.
|
||||||
|
|
||||||
|
|
||||||
|
```sql
|
||||||
|
-- Étape 1. Récupère artistId pour AC/DC
|
||||||
|
select ArtistId from artists where Name = 'AC/DC'
|
||||||
|
|
||||||
|
-- Étape 2. Sélectionne les albums pour ArtistId = 1
|
||||||
|
select Title from albums WHERE ArtistId = 1
|
||||||
|
```
|
||||||
|
|
||||||
|
Utilisation d'une sous-requête. Une requête utilise le résultat d'une autre.
|
||||||
|
|
||||||
|
```sql
|
||||||
|
SELECT Title FROM albums WHERE ArtistId = (
|
||||||
|
SELECT artistId FROM artists WHERE Name = 'AC/DC'
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
|
Utilisation d'une jointure entre 2 tables
|
||||||
|
|
||||||
|
```sql
|
||||||
|
SELECT Title
|
||||||
|
FROM albums
|
||||||
|
JOIN artists ON albums.ArtistId = artists.ArtistId
|
||||||
|
WHERE Name = 'AC/DC'
|
||||||
|
```
|
||||||
|
|
||||||
- Affichez le nom des pistes (Track.Name) et le nom de l’album (Album.Title) associé.
|
- Affichez le nom des pistes (Track.Name) et le nom de l’album (Album.Title) associé.
|
||||||
|
|
||||||
- Listez tous les clients (FirstName, LastName) avec le pays (Country) et l’employé commercial (FirstName, LastName) qui leur est assigné.
|
|
||||||
|
|
||||||
- Affichez toutes les pistes (Track.Name) avec leur artiste (Artist.Name).
|
```sql
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
- Listez les factures (InvoiceId, Total) avec le nom du client (Customer.FirstName, Customer.LastName).
|
- Listez les factures (InvoiceId, Total) avec le nom du client (Customer.FirstName, Customer.LastName).
|
||||||
|
|
||||||
|
```sql
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
- Listez tous les clients (FirstName, LastName) avec le pays (Country) et l’employé commercial (FirstName, LastName) qui leur est assigné.
|
||||||
|
|
||||||
|
|
||||||
|
```sql
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
- Affichez toutes les pistes (Track.Name) avec leur artiste (Artist.Name).
|
||||||
|
|
||||||
|
```sql
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
- Affichez toutes les pistes (Name) avec leur genre (Genre.Name).
|
- Affichez toutes les pistes (Name) avec leur genre (Genre.Name).
|
||||||
|
|
||||||
## 1. Nombre de clients
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Compter
|
||||||
|
|
||||||
|
- Nombre de clients
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2. Nombre d'albums
|
- Nombre d'albums
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
```
|
```
|
||||||
### 3. Nombre d'artistes
|
- Nombre d'artistes
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
```
|
```
|
||||||
|
|||||||
Reference in New Issue
Block a user