diff --git a/tp2.md b/tp2.md index 0628220..b8c2b2b 100644 --- a/tp2.md +++ b/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 une seule colonne 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 une seule colonne 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 ```