td
17
bdd.md
17
bdd.md
@@ -81,12 +81,17 @@ RDBMS
|
|||||||
- Les [formes normales](formes_normales)
|
- Les [formes normales](formes_normales)
|
||||||
- Le [schéma entité-relation](schema)
|
- Le [schéma entité-relation](schema)
|
||||||
- Le [langage SQL](sql)
|
- Le [langage SQL](sql)
|
||||||
- Les [jointures](jointure)
|
- [DATA DEFINITION LANGAGE](ddl) (DDL)
|
||||||
- Les [déclencheurs](trigger)
|
- [DATA QUERY LANGAGE](dql) (DQL)
|
||||||
- Les [vues](vues)
|
- [DATA MANIPULATION LANGAGE](dml) (DML)
|
||||||
- Le principe [ACID](acid)
|
- [DATA CONTROL LANGAGE](dcl) (DCL)
|
||||||
- Les [transactions](tcl)
|
- [TRANSACTION CONTROL LANGAGE](tcl) (TCL)
|
||||||
- Le [format JSON](json)
|
- Les [jointures](jointure)
|
||||||
|
- Les [déclencheurs](trigger)
|
||||||
|
- Les [vues](vues)
|
||||||
|
- Le principe [ACID](acid)
|
||||||
|
- Les [transactions](tcl)
|
||||||
|
- Le [format JSON](json)
|
||||||
|
|
||||||
### Travaux dirigés
|
### Travaux dirigés
|
||||||
|
|
||||||
|
|||||||
2
sgbdr.md
2
sgbdr.md
@@ -1,4 +1,4 @@
|
|||||||
# Système de gestion de bases de données relationnelles
|
# Système de gestion de bases de données relationnelles
|
||||||
|
|
||||||
Les bases de données relationnelles sont un élément clé de la gestion de données dans de nombreuses applications informatiques. Elles fournissent une structure organisée pour stocker, gérer et récupérer des informations.
|
Les bases de données relationnelles sont un élément clé de la gestion de données dans de nombreuses applications informatiques. Elles fournissent une structure organisée pour stocker, gérer et récupérer des informations.
|
||||||
|
|
||||||
|
|||||||
6
sql.md
6
sql.md
@@ -7,9 +7,3 @@ SQL est largement utilisé dans le domaine des bases de données et joue un rôl
|
|||||||
Tous les SGBDR implément le langage SQL mais chacun l'a agrémenté d'extensions et de modifications non standard pour se démarquer des concurents.
|
Tous les SGBDR implément le langage SQL mais chacun l'a agrémenté d'extensions et de modifications non standard pour se démarquer des concurents.
|
||||||
|
|
||||||
Le langage SQL est décomposé en 4 sous ensembles de commandes
|
Le langage SQL est décomposé en 4 sous ensembles de commandes
|
||||||
|
|
||||||
- [DATA DEFINITION LANGAGE](ddl) (DDL)
|
|
||||||
- [DATA QUERY LANGAGE](dql) (DQL)
|
|
||||||
- [DATA MANIPULATION LANGAGE](dml) (DML)
|
|
||||||
- [DATA CONTROL LANGAGE](dcl) (DCL)
|
|
||||||
- [TRANSACTION CONTROL LANGAGE](tcl) (TCL)
|
|
||||||
|
|||||||
25
td1.md
25
td1.md
@@ -1,27 +1,32 @@
|
|||||||
---
|
# Travaux dirigés
|
||||||
title: Travaux dirigés
|
|
||||||
---
|
|
||||||
|
|
||||||
## Schéma entités-relations
|
## Schéma entités-relations
|
||||||
|
|
||||||
Le schéma entité-relation est l'étape préparatoire à la réalisation d'une base de données. il modélise sous forme graphique un problème réel.
|
Le schéma entité-relation est l'étape préparatoire à la réalisation d'une base de données. il modélise sous forme graphique un problème réel.
|
||||||
|
|
||||||
|
### Exercice 1. Association
|
||||||
|
|
||||||
### Exercice 1. Société de transport
|
Une association est constituée d'adhérent. Un "marché" biologique est mis en place à destination de ces adhérents. Différents produits sont vendus. Les produits sont organisés en famille. Les adhérent viennent acheter des produits. Un ticket de caisse est édité.
|
||||||
|
|
||||||
Une société de transport possède une flotte de camion et plusieurs entrepots.
|
Amélioration 1 : Les différents produits sont achetés chez des fournisseurs.
|
||||||
|
|
||||||
|
Amélioration 2 : Un même produit peut être approvisionné chez plusieurs fournisseurs.
|
||||||
|
|
||||||
|
### Exercice 2. Société de transport
|
||||||
|
|
||||||
|
Une société de transport possède une flotte de camion et plusieurs entrepots.
|
||||||
|
|
||||||
Cette société embauche des chauffeurs. Les camions sont basés à des entrepôts. Les camions sont affectés aux chauffeurs au jour le jour.
|
Cette société embauche des chauffeurs. Les camions sont basés à des entrepôts. Les camions sont affectés aux chauffeurs au jour le jour.
|
||||||
|
|
||||||
La nature du permis limite les camions que le chauffeur peut conduire.
|
La nature du permis limite les camions que le chauffeur peut conduire.
|
||||||
|
|
||||||
### Exercice 2. système de maintenance
|
### Exercice 3. système de maintenance
|
||||||
|
|
||||||
Une société possède un parc de machine. Ces machines sont placés dans des ateliers et les ateliers appartiennent à des sites (lieux) de fabrication. Une machine est caractérisée par sa marque et sa date d'achat. Les opérations de maintenance sont des cycles d'opérations à effectuer régulièrement sur une machine. Des opérateurs conduisent ces opérations et notent les résultats.
|
Une société possède un parc de machine. Ces machines sont placés dans des ateliers et les ateliers appartiennent à des sites (lieux) de fabrication. Une machine est caractérisée par sa marque et sa date d'achat. Les opérations de maintenance sont des cycles d'opérations à effectuer régulièrement sur une machine. Des opérateurs conduisent ces opérations et notent les résultats.
|
||||||
|
|
||||||
### Exercice 3. ERP (Enterprise resource planning)
|
### Exercice 4. ERP (Enterprise resource planning)
|
||||||
|
|
||||||
Uns société achète des articles pour fabriquer des produits finis.
|
Uns société achète des articles pour fabriquer des produits finis.
|
||||||
|
|
||||||
Un entrepôt permet de stocker à la fois les articles et les produits finis.
|
Un entrepôt permet de stocker à la fois les articles et les produits finis.
|
||||||
|
|
||||||
@@ -33,10 +38,10 @@ Nom Nom Nom Article Produit Fini A
|
|||||||
Prix d'achat Prix vente Nom Produit Fini Quantite Produit f
|
Prix d'achat Prix vente Nom Produit Fini Quantite Produit f
|
||||||
Quantité Date
|
Quantité Date
|
||||||
|
|
||||||
******
|
******
|
||||||
Produit Gamme de fabrication Production Stockage
|
Produit Gamme de fabrication Production Stockage
|
||||||
Nom Produit Produit Produit
|
Nom Produit Produit Produit
|
||||||
Prix Produit Quantité Quantité
|
Prix Produit Quantité Quantité
|
||||||
fini (o/n) Quantité Date
|
fini (o/n) Quantité Date
|
||||||
|
|
||||||
Activer les contraintes dans SQLite
|
Activer les contraintes dans SQLite
|
||||||
|
|||||||
90
td2.md
90
td2.md
@@ -1,8 +1,6 @@
|
|||||||
---
|
# Travaux dirigés
|
||||||
title: Travaux dirigés
|
|
||||||
---
|
|
||||||
|
|
||||||
### 1. Nombre de clients
|
## 1. Nombre de clients
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
select count(*) from customers;
|
select count(*) from customers;
|
||||||
@@ -36,44 +34,44 @@ select country, count(*) from customers group by Country order by count(*) desc;
|
|||||||
### 6. Nombre de pistes par genre
|
### 6. Nombre de pistes par genre
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
select g.Name, count(*) as nb from tracks t
|
select g.Name, count(*) as nb from tracks t
|
||||||
inner join genres g on g.GenreId = t.GenreId
|
inner join genres g on g.GenreId = t.GenreId
|
||||||
group by g.GenreId order by nb desc;
|
group by g.GenreId order by nb desc;
|
||||||
```
|
```
|
||||||
|
|
||||||
### 7. Nombre d'albums par artiste
|
### 7. Nombre d'albums par artiste
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
select a.Name, count(*) as nb from artists a
|
select a.Name, count(*) as nb from artists a
|
||||||
inner join albums b on b.ArtistId = a.ArtistId
|
inner join albums b on b.ArtistId = a.ArtistId
|
||||||
group by a.Name order by nb desc;
|
group by a.Name order by nb desc;
|
||||||
```
|
```
|
||||||
|
|
||||||
### 8. Nombre de piste par artiste
|
### 8. Nombre de piste par artiste
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
select a.Name, count(*) as nb from artists a
|
select a.Name, count(*) as nb from artists a
|
||||||
inner join albums b on a2.ArtistId = a.ArtistId
|
inner join albums b on a2.ArtistId = a.ArtistId
|
||||||
inner join tracks t on t.AlbumId = b.AlbumId
|
inner join tracks t on t.AlbumId = b.AlbumId
|
||||||
group by a.Name
|
group by a.Name
|
||||||
order by nb desc;
|
order by nb desc;
|
||||||
```
|
```
|
||||||
|
|
||||||
### 9. Nombre de minute de musique par album
|
### 9. Nombre de minute de musique par album
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
select a.Title , sum(t.Milliseconds/60000) as duree
|
select a.Title , sum(t.Milliseconds/60000) as duree
|
||||||
from tracks t
|
from tracks t
|
||||||
inner join albums a on a.AlbumId = t.AlbumId
|
inner join albums a on a.AlbumId = t.AlbumId
|
||||||
group by a.Title
|
group by a.Title
|
||||||
order by duree desc;
|
order by duree desc;
|
||||||
```
|
```
|
||||||
|
|
||||||
### 10. Recette par piste
|
### 10. Recette par piste
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
select t.Name, sum(ii.UnitPrice*ii.Quantity) as recette
|
select t.Name, sum(ii.UnitPrice*ii.Quantity) as recette
|
||||||
from tracks t
|
from tracks t
|
||||||
inner join invoice_items ii on ii.TrackId = t.TrackId
|
inner join invoice_items ii on ii.TrackId = t.TrackId
|
||||||
group by t.Name order by recette desc;
|
group by t.Name order by recette desc;
|
||||||
```
|
```
|
||||||
@@ -82,10 +80,10 @@ group by t.Name order by recette desc;
|
|||||||
|
|
||||||
```sql
|
```sql
|
||||||
select a.Title, sum(ii.UnitPrice*ii.Quantity) as recette
|
select a.Title, sum(ii.UnitPrice*ii.Quantity) as recette
|
||||||
from tracks t
|
from tracks t
|
||||||
inner join invoice_items ii on (ii.TrackId = t.TrackId)
|
inner join invoice_items ii on (ii.TrackId = t.TrackId)
|
||||||
inner join albums a on a.AlbumId = t.AlbumId
|
inner join albums a on a.AlbumId = t.AlbumId
|
||||||
group by a.Title
|
group by a.Title
|
||||||
order by recette desc;
|
order by recette desc;
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -94,20 +92,20 @@ order by recette desc;
|
|||||||
```sql
|
```sql
|
||||||
select c.FirstName, c.LastName, sum(i.Total) as total
|
select c.FirstName, c.LastName, sum(i.Total) as total
|
||||||
from customers c
|
from customers c
|
||||||
inner join invoices i on i.CustomerId = c.CustomerId
|
inner join invoices i on i.CustomerId = c.CustomerId
|
||||||
GROUP by c.CustomerId
|
GROUP by c.CustomerId
|
||||||
order by total DESC
|
order by total DESC
|
||||||
limit 3;
|
limit 3;
|
||||||
```
|
```
|
||||||
|
|
||||||
### 11. Les genres écoutés par Isabelle Mercier
|
### 11. Les genres écoutés par Isabelle Mercier
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
select distinct g.Name from genres g
|
select distinct g.Name from genres g
|
||||||
inner join tracks t on t.GenreId = g.GenreId
|
inner join tracks t on t.GenreId = g.GenreId
|
||||||
inner join invoice_items ii on ii.TrackId = t.TrackId
|
inner join invoice_items ii on ii.TrackId = t.TrackId
|
||||||
inner join invoices i on ii.InvoiceId = i.InvoiceId
|
inner join invoices i on ii.InvoiceId = i.InvoiceId
|
||||||
inner join customers c on c.CustomerId = i.CustomerId
|
inner join customers c on c.CustomerId = i.CustomerId
|
||||||
where c.FirstName = 'Isabelle' and c.LastName ='Mercier';
|
where c.FirstName = 'Isabelle' and c.LastName ='Mercier';
|
||||||
```
|
```
|
||||||
Attention l'égalité est stricte sur FirstName et LastName (respect des majuscules / minuscules)
|
Attention l'égalité est stricte sur FirstName et LastName (respect des majuscules / minuscules)
|
||||||
@@ -123,27 +121,27 @@ select sum(i.Total) from invoices i where i.InvoiceDate > DATETIME('2013-05-01')
|
|||||||
### 13. Recette entre le 15/04/2012 et le 20/06/2012
|
### 13. Recette entre le 15/04/2012 et le 20/06/2012
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
select sum(i.Total)
|
select sum(i.Total)
|
||||||
from invoices i
|
from invoices i
|
||||||
where i.InvoiceDate between DATETIME('2012-04-15') and DATETIME('2012-06-20');
|
where i.InvoiceDate between DATETIME('2012-04-15') and DATETIME('2012-06-20');
|
||||||
```
|
```
|
||||||
|
|
||||||
### 14. Recette du mois de février 2012
|
### 14. Recette du mois de février 2012
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
select sum(i.Total)
|
select sum(i.Total)
|
||||||
from invoices i
|
from invoices i
|
||||||
where STRFTIME('%m/%Y', i.InvoiceDate) = '02/2012'
|
where STRFTIME('%m/%Y', i.InvoiceDate) = '02/2012'
|
||||||
```
|
```
|
||||||
|
|
||||||
STRFTIME (string from datetime) permet de formater au format de texte un date. Le format est complètement libre et personnalisable.
|
STRFTIME (string from datetime) permet de formater au format de texte un date. Le format est complètement libre et personnalisable.
|
||||||
|
|
||||||
### 15. Recettes par mois
|
### 15. Recettes par mois
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
select STRFTIME('%Y-%m', i.InvoiceDate) as mois,
|
select STRFTIME('%Y-%m', i.InvoiceDate) as mois,
|
||||||
sum(i.Total)
|
sum(i.Total)
|
||||||
from invoices i
|
from invoices i
|
||||||
group by mois
|
group by mois
|
||||||
order by mois
|
order by mois
|
||||||
```
|
```
|
||||||
@@ -151,8 +149,8 @@ order by mois
|
|||||||
### 16. Recette de l'année 2013
|
### 16. Recette de l'année 2013
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
select sum(i.Total)
|
select sum(i.Total)
|
||||||
from invoices i
|
from invoices i
|
||||||
where STRFTIME('%Y', i.InvoiceDate) = '2013'
|
where STRFTIME('%Y', i.InvoiceDate) = '2013'
|
||||||
```
|
```
|
||||||
## Recherche sur le texte
|
## Recherche sur le texte
|
||||||
@@ -160,7 +158,7 @@ where STRFTIME('%Y', i.InvoiceDate) = '2013'
|
|||||||
### 17. Liste des pistes qui contiennent le mot Love
|
### 17. Liste des pistes qui contiennent le mot Love
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
select t.Name from tracks t
|
select t.Name from tracks t
|
||||||
where t.NAME LIKE '%love%';
|
where t.NAME LIKE '%love%';
|
||||||
```
|
```
|
||||||
L'opérateur LIKE ne tient pas compte de la différence minuscule/majuscule
|
L'opérateur LIKE ne tient pas compte de la différence minuscule/majuscule
|
||||||
@@ -168,16 +166,16 @@ L'opérateur LIKE ne tient pas compte de la différence minuscule/majuscule
|
|||||||
### 18. Liste des pistes qui contiennent les lettres Sun
|
### 18. Liste des pistes qui contiennent les lettres Sun
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
select t.Name from tracks t
|
select t.Name from tracks t
|
||||||
where t.NAME LIKE '%SUN%';
|
where t.NAME LIKE '%SUN%';
|
||||||
```
|
```
|
||||||
|
|
||||||
### 19. Liste des pistes qui contiennent le mot Sun
|
### 19. Liste des pistes qui contiennent le mot Sun
|
||||||
|
|
||||||
```sql
|
```sql
|
||||||
select t.Name from tracks t
|
select t.Name from tracks t
|
||||||
where t.NAME LIKE 'SUN %' OR
|
where t.NAME LIKE 'SUN %' OR
|
||||||
t.NAME LIKE '% SUN' OR
|
t.NAME LIKE '% SUN' OR
|
||||||
t.NAME LIKE '% SUN %';
|
t.NAME LIKE '% SUN %';
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -189,8 +187,8 @@ where t.NAME LIKE 'SUN %' OR
|
|||||||
select i.Total, sum(ii.UnitPrice*ii.Quantity) as somme,
|
select i.Total, sum(ii.UnitPrice*ii.Quantity) as somme,
|
||||||
printf('%.20f', i.Total - sum(ii.UnitPrice*ii.Quantity))
|
printf('%.20f', i.Total - sum(ii.UnitPrice*ii.Quantity))
|
||||||
from invoices i
|
from invoices i
|
||||||
inner join invoice_items ii on ii.InvoiceId = i.InvoiceId
|
inner join invoice_items ii on ii.InvoiceId = i.InvoiceId
|
||||||
group by i.InvoiceId
|
group by i.InvoiceId
|
||||||
HAVING Abs(i.Total - somme) >= 0.01
|
HAVING Abs(i.Total - somme) >= 0.01
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -200,6 +198,6 @@ ou en utilisant ROUND : HAVING i.Total <> Round(somme,2)
|
|||||||
|
|
||||||
```sql
|
```sql
|
||||||
select t.Name from tracks t
|
select t.Name from tracks t
|
||||||
left join invoice_items ii on ii.TrackId = t.TrackId
|
left join invoice_items ii on ii.TrackId = t.TrackId
|
||||||
where t.UnitPrice <> ii.UnitPrice
|
where t.UnitPrice <> ii.UnitPrice
|
||||||
```
|
```
|
||||||
|
|||||||
Reference in New Issue
Block a user