td
17
bdd.md
17
bdd.md
@@ -81,12 +81,17 @@ RDBMS
|
||||
- Les [formes normales](formes_normales)
|
||||
- Le [schéma entité-relation](schema)
|
||||
- Le [langage SQL](sql)
|
||||
- Les [jointures](jointure)
|
||||
- Les [déclencheurs](trigger)
|
||||
- Les [vues](vues)
|
||||
- Le principe [ACID](acid)
|
||||
- Les [transactions](tcl)
|
||||
- Le [format JSON](json)
|
||||
- [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)
|
||||
- Les [jointures](jointure)
|
||||
- Les [déclencheurs](trigger)
|
||||
- Les [vues](vues)
|
||||
- Le principe [ACID](acid)
|
||||
- Les [transactions](tcl)
|
||||
- Le [format JSON](json)
|
||||
|
||||
### 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.
|
||||
|
||||
|
||||
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.
|
||||
|
||||
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 @@
|
||||
---
|
||||
title: Travaux dirigés
|
||||
---
|
||||
# Travaux dirigés
|
||||
|
||||
## 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.
|
||||
|
||||
### 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.
|
||||
|
||||
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.
|
||||
|
||||
### 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.
|
||||
|
||||
@@ -33,10 +38,10 @@ Nom Nom Nom Article Produit Fini A
|
||||
Prix d'achat Prix vente Nom Produit Fini Quantite Produit f
|
||||
Quantité Date
|
||||
|
||||
******
|
||||
******
|
||||
Produit Gamme de fabrication Production Stockage
|
||||
Nom Produit Produit Produit
|
||||
Prix Produit Quantité Quantité
|
||||
Prix Produit Quantité Quantité
|
||||
fini (o/n) Quantité Date
|
||||
|
||||
Activer les contraintes dans SQLite
|
||||
|
||||
90
td2.md
90
td2.md
@@ -1,8 +1,6 @@
|
||||
---
|
||||
title: Travaux dirigés
|
||||
---
|
||||
# Travaux dirigés
|
||||
|
||||
### 1. Nombre de clients
|
||||
## 1. Nombre de clients
|
||||
|
||||
```sql
|
||||
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
|
||||
|
||||
```sql
|
||||
select g.Name, count(*) as nb from tracks t
|
||||
inner join genres g on g.GenreId = t.GenreId
|
||||
select g.Name, count(*) as nb from tracks t
|
||||
inner join genres g on g.GenreId = t.GenreId
|
||||
group by g.GenreId order by nb desc;
|
||||
```
|
||||
|
||||
### 7. Nombre d'albums par artiste
|
||||
|
||||
```sql
|
||||
select a.Name, count(*) as nb from artists a
|
||||
inner join albums b on b.ArtistId = a.ArtistId
|
||||
select a.Name, count(*) as nb from artists a
|
||||
inner join albums b on b.ArtistId = a.ArtistId
|
||||
group by a.Name order by nb desc;
|
||||
```
|
||||
|
||||
### 8. Nombre de piste par artiste
|
||||
|
||||
```sql
|
||||
select a.Name, count(*) as nb from artists a
|
||||
inner join albums b on a2.ArtistId = a.ArtistId
|
||||
inner join tracks t on t.AlbumId = b.AlbumId
|
||||
group by a.Name
|
||||
select a.Name, count(*) as nb from artists a
|
||||
inner join albums b on a2.ArtistId = a.ArtistId
|
||||
inner join tracks t on t.AlbumId = b.AlbumId
|
||||
group by a.Name
|
||||
order by nb desc;
|
||||
```
|
||||
|
||||
### 9. Nombre de minute de musique par album
|
||||
|
||||
```sql
|
||||
select a.Title , sum(t.Milliseconds/60000) as duree
|
||||
from tracks t
|
||||
inner join albums a on a.AlbumId = t.AlbumId
|
||||
group by a.Title
|
||||
select a.Title , sum(t.Milliseconds/60000) as duree
|
||||
from tracks t
|
||||
inner join albums a on a.AlbumId = t.AlbumId
|
||||
group by a.Title
|
||||
order by duree desc;
|
||||
```
|
||||
|
||||
### 10. Recette par piste
|
||||
|
||||
```sql
|
||||
select t.Name, sum(ii.UnitPrice*ii.Quantity) as recette
|
||||
from tracks t
|
||||
select t.Name, sum(ii.UnitPrice*ii.Quantity) as recette
|
||||
from tracks t
|
||||
inner join invoice_items ii on ii.TrackId = t.TrackId
|
||||
group by t.Name order by recette desc;
|
||||
```
|
||||
@@ -82,10 +80,10 @@ group by t.Name order by recette desc;
|
||||
|
||||
```sql
|
||||
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 albums a on a.AlbumId = t.AlbumId
|
||||
group by a.Title
|
||||
inner join albums a on a.AlbumId = t.AlbumId
|
||||
group by a.Title
|
||||
order by recette desc;
|
||||
```
|
||||
|
||||
@@ -94,20 +92,20 @@ order by recette desc;
|
||||
```sql
|
||||
select c.FirstName, c.LastName, sum(i.Total) as total
|
||||
from customers c
|
||||
inner join invoices i on i.CustomerId = c.CustomerId
|
||||
GROUP by c.CustomerId
|
||||
order by total DESC
|
||||
inner join invoices i on i.CustomerId = c.CustomerId
|
||||
GROUP by c.CustomerId
|
||||
order by total DESC
|
||||
limit 3;
|
||||
```
|
||||
|
||||
### 11. Les genres écoutés par Isabelle Mercier
|
||||
|
||||
```sql
|
||||
select distinct g.Name from genres g
|
||||
inner join tracks t on t.GenreId = g.GenreId
|
||||
inner join invoice_items ii on ii.TrackId = t.TrackId
|
||||
inner join invoices i on ii.InvoiceId = i.InvoiceId
|
||||
inner join customers c on c.CustomerId = i.CustomerId
|
||||
select distinct g.Name from genres g
|
||||
inner join tracks t on t.GenreId = g.GenreId
|
||||
inner join invoice_items ii on ii.TrackId = t.TrackId
|
||||
inner join invoices i on ii.InvoiceId = i.InvoiceId
|
||||
inner join customers c on c.CustomerId = i.CustomerId
|
||||
where c.FirstName = 'Isabelle' and c.LastName ='Mercier';
|
||||
```
|
||||
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
|
||||
|
||||
```sql
|
||||
select sum(i.Total)
|
||||
from invoices i
|
||||
select sum(i.Total)
|
||||
from invoices i
|
||||
where i.InvoiceDate between DATETIME('2012-04-15') and DATETIME('2012-06-20');
|
||||
```
|
||||
|
||||
### 14. Recette du mois de février 2012
|
||||
|
||||
```sql
|
||||
select sum(i.Total)
|
||||
from invoices i
|
||||
select sum(i.Total)
|
||||
from invoices i
|
||||
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
|
||||
|
||||
```sql
|
||||
select STRFTIME('%Y-%m', i.InvoiceDate) as mois,
|
||||
sum(i.Total)
|
||||
from invoices i
|
||||
from invoices i
|
||||
group by mois
|
||||
order by mois
|
||||
```
|
||||
@@ -151,8 +149,8 @@ order by mois
|
||||
### 16. Recette de l'année 2013
|
||||
|
||||
```sql
|
||||
select sum(i.Total)
|
||||
from invoices i
|
||||
select sum(i.Total)
|
||||
from invoices i
|
||||
where STRFTIME('%Y', i.InvoiceDate) = '2013'
|
||||
```
|
||||
## Recherche sur le texte
|
||||
@@ -160,7 +158,7 @@ where STRFTIME('%Y', i.InvoiceDate) = '2013'
|
||||
### 17. Liste des pistes qui contiennent le mot Love
|
||||
|
||||
```sql
|
||||
select t.Name from tracks t
|
||||
select t.Name from tracks t
|
||||
where t.NAME LIKE '%love%';
|
||||
```
|
||||
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
|
||||
|
||||
```sql
|
||||
select t.Name from tracks t
|
||||
select t.Name from tracks t
|
||||
where t.NAME LIKE '%SUN%';
|
||||
```
|
||||
|
||||
### 19. Liste des pistes qui contiennent le mot Sun
|
||||
|
||||
```sql
|
||||
select t.Name from tracks t
|
||||
where t.NAME LIKE 'SUN %' OR
|
||||
t.NAME LIKE '% SUN' OR
|
||||
select t.Name from tracks t
|
||||
where t.NAME LIKE 'SUN %' OR
|
||||
t.NAME LIKE '% SUN' OR
|
||||
t.NAME LIKE '% SUN %';
|
||||
```
|
||||
|
||||
@@ -189,8 +187,8 @@ where t.NAME LIKE 'SUN %' OR
|
||||
select i.Total, sum(ii.UnitPrice*ii.Quantity) as somme,
|
||||
printf('%.20f', i.Total - sum(ii.UnitPrice*ii.Quantity))
|
||||
from invoices i
|
||||
inner join invoice_items ii on ii.InvoiceId = i.InvoiceId
|
||||
group by i.InvoiceId
|
||||
inner join invoice_items ii on ii.InvoiceId = i.InvoiceId
|
||||
group by i.InvoiceId
|
||||
HAVING Abs(i.Total - somme) >= 0.01
|
||||
```
|
||||
|
||||
@@ -200,6 +198,6 @@ ou en utilisant ROUND : HAVING i.Total <> Round(somme,2)
|
||||
|
||||
```sql
|
||||
select t.Name from tracks t
|
||||
left join invoice_items ii on ii.TrackId = t.TrackId
|
||||
where t.UnitPrice <> ii.UnitPrice
|
||||
left join invoice_items ii on ii.TrackId = t.TrackId
|
||||
where t.UnitPrice <> ii.UnitPrice
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user