TP2
120
tp2.md
120
tp2.md
@@ -1,6 +1,6 @@
|
||||
# Travaux pratiques n°2
|
||||
|
||||
## Sélections de colonnes
|
||||
## Sélection de colonnes
|
||||
|
||||
- Afficher les titres et identifiants des albums.
|
||||
|
||||
@@ -8,16 +8,16 @@
|
||||
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
|
||||
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
|
||||
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.
|
||||
@@ -57,8 +57,9 @@ select firstName || ' ' || lastName as nomComplet
|
||||
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
|
||||
|
||||
@@ -120,6 +121,9 @@ from invoices
|
||||
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
|
||||
select InvoiceId, InvoiceDate , Total
|
||||
from invoices
|
||||
@@ -163,38 +167,124 @@ select
|
||||
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).
|
||||
|
||||
```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
|
||||
|
||||
- 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é.
|
||||
|
||||
- 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).
|
||||
|
||||
```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).
|
||||
|
||||
## 1. Nombre de clients
|
||||
|
||||
|
||||
|
||||
|
||||
## Compter
|
||||
|
||||
- Nombre de clients
|
||||
|
||||
```sql
|
||||
```
|
||||
|
||||
### 2. Nombre d'albums
|
||||
- Nombre d'albums
|
||||
|
||||
```sql
|
||||
```
|
||||
### 3. Nombre d'artistes
|
||||
- Nombre d'artistes
|
||||
|
||||
```sql
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user