Installez le fichier bddexe_01.sql
en désactivant les clefs étrangères en MySQL 5.7 ou en MariaDB .
Nous allons travailler dans Workbench sur le fichier nos-requetes.sql
.
Nous utilisons le moteur InnoDB.
Dictionnaire de données en pdf à télécharger .
- Relation many to many entre
news
etcateg
dans la tablenews_has_categ
, en CASCADE ON DELETE pour éviter la suppression manuelle du lien entre les news et les catégories (en cas de suppression d'une news ou d'une catégorie).
- Relation many to one entre
news
etuser
, en SET NULL ON DELETE pour permettre à un article de rester dans la DB si on supprime l'utilisateur (! le champnews.user_iduser
doit permettre le NULL)
- Relation many to one entre
user
etpermission
, SET NULL ON DELETE pour permettre à un utilisateur de rester dans la DB si on supprime une permission (! le champuser.permission_idpermission
doit permettre le NULL)
J'ai installé "Database Client for Visual Studio Code" pour pouvoir effectuer les requêtes depuis VSCode sans devoir lancer Workbench
Remplissez le contenu de enonce-exe1.sql
pour obtenir:
-- Sélectionnez tous les champs de categ
ordonnés par name
ascendant
-- Séléctionnez idcateg
et name
de categ
quand idcateg
vaut 4
-- Séléctionnez idcateg
et name
de categ
quand idcateg
se trouve entre 2 et 4
-- Séléctionnez idcateg
et name
de categ
quand idcateg
est 1, 3 ou 5 ordonné par name
descendant
-- Séléctionnez tous les champs de categ
quand desc
contient 'et' n'importe où dans la chaîne
-- Séléctionnez tous les champs de categ
dont l' idcateg
vaut 5 ainsi que les idnews
et title
de la table news
qui se trouvent dans cette catégorie, même si il n'y en a pas (présence de categ
dans tous les cas, 17 lignes de résultats) , ordonnés par news
.title
ASC
-- Séléctionnez tous les champs de categ
dont l' idcateg
vaut 5 ainsi que les idnews
et title
de la table news
qui se trouvent dans cette catégorie, même si il n'y en a pas (présence de categ
dans tous les cas, 6 lignes de résultats) , ordonnés par news
.title
ASC ET que news
.visible
vaut 1 !
-- Séléctionnez tous les champs de categ
dont l' idcateg
vaut 5 ainsi que les idnews
(concaténés sur une seul ligne avec la ',' comme séparateur) et title
(concaténés sur une seul ligne avec '|||' comme séparateur) de la table news
qui se trouvent dans cette catégorie, même si il n'y en a pas (présence de categ
dans tous les cas, 1 ligne de résultats) , ET que news
.visible
vaut 1 !
-- Séléctionnez idnews
et title
de la table news
lorsque le title
commence par 'c' (7 résultats)
-- Séléctionnez idnews
et title
de la table news
lorsque le title
commence par 'a' et visible
vaut 1 (10 résultats)
-- Séléctionnez idnews
et title
de la table news
, ainsi que les iduser
et login
de la table user
(seulement si il y a une jointure) lorsque le title
commence par 'a' et visible
vaut 1 (10 résultats)
-- Séléctionnez idnews
et title
de la table news
, ainsi que les iduser
et login
de la table user
(seulement si il y a une jointure) lorsque le title
commence par 'a' et visible
vaut 1 , classés par user
.login
ascendant (10 résultats)
-- Séléctionnez idnews
et title
de la table news
, ainsi que les iduser
et login
de la table user
(seulement si il y a une jointure) lorsque le title
commence par 'a' et visible
vaut 1 , classés par user
.login
ascendant en ne gardant que les 3 premiers résultats (3 résultats)
-- Séléctionnez idnews
et title
de la table news
, ainsi que les iduser
et login
de la table user
(seulement si il y a une jointure) lorsque le title
commence par 'a' et visible
vaut 1 , classés par user
.login
ascendant en ne gardant que les 3 derniers résultats (3 résultats)
-- Sélectionnez iduser
et login
de la table user
, avec le nombre d'articles écrit par chacun renommé nbarticles
, classés par nbarticles
descendant et en n'en gardant que les 5 premiers (5 résultats)