tp2
38
sql.dql.md
38
sql.dql.md
@@ -3,7 +3,7 @@
|
||||
> [!NOTE]
|
||||
> **DQL** pour _Data Query Language_ est le sous-langage responsable de la lecture, ou de l'interrogation, des données d'une base de données.
|
||||
|
||||
En SQL, cela correspond principalment à la commande **select** qui permet de sélectionner et d'extraire des données spécifiques à partir d'une ou plusieurs tables.
|
||||
En SQL, cela correspond principalment à la commande `select` qui permet de sélectionner et d'extraire des données spécifiques à partir d'une ou plusieurs tables.
|
||||
|
||||
La dénomination de ce type de commande est _requête_ ou _query_ en anglais
|
||||
|
||||
@@ -12,9 +12,11 @@ La dénomination de ce type de commande est _requête_ ou _query_ en anglais
|
||||
Dans une commande **select** il convient de définir les colonnes que l'on veut obtenir ainsi que la source des données définie par le mot clé `from`
|
||||
|
||||
```sql
|
||||
select FirstName, LastName, City from customers;
|
||||
select firstName, LastName, City from customers;
|
||||
```
|
||||
|
||||
Sélectionner les colonnes prénom (firstName), nom (lastName) et ville (City) de la table clients (customers).
|
||||
|
||||
Pour sélectionner toutes les colonnes il faut utiliser le caractère joker *.
|
||||
|
||||
## Filtre
|
||||
@@ -35,18 +37,18 @@ Marc |Dubois |Lyon
|
||||
Wyatt |Girard |Bordeaux
|
||||
Isabelle |Mercier |Dijon
|
||||
|
||||
### Opérateurs
|
||||
## Opérateurs
|
||||
|
||||
Opérateur|Description
|
||||
---|---
|
||||
=|égal
|
||||
= |égal
|
||||
<>|différent
|
||||
>|supérieur
|
||||
>=|supérieur ou égal
|
||||
<|inférieur
|
||||
\> |supérieur
|
||||
\>=|supérieur ou égal
|
||||
< |inférieur
|
||||
<=|inférieur ou égal
|
||||
|
||||
#### between
|
||||
### entre
|
||||
|
||||
Détermine si une valeur se trouve entre deux limites inclusives. `between` peut être précédé du mot clé `not` pour inverser la condition.
|
||||
|
||||
@@ -54,17 +56,22 @@ Détermine si une valeur se trouve entre deux limites inclusives. `between` peut
|
||||
where total between 10.0 and 20.0
|
||||
```
|
||||
|
||||
between [lowerbound] and [upperbound]
|
||||
quand le total est entre 10 et 20
|
||||
|
||||
#### in
|
||||
### dans
|
||||
|
||||
L'opérateur `in' détermine si une valeur est présente dans un ensemble de valeurs.
|
||||
|
||||
détermine si une valeur est présente dans un ensemble de valeurs.
|
||||
|
||||
```sql
|
||||
"costs"."unit_cost" in (200, 600, 'a')
|
||||
select FirstName, LastName, Country
|
||||
from customers
|
||||
where Country in ('France', 'Belgium', 'Germany');
|
||||
```
|
||||
|
||||
#### like
|
||||
Sélectionner les clients de France, Belgique ou Allemagne.
|
||||
|
||||
### comme
|
||||
|
||||
détermine si une valeur correspond à tout ou partie d'une chaîne. souvent utilisé avec caractères génériques pour indiquer toute correspondance de chaîne de caractères avec zéro ou plusieurs caractères (%) ou une correspondance à caractère unique (_).
|
||||
|
||||
@@ -73,11 +80,11 @@ détermine si une valeur correspond à tout ou partie d'une chaîne. souvent uti
|
||||
```
|
||||
### Conditions multiples
|
||||
|
||||
Les conditions peuvent être combinées avec des opérateurs booléen AND et OR.
|
||||
Les conditions peuvent être combinées avec des opérateurs booléen `AND` et `OR`.
|
||||
|
||||
## Tri
|
||||
|
||||
La commande ORDER BY dans une requête SELECT en SQL est utilisée pour trier les résultats retournés par la requête en fonction d'une ou plusieurs colonnes.
|
||||
La commande `ORDER BY` dans une requête `SELECT` en SQL est utilisée pour trier les résultats retournés par la requête en fonction d'une ou plusieurs colonnes.
|
||||
|
||||
```sql
|
||||
SELECT nom, prenom, age
|
||||
@@ -85,6 +92,7 @@ FROM utilisateurs
|
||||
ORDER BY age DESC, nom ASC;
|
||||
```
|
||||
|
||||
|
||||
## Pagination
|
||||
|
||||
Si un nombre limite est donné, pas plus de ce nombre de lignes sera renvoyé (mais peut-être moins, si la requête elle-même génère moins de lignes). LIMIT ALL revient à omettre la clause LIMIT, tout comme LIMIT avec un argument NULL.
|
||||
|
||||
61
tp2.md
61
tp2.md
@@ -4,23 +4,67 @@
|
||||
|
||||
- Affichez tous les titres et identifiants des albums.
|
||||
|
||||
- Listez le prénom et le nom de tous les clients.
|
||||
```sql
|
||||
```
|
||||
|
||||
Sélectionner les colonnes prénom (firstName), nom (lastName) et ville (City) de la table clients (customers).
|
||||
|
||||
```sql
|
||||
```
|
||||
|
||||
- Listez le nom complet de tous les clients.
|
||||
|
||||
```sql
|
||||
```
|
||||
|
||||
- Affichez les noms des artistes triés par ordre alphabétique.
|
||||
|
||||
```sql
|
||||
```
|
||||
|
||||
- Montrez toutes les pistes (Name) dont la durée (Milliseconds) est supérieure à 5 minutes.
|
||||
|
||||
```sql
|
||||
```
|
||||
|
||||
- Récupérez toutes les factures (InvoiceId, InvoiceDate, Total) émises en 2010.
|
||||
|
||||
- Filtrer les clients dont l'age est inférerieur à 25 ans
|
||||
```sql
|
||||
```
|
||||
|
||||
- Filtrer les clients dont l'age est inférieur à 25 ans
|
||||
|
||||
```sql
|
||||
```
|
||||
|
||||
- Filtrer les clients dont l'age est inférerieur à 25 ans et qui vivent aux USA
|
||||
|
||||
```sql
|
||||
```
|
||||
|
||||
- Filter les albums qui sont sortis entre 1984 et 1989
|
||||
|
||||
- Filtrer les clients de France, Belgique et Allemgne (France, Belgium, Germany)
|
||||
```sql
|
||||
```
|
||||
|
||||
- Affichez tous les clients vivant au Brésil.
|
||||
|
||||
```sql
|
||||
```
|
||||
|
||||
- Filtrer les clients de France, Belgique et Allemagne (France, Belgium, Germany)
|
||||
|
||||
```sql
|
||||
```
|
||||
|
||||
- Différent de
|
||||
|
||||
```sql
|
||||
```
|
||||
|
||||
### strftime
|
||||
|
||||
voir le détail de la fonction [strftime](https://sqlite.org/lang_datefunc.html)
|
||||
|
||||
- Lister le total des factures en détaillant dans des colonnes séparées l'année, le mois, le n° de semaine et le n° de jour de la semaine
|
||||
|
||||
@@ -30,8 +74,6 @@
|
||||
|
||||
- Listez les 10 pistes les plus longues (Name, Milliseconds) par durée décroissante.
|
||||
|
||||
- Affichez tous les clients vivant au Brésil.
|
||||
|
||||
- Montrez les 5 premières factures triées par montant total (Total) décroissant.
|
||||
|
||||
- Listez les employés (FirstName, LastName) qui reportent à un manager (ReportsTo non nul).
|
||||
@@ -40,7 +82,7 @@
|
||||
|
||||
- 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 (SupportRepId) qui leur est assigné.
|
||||
- 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).
|
||||
|
||||
@@ -62,13 +104,18 @@
|
||||
```sql
|
||||
```
|
||||
|
||||
### 4. Liste des pays
|
||||
### 4. Liste des pays des clients
|
||||
|
||||
```sql
|
||||
```
|
||||
|
||||
Utilisation de `distinct` pour supprimer les doublons.
|
||||
|
||||
### 5. Nombre de pays des clients
|
||||
|
||||
```sql
|
||||
```
|
||||
|
||||
### 5. Nombre de clients par pays
|
||||
|
||||
```sql
|
||||
|
||||
Reference in New Issue
Block a user