Outils pour utilisateurs

Outils du site


nsi:terminales:sql_requests

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
nsi:terminales:sql_requests [2021/10/22 23:35] – ↷ Page déplacée de nsi:tds:serveur_web20:nsi:terminales:sql_requests à nsi:terminales:sql_requests goupillwikinsi:terminales:sql_requests [2022/08/29 21:45] (Version actuelle) goupillwiki
Ligne 15: Ligne 15:
 Afin d'illustrer notre travail, on utilisera un exemple. Afin d'illustrer notre travail, on utilisera un exemple.
  
-{{ :nsi:terminales:sql-1.png?direct&400 |}}+{{ nsi:terminales:database:sql-1.png?direct&400 |}}
  
 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 ''%%'%%'', mais ces caractères servent à délimiter les chaînes de texte... La convention est de doubler les ''%%'%%'' pour qu'ils soient compris comme une simple apostrophe. C'est pourquoi vous pouvez voir des ''%%''%%'' ici et là dans la biographie. Dans le texte de la biographie, vous pouvez voir la présence de caractères ''%%'%%'', mais ces caractères servent à délimiter les chaînes de texte... La convention est de doubler les ''%%'%%'' pour qu'ils soient compris comme une simple apostrophe. C'est pourquoi vous pouvez voir des ''%%''%%'' ici et là dans la biographie.
  
-==== On ne précise pas la clé primaire ====+<WRAP tip> 
 +==== Préciser ou non la clé primaire ====
  
-''idArtiste'' est la clé primaireelle se crée toute seulenous n'avons pas besoin de la préciser.+On a le choix : on peut décider de préciser un ''idArtiste''. Dans ce cas on pourra écrire 
 + 
 +<code sql> 
 +INSERT INTO ARTISTE(idArtiste, prénom, nom, biographie, naissance) VALUES(129, 'Jo', 'Bill', 'blablabla', '1955-03-19'); 
 +</code> 
 + 
 +et on précise l'identifiant voulu **à condition qu'il ne soit pas déjà utilisé**. 
 + 
 +Puisque dans la requête précédente figurent toutes les colonnes de la tableon peut se contenter de : 
 + 
 +<code sql> 
 +INSERT INTO ARTISTE VALUES(129, 'Jo', 'Bill', 'blablabla', '1955-03-19'); 
 +</code> 
 + 
 +Dans les sujets de bac, l'identifiant est précisé en général. Mais dans un cas d'utilisation réelle, il sera sans doute plus pratique de laisser le SGBD automatiquement identifiant : sans cela il faudrait d'abord consulter la BDD pour savoir quel identifiant est disponible... 
 +</WRAP>
  
 ==== 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'insertions individuelles. On ne va donc pas le faire et nous allons continuer à travailler avec une base déjà faite. <WRAP box>Une base est construite par des milliers d'insertions individuelles. On ne va donc pas le faire et nous allons continuer à travailler avec une base déjà faite.
  
-Vous disposez du fichier {{ :nsi:terminales:films.sql |}} qui contient toutes les commandes pour créer une base de donnée. Dans //sqlitebrowser// vous pouvez importer un fichier ''*.sql''. <wrap tip>Fichier -> Importer -> Base de données à partir du fichier SQL...</wrap>+Vous disposez du fichier {{ nsi:terminales:database:films.sql |}} qui contient toutes les commandes pour créer une base de donnée. Dans //sqlitebrowser// vous pouvez importer un fichier ''*.sql''. <wrap tip>Fichier -> Importer -> Base de données à partir du fichier SQL...</wrap>
 </WRAP> </WRAP>
  
Ligne 319: Ligne 335:
  
 <wrap important>ORDER BY doit être après WHERE</wrap> <wrap important>ORDER BY doit être après WHERE</wrap>
 +
 +<WRAP tip>**Autre façon de faire :** Si on écrit
 +<code sql linenums>
 +SELECT * FROM FILM, ARTISTE;
 +</code>
 +On obtient tous les couples ''(FILM, ARTISTE)'' même s'ils n'ont rien à voir l'un avec l'autre. Si on ne veut que les paires où l'artiste est le réalisateur du film, on peut préciser :
 +<code sql linenums>
 +SELECT * FROM FILM, ARTISTE WHERE FILM.idReal = ARTISTE.idArtiste;
 +</code>
 +Ce qui revient à peu près au même que la  jointure.
 +
 +//Dans tous les cas, inutile de vous remplir la tête de code SQL. On souhaite surtout que vous sachiez écrire des requêtes simples et que vous arriviez à comprendre. La requête précédente, même si elle n'est pas facile de la trouver tout seul, ne devrait pas être trop difficile à comprendre.//
 +</WRAP>
 +
 +
nsi/terminales/sql_requests.1634938539.txt.gz · Dernière modification : de goupillwiki