nsi:terminales:sql_requests
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| nsi:terminales:sql_requests [2021/08/20 15:08] – goupillwiki | nsi:terminales:sql_requests [2022/08/29 21:45] (Version actuelle) – goupillwiki | ||
|---|---|---|---|
| Ligne 15: | Ligne 15: | ||
| Afin d' | Afin d' | ||
| - | {{ :nsi: | + | {{ nsi: |
| Pour cette base, nous besoin de deux tables FILM et ARTISTE et aussi d'une table JOUEDANS pour la relation du haut : | Pour cette base, nous besoin de deux tables FILM et ARTISTE et aussi d'une table JOUEDANS pour la relation du haut : | ||
| Ligne 104: | Ligne 104: | ||
| Dans le texte de la biographie, vous pouvez voir la présence de caractères '' | Dans le texte de la biographie, vous pouvez voir la présence de caractères '' | ||
| - | ==== On ne précise pas la clé primaire ==== | + | <WRAP tip> |
| + | ==== Préciser ou non la clé primaire | ||
| - | '' | + | On a le choix : on peut décider de préciser un '' |
| + | |||
| + | <code sql> | ||
| + | INSERT INTO ARTISTE(idArtiste, | ||
| + | </ | ||
| + | |||
| + | et on précise l' | ||
| + | |||
| + | Puisque dans la requête précédente figurent toutes les colonnes de la table, on peut se contenter de : | ||
| + | |||
| + | <code sql> | ||
| + | INSERT INTO ARTISTE VALUES(129, 'Jo', ' | ||
| + | </ | ||
| + | |||
| + | Dans les sujets | ||
| + | </ | ||
| ==== Erreur si insertion de film sans idReal ==== | ==== Erreur si insertion de film sans idReal ==== | ||
| Ligne 210: | Ligne 226: | ||
| <WRAP box>Une base est construite par des milliers d' | <WRAP box>Une base est construite par des milliers d' | ||
| - | Vous disposez du fichier {{ :nsi: | + | Vous disposez du fichier {{ nsi: |
| </ | </ | ||
| Ligne 260: | Ligne 276: | ||
| === tri === | === tri === | ||
| - | Et on peut trier -- tri par naissance puis nom dans le premier cas, ordre descendant dans le second cas. | + | Et on peut trier : |
| + | * tri par naissance puis nom dans le premier cas, | ||
| + | * ordre descendant dans le second cas -- mot clé '' | ||
| <code sql linenums> | <code sql linenums> | ||
| Ligne 267: | Ligne 285: | ||
| </ | </ | ||
| + | <wrap important> | ||
| + | |||
| + | === compte === | ||
| + | |||
| + | On peut compter les items. Par exemple la requête suivante renvoie une liste de noms avec éventuellement des doublons : | ||
| + | |||
| + | <code sql> | ||
| + | SELECT nom from ARTISTE; | ||
| + | </ | ||
| + | |||
| + | Si nous n' | ||
| + | |||
| + | <code sql> | ||
| + | SELECT COUNT(nom) from ARTISTE; | ||
| + | </ | ||
| + | |||
| + | Cette requête est différente puisqu' | ||
| + | |||
| + | <WRAP tip>On compte tous les noms apparaissant, | ||
| + | |||
| + | <WRAP info> | ||
| + | |||
| + | Plus loin encore : on pourrait produire une liste avec chaque nom associé avec le nombre d' | ||
| ==== Jointure ==== | ==== Jointure ==== | ||
| Ligne 295: | Ligne 336: | ||
| <wrap important> | <wrap important> | ||
| - | ===== Des requêtes | + | <WRAP tip> |
| - | + | ||
| - | On utilise la base précédente. | + | |
| - | + | ||
| - | ==== Applications directes, sans jointure ==== | + | |
| - | + | ||
| - | - Lister tous les noms, prénoms, naissances d' | + | |
| - | - Lister tous les titreVO de films dont le réalisateur à l' | + | |
| - | - Lister tous les rôles joués par l' | + | |
| - | + | ||
| - | ==== Avec une jointure ==== | + | |
| - | + | ||
| - | - Lister tous les titreVO, année des films de Tarantino | + | |
| - | - Lister tous les rôles de Brad Pitt | + | |
| - | - (A) Lister tous les titreVO, année des films dans lequel a joué l' | + | |
| - | - Lister les noms et prénoms de tous les réalisateurs -- // | + | |
| - | + | ||
| - | ==== Avec deux jointures ==== | + | |
| - | + | ||
| - | Pour lier un artiste à un film en tant qu' | + | |
| <code sql linenums> | <code sql linenums> | ||
| - | ... FROM JOUEDANS | + | SELECT * FROM FILM, ARTISTE; |
| - | JOIN FILM ON FILM.idFilm = JOUEDANS.idFilm | + | |
| - | JOIN ARTISTE ON ARTISTE.idArtiste = JOUEDANS.idArtiste | + | |
| </ | </ | ||
| - | + | On obtient | |
| - | - (B) Trouver | + | |
| - | - Trouver tous les titreVO, année des films dont un acteur est né après 1970 | + | |
| - | + | ||
| - | <WRAP tip>La requête | + | |
| - | + | ||
| - | ==== Avec trois jointures... ==== | + | |
| - | + | ||
| - | Ça commence | + | |
| - | + | ||
| - | Si pour une paire acteur -- film, on veut en plus avoir le réalisateur du film, il faut en plus joindre FILM à ARTISTE selon la clé idRéal. Cette fois c'est plus difficile car ceci ne fonctionne pas : | + | |
| <code sql linenums> | <code sql linenums> | ||
| - | ... FROM JOUEDANS | + | SELECT * FROM FILM, ARTISTE WHERE FILM.idReal |
| - | JOIN FILM ON FILM.idFilm | + | |
| - | JOIN ARTISTE ON ARTISTE.idArtiste | + | |
| - | JOIN ARTISTE ON ARTISTE.idArtiste = FILM.idReal | + | |
| </ | </ | ||
| + | Ce qui revient à peu près au même que la jointure. | ||
| - | Car ARTISTE apparaît deux fois pour des raisons différentes. Il est possible | + | //Dans tous les cas, inutile de vous remplir la tête de code SQL. On souhaite surtout que vous sachiez écrire |
| + | </ | ||
| - | <code sql linenums> | ||
| - | ... FROM JOUEDANS | ||
| - | JOIN FILM ON FILM.idFilm = JOUEDANS.idFilm | ||
| - | JOIN ARTISTE acteur ON acteur.idArtiste = JOUEDANS.idArtiste | ||
| - | JOIN ARTISTE réalisateur ON réalisateur.idArtiste = FILM.idReal | ||
| - | </ | ||
| - | |||
| - | L' | ||
| - | |||
| - | Supposons que l'on veuille visualiser le nom d' | ||
| - | |||
| - | <code sql linenums> | ||
| - | SELECT nom, nom, titreVO FROM JOUEDANS | ||
| - | JOIN FILM ON FILM.idFilm = JOUEDANS.idFilm | ||
| - | JOIN ARTISTE acteur ON acteur.idArtiste = JOUEDANS.idArtiste | ||
| - | JOIN ARTISTE réalisateur ON réalisateur.idArtiste = FILM.idReal | ||
| - | </ | ||
| - | |||
| - | car les deux occurrences de '' | ||
| - | |||
| - | <code sql linenums> | ||
| - | SELECT acteur.nom, réalisateur.nom, | ||
| - | JOIN FILM ON FILM.idFilm = JOUEDANS.idFilm | ||
| - | JOIN ARTISTE acteur ON acteur.idArtiste = JOUEDANS.idArtiste | ||
| - | JOIN ARTISTE réalisateur ON réalisateur.idArtiste = FILM.idReal | ||
| - | </ | ||
| - | - Trouver tous les noms et prénoms, rôle et titreVO pour des acteurs jouant dans un film de Tarantino | ||
| - | - Trouver tous les noms, prénoms de réalisateurs d'un film dont dont un des acteurs est né après 1970 | ||
nsi/terminales/sql_requests.1629464892.txt.gz · Dernière modification : de goupillwiki
