tp2
38
sql.dql.md
38
sql.dql.md
@@ -3,7 +3,7 @@
|
|||||||
> [!NOTE]
|
> [!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.
|
> **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
|
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`
|
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
|
```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 *.
|
Pour sélectionner toutes les colonnes il faut utiliser le caractère joker *.
|
||||||
|
|
||||||
## Filtre
|
## Filtre
|
||||||
@@ -35,18 +37,18 @@ Marc |Dubois |Lyon
|
|||||||
Wyatt |Girard |Bordeaux
|
Wyatt |Girard |Bordeaux
|
||||||
Isabelle |Mercier |Dijon
|
Isabelle |Mercier |Dijon
|
||||||
|
|
||||||
### Opérateurs
|
## Opérateurs
|
||||||
|
|
||||||
Opérateur|Description
|
Opérateur|Description
|
||||||
---|---
|
---|---
|
||||||
=|égal
|
= |égal
|
||||||
<>|différent
|
<>|différent
|
||||||
>|supérieur
|
\> |supérieur
|
||||||
>=|supérieur ou égal
|
\>=|supérieur ou égal
|
||||||
<|inférieur
|
< |inférieur
|
||||||
<=|inférieur ou égal
|
<=|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.
|
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
|
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
|
```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 (_).
|
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
|
### 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
|
## 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
|
```sql
|
||||||
SELECT nom, prenom, age
|
SELECT nom, prenom, age
|
||||||
@@ -85,6 +92,7 @@ FROM utilisateurs
|
|||||||
ORDER BY age DESC, nom ASC;
|
ORDER BY age DESC, nom ASC;
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
## Pagination
|
## 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.
|
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.
|
- 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.
|
- Listez le nom complet de tous les clients.
|
||||||
|
|
||||||
|
```sql
|
||||||
|
```
|
||||||
|
|
||||||
- Affichez les noms des artistes triés par ordre alphabétique.
|
- 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.
|
- 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.
|
- 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
|
- 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
|
- 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
|
- 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.
|
- 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.
|
- 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).
|
- 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é.
|
- 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).
|
- Affichez toutes les pistes (Track.Name) avec leur artiste (Artist.Name).
|
||||||
|
|
||||||
@@ -62,13 +104,18 @@
|
|||||||
```sql
|
```sql
|
||||||
```
|
```
|
||||||
|
|
||||||
### 4. Liste des pays
|
### 4. Liste des pays des clients
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
```
|
```
|
||||||
|
|
||||||
Utilisation de `distinct` pour supprimer les doublons.
|
Utilisation de `distinct` pour supprimer les doublons.
|
||||||
|
|
||||||
|
### 5. Nombre de pays des clients
|
||||||
|
|
||||||
|
```sql
|
||||||
|
```
|
||||||
|
|
||||||
### 5. Nombre de clients par pays
|
### 5. Nombre de clients par pays
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
|
|||||||
Reference in New Issue
Block a user