Outils pour utilisateurs

Outils du site


les_fiches_revisions:bases_de_donnees:sql

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édentes Révision précédente
Prochaine révision
Révision précédente
Dernière révision Les deux révisions suivantes
les_fiches_revisions:bases_de_donnees:sql [2021/12/26 14:32]
ma
les_fiches_revisions:bases_de_donnees:sql [2023/01/18 09:53]
hk
Ligne 1: Ligne 1:
 ======Langage SQL : requêtes d’interrogation et de mise à jour d’une base de données====== ======Langage SQL : requêtes d’interrogation et de mise à jour d’une base de données======
  
 +Si vous ne comprenez pas le résumé, cliquez sur la commande qui vous conduira a sa page sur ce wiki.
  
-=====I. Création d'une base de donnée (sur DB Browser for SQLite)=====+ 
 +=====I. Résumé===== 
 + 
 + 
 +[[les_fiches_revisions:bases_de_donnees:sql#III. Créer une relation|*CREATE TABLE*]] => Créer une relation 
 +<code sql> 
 +CREATE TABLE nom 
 +(attribut1 domaine1, attribut2 domaine2); 
 +</code> 
 + 
 +[[les_fiches_revisions:bases_de_donnees:sql#A) SELECT|*SELECT*]] => Montre la relation 
 +<code sql> 
 +SELECT attributs 
 +FROM table1 
 +</code> 
 + 
 +[[les_fiches_revisions:bases_de_donnees:sql#B) SELECT DISTINCT|*SELECT DISTINCT*]] => Montre la relation sans doublons 
 +<code sql> 
 +SELECT DISTINCT attribut 
 +FROM nom_table 
 +</code> 
 + 
 +[[les_fiches_revisions:bases_de_donnees:sql#C) WHERE|*WHERE*]] => Ajout de conditions ("filtre") - Ajouté à **SELECT**, **UPDATE** et **REMOVE** 
 +<code sql> 
 +WHERE condition 
 + 
 +WHERE condition1 AND condition2 
 + 
 +WHERE condition1 OR condition2 
 +</code> 
 + 
 +Rappel: Les //conditions// sont sous cette forme:  attribut=valeur 
 + 
 +[[les_fiches_revisions:bases_de_donnees:sql#D) ORDER BY|*ORDER BY*]] => Ajout à **SELECT** pour trier 
 +<code sql> 
 +ORDER BY attribut 
 + 
 +ORDER BY attribut1, attribut2 
 + 
 +ORDER BY attribut DESC 
 +</code> 
 + 
 +[[les_fiches_revisions:bases_de_donnees:sql#E) JOIN|*INNER JOIN*]] => Jointure de deux bases de donnée - Ajout à **SELECT** 
 +<code sql> 
 +SELECT attributs 
 +FROM table1 
 +INNER JOIN table2 ON table1.attribut = table2.attribut 
 +</code> 
 + 
 +**SELECT complexe** - Exemple 
 +<code sql> 
 +SELECT attributs 
 +FROM table1 
 +INNER JOIN table2 ON table1.attribut = table2.attribut 
 +WHERE condition1 AND (condition2 OR condition3) 
 +ORDER BY table1.attribut, table2.attribut DESC 
 +</code> 
 + 
 +[[les_fiches_revisions:bases_de_donnees:sql#A) INSERT|*INSERT*]] => Ajoute des lignes à une relation 
 +<code sql> 
 +INSERT INTO nom_table 
 +(attribut1, attribut2, attribut3) 
 +VALUES 
 +("valeur1", "valeur2", "valeur3"
 +</code> 
 + 
 +[[les_fiches_revisions:bases_de_donnees:sql#B) UPDATE|*UPDATE*]] => Change certaines lignes d'une relation 
 +<code sql> 
 +UPDATE nom_table 
 +SET attribut1="valeur1", attribut2="valeur2" 
 +WHERE condition 
 +</code> 
 + 
 +[[les_fiches_revisions:bases_de_donnees:sql#C) DELETE|*DELETE*]] => Supprimes certaines lignes d'une relation 
 +<code sql> 
 +DELETE FROM nom_table 
 +WHERE condition 
 +</code> 
 + 
 + 
 +=====II. Création d'une base de donnée (sur DB Browser for SQLite)=====
  
   - Allumez //DB Browser for SQLite//   - Allumez //DB Browser for SQLite//
Ligne 37: Ligne 118:
  
  
-=====II. Créer une relation=====+=====III. Créer une relation=====
 **CREATE TABLE** est la commande qui permet de créer un relation, en lui attribuant des attributs et leur domaine **CREATE TABLE** est la commande qui permet de créer un relation, en lui attribuant des attributs et leur domaine
  
Ligne 62: Ligne 143:
  
  
 +=====IV. Visualiser une relation=====
 +
 +
 +====A) SELECT====
 +
 +Cette commande permet de voir une relation (sous forme de tableau). 
 +D'autres commandes peuvent être rajouter en plus pour rajouter des spécification sur quel élément à afficher
 +
 +===1. Code===
 +
 +<code sql>
 +SELECT attribut1, attribut2
 +FROM nom_table
 +</code>
 +
 +__Attribut :explication 
 +
 +__nom_table :__ Le nom de la relation qui sera affiché
 + 
 +
 +===2. Exemples===
 +
 +==a) Avec *==
 +
 +Pour voir toutes les charactéristiques des abonnements
 +<code sql>
 +SELECT *
 +FROM ABONNEMENT
 +</code>
 +
 +^  id  ^    nom    ^  prix  ^  durée_mois  ^  session  ^
 +|  1      Eco    |   10        27      |         |
 +|  2    Famille  |   15        27      |         |
 +|  3    Simple     20        12      |         |
 +|  4      Pro    |   40        24      |    20     |
 +
 +==b) Avec le nom d'une des colones (attribut)==
 +
 +Pour voir la liste des abonnements et leur prix
 +<code sql>
 +SELECT nom, prix
 +FROM ABONNEMENT
 +</code>
 +
 +^    nom    ^  prix  ^
 +|    Eco    |   10   |
 +|  Famille  |   15   |
 +|  Simple     20   |
 +|    Pro    |   40   |
 +
 +====B) SELECT DISTINCT====
 +
 +===1. Code===
 +
 +<code sql>
 +SELECT DISTINCT attribut
 +FROM nom_table
 +</code>
 +
 +===2. Exemple===
 +
 +
 +Pour voir la liste de toutes les villes dans lequel habite les clients sans les avoir en double
 +<code sql>
 +SELECT DISTINCT ville
 +FROM CLIENTS
 +</code>
 +
 +^  ville   ^
 +|  Paris   |
 +|  Nantes  |
 +|   Lyon   |
 +
 +====C) WHERE===
 +
 +===1. Code===
 +
 +<code sql>
 +SELECT attributs
 +FROM nom_table
 +WHERE condition
 +</code>
 +
 +===2. Conditions===
 +
 +==a) Les opérateurs==
 +
 +^  Opérateur  ^      Description       ^
 +|      =      |          Egal          |
 +|     !=      |        Pas egal        |
 +|      <      |      Inférieur à       |
 +|      >      |      Supérieur à       |
 +|     %%<=%%      |  Inférieur ou égale à  |
 +|     >     |  Supérieur ou égale à  |
 +
 +==b) Plusieurs conditions==
 +
 +En utilisant **AND** et **OR** il possible de préciser plusieurs conditions.
 +
 +<code sql>
 +condition1 AND condition2
 +</code>
 +
 +<code sql>
 +condition1 OR condition2
 +</code>
 +
 +===3. Exemple===
 +
 +Pour voir les clients vivant à Paris qui ont 30 ans ou plus
 +<code sql>
 +SELECT *
 +FROM CLIENTS
 +WHERE ville="Paris" AND age>=30
 +</code>
 +
 +^  id  ^  prenom  ^    nom      ville    age  ^  id_abonnement  ^
 +|  3     Marc     Duval    |  Paris    56          1        |
 +|  6     Anne    Lacroix    Paris    47          4        |
 +|  8    Marie     Arnaud    Paris    33          4        |
 +
 +
 +Pour voir le nom et prénom des clients qui ont plus 50 ans ou qui vive à Nantes
 +<code sql>
 +SELECT prenom, nom
 +FROM CLIENTS
 +WHERE age>50 OR ville="Nantes"
 +</code>
 +
 +^  prenom  ^    nom     ^
 +|   Jean     Simon    |
 +|   Marc     Duval    |
 +|   Paul     Ledoux   |
 +|  Chloé    Olivier   |
 +
 +====D) ORDER BY====
 +
 +===1. Code simple===
 +
 +<code sql>
 +SELECT attributs
 +FROM nom_table
 +ORDER BY attribut
 +</code>
 +
 +===2. Plusieurs conditions===
 +
 +**ORDER BY** va trier le tableau d'abbord par l'//attribut1// puis par l'//attribut2// puis enfin par l'//attribut3// etc...
 +
 +<code sql>
 +SELECT attributs
 +FROM nom_table
 +ORDER BY attribut1, attribut2, attribut3
 +</code>
 +
 +===3. Sens de "triage"===
 +
 +En rajoutant **DESC** ou **ASC**
 +
 +En rajoutant **DESC** après l'attribut il est possible de trier le tableau dans __l'ordre inverse__.\\
 +Si l'attribut à pour domaine **INT** alors ce sera trié par __ordre décroissant__.\\
 +Si l'attribut à pour domaine **TEXT** alors ce sera trié __de Z à A__.
 +
 +**DESC**
 +
 +<code sql>
 +SELECT attributs
 +FROM nom_table
 +ORDER BY attribut DESC
 +</code>
 +
 +**ASC**
 +
 +<code sql>
 +ORDER BY attribut ASC
 +</code>
 +
 +Revient à écrire
 +
 +<code sql>
 +ORDER BY attribut
 +</code>
 +
 +===4. Exemples===
 +
 +==a) Plusieurs conditions==
 +
 +Affiche le tableau des clients en les trieant, par leur ville, puis leur nom et enfin leur prénom (tous dans l'ordre alphabétique)
 +<code sql>
 +SELECT *
 +FROM CLIENTS
 +ORDER BY ville, nom, prenom 
 +</code>
 +
 +^  id  ^  prenom  ^    nom      ville    age  ^  id_abonnement  ^
 +|  4    Margot  |  Fournier  |   Lyon    24          2        |
 +|  10  |   John     Gilles     Lyon    39          2        |
 +|  7    Chloé    Olivier     Lyon    67          3        |
 +|  5     Paul     Ledoux    Nantes  |  31          1        |
 +|  2     Jean     Simon    |  Nantes  |  34          3        |
 +|  8    Marie     Arnaud    Paris    33          4        |
 +|  3     Marc     Duval    |  Paris    56          1        |
 +|  9    Frank    Guillet    Paris    22          1        |
 +|  6     Anne    Lacroix    Paris    47          4        |
 +|  1    Annie     Martin    Paris    25          3        |
 +
 +
 +==b) Avec DESC==
 +
 +Affiche le tableau des clients vivant à Paris en les trieant, par leur age décroissant puis par leur nom
 +<code sql>
 +SELECT nom, age
 +FROM CLIENTS
 +WHERE ville="Paris"
 +ORDER BY age DESC, nom
 +</code>
 +
 +^    nom    ^  age  ^
 +|   Duval    56   |
 +|  Lacroix  |  47   |
 +|  Arnaud    33   |
 +|  Martin    25   |
 +|  Guillet  |  22   |
 +
 +====E) JOIN====
 +
 +Il est possible de joindre deux relations ensemble grâce à **JOIN**.\\
 +En réalité il y a plusieurs type de jointure possible mais pour le bac on ne voit que **INNER JOIN**
 +
 +===1. Code===
 +
 +<code sql>
 +SELECT attributs
 +FROM table1
 +INNER JOIN table2 ON table1.attribut = table2.attribut
 +</code>
 +
 +Sur la première ligne:
 +
 +* Pour voire un attribut de la //table1// il suffit de mettre son nom
 +* **__SAUF__** si il y a un attribut dans la //table2// qui s'appelle pareil
 +* Dans ce cas ou pour voire un attribut de la //table2// il faut alors le présenter comme ce ci: ''table.attribut''
 +
 +===2. Exemples===
 +
 +==a) Exemple concret==
 +
 +Voire le prénom, nom, l'abonnement et le prix qu'il paye pour
 +<code sql>
 +SELECT prenom, CLIENTS.nom, ABONNEMENT.nom, ABONNEMENT.prix
 +FROM CLIENTS
 +INNER JOIN ABONNEMENT ON CLIENTS.id_abonnement = ABONNEMENT.id
 +</code>
 +
 +^  prenom  ^    nom        nom    ^  prix  ^
 +|  Frank    Guillet      Eco    |   10   |
 +|   Marc     Duval    |    Eco    |   10   |
 +|   Paul     Ledoux      Eco    |   10   |
 +|   John     Gilles    Famille  |   15   |
 +|  Margot  |  Fournier  |  Famille  |   15   |
 +|  Annie     Martin    Simple     20   |
 +|  Chloé    Olivier    Simple     20   |
 +|   Jean     Simon    |  Simple     20   |
 +|   Anne    Lacroix      Pro    |   40   |
 +|  Marie     Arnaud      Pro    |   40   |
 +
 +
 +==b) Dans un sens==
 +<code sql>
 +SELECT *
 +FROM CLIENTS
 +INNER JOIN ABONNEMENT ON CLIENTS.id_abonnement = ABONNEMENT.id
 +</code>
 +
 +^  id  ^  prenom  ^    nom      ville    age  ^  id_abonnement  ^  id  ^    nom    ^  prix  ^  durée_mois  ^  session  ^
 +|  3     Marc     Duval    |  Paris    56          1        |  1      Eco    |   10        27      |         |
 +|  5     Paul     Ledoux    Nantes  |  31          1        |  1      Eco    |   10        27      |         |
 +|  9    Frank    Guillet    Paris    22          1        |  1      Eco    |   10        27      |         |
 +|  4    Margot  |  Fournier  |   Lyon    24          2        |  2    Famille  |   15        27      |         |
 +|  10  |   John     Gilles     Lyon    39          2        |  2    Famille  |   15        27      |         |
 +|  1    Annie     Martin    Paris    25          3        |  3    Simple     20        12      |         |
 +|  2     Jean     Simon    |  Nantes  |  34          3        |  3    Simple     20        12      |         |
 +|  7    Chloé    Olivier     Lyon    67          3        |  3    Simple     20        12      |         |
 +|  6     Anne    Lacroix    Paris    47          4        |  4      Pro    |   40        24      |    20     |
 +
 +==c) Dans l'autre==
 +
 +<code sql>
 +SELECT *
 +FROM ABONNEMENT
 +INNER JOIN CLIENTS ON ABONNEMENT.id= CLIENTS.id_abonnement
 +WHERE condition
 +</code>
 +
 +^  id  ^    nom    ^  prix  ^  durée_mois  ^  session  ^  id  ^  prenom  ^    nom      ville    age  ^  id_abonnement  ^
 +|  1      Eco    |   10        27      |          3     Marc     Duval    |  Paris    56          1        |
 +|  1      Eco    |   10        27      |          5     Paul     Ledoux    Nantes  |  31          1        |
 +|  1      Eco    |   10        27      |          9    Frank    Guillet    Paris    22          1        |
 +|  2    Famille  |   15        27      |          4    Margot  |  Fournier  |   Lyon    24          2        |
 +|  2    Famille  |   15        27      |          10  |   John     Gilles     Lyon    39          2        |
 +|  3    Simple     20        12      |          1    Annie     Martin    Paris    25          3        |
 +|  3    Simple     20        12      |          2     Jean     Simon    |  Nantes  |  34          3        |
 +|  3    Simple     20        12      |          7    Chloé    Olivier     Lyon    67          3        |
 +|  4      Pro    |   40        24      |    20      6     Anne    Lacroix    Paris    47          4        |
 +|  4      Pro    |   40        24      |    20      8    Marie     Arnaud    Paris    33          4        |
 +
 +
 +=====V. Modifier une relation=====
 +
 +====A) INSERT====
 +
 +**INSERT INTO** permet de rajouter des lignes à une relation
 +
 +===1. Code===
 +
 +<code sql>
 +INSERT INTO nom_table
 +(attribut1, attribut2, attribut3)
 +VALUES
 +("valeur1", "valeur2", "valeur3")
 +</code>
 +
 +===2. Exemple===
 +
 +<code sql>
 +INSERT INTO CLIENTS
 +(id, prenom, nom, ville, age, id_abonnement)
 +VALUES
 +(1, 'Annie', 'Martin', 'Paris', 25, 3),
 +(2, 'Jean', 'Simon', 'Nantes', 34, 3),
 +(3, 'Marc', 'Duval', 'Paris', 56, 1),
 +(4, 'Margot', 'Fournier', 'Lyon', 24, 2),
 +(5, 'Paul', 'Ledoux', 'Nantes', 31, 1),
 +(6, 'Anne', 'Lacroix', 'Paris', 47, 4),
 +(7, 'Chloé', 'Olivier', 'Lyon', 67, 3),
 +(8, 'Marie', 'Arnaud', 'Paris', 33, 4),
 +(9, 'Frank', 'Guillet', 'Paris', 22, 1),
 +(10, 'John', 'Gilles', 'Lyon', 39, 2);
 +</code>
 +
 +Cela rajoutera à la relation ceci (visible grace à [[les_fiches_revisions:bases_de_donnees:sql#IV. Visualiser une relation|SELECT]]):
 +^  id  ^  prenom  ^    nom      ville    age  ^  id_abonnement  ^
 +|  1    Annie     Martin    Paris    25          3        |
 +|  2     Jean     Simon    |  Nantes  |  34          3        |
 +|  3     Marc     Duval    |  Paris    56          1        |
 +|  4    Margot  |  Fournier  |   Lyon    24          2        |
 +|  5     Paul     Ledoux    Nantes  |  31          1        |
 +|  6     Anne    Lacroix    Paris    47          4        |
 +|  7    Chloé    Olivier     Lyon    67          3        |
 +|  8    Marie     Arnaud    Paris    33          4        |
 +|  9    Frank    Guillet    Paris    22          1        |
 +|  10  |   John     Gilles     Lyon    39          2        |
 +
 +
 +====B) UPDATE====
 +
 +Update est un mot anglais qui veut dire mettre à jour.\\
 +**UPDATE** permet de changer certaines valeurs d'une relation en précisant une condition grâce à [[les_fiches_revisions:bases_de_donnees:sql#C) WHERE|WHERE]]
 +
 +===1. Code===
 +
 +<code sql>
 +UPDATE nom_table
 +SET attribut1="valeur1", attribut2="valeur2"
 +WHERE condition
 +</code>
 +
 +Si vous ne préciser pas WHERE toutes les lignes seront modifiés !!!
 +
 +===2. Exemple===
 +
 +Scénario: L'abonnement Simple à changé de prix, il est passé de 20€ à 15€
 +
 +Si la relation ABONNEMENT ressemblait à ceci (visible grâce à : [[les_fiches_revisions:bases_de_donnees:sql#IV. Visualiser une relation|SELECT]]
 +^  id  ^    nom    ^  prix  ^  durée_mois  ^  session  ^
 +|  1      Eco    |   10        27      |         |
 +|  2    Famille  |   15        27      |         |
 +|  3    Simple     20        12      |         |
 +|  4      Pro    |   40        24      |    20     |
 +
 +Après ce code
 +<code sql>
 +UPDATE ABONNEMENT
 +SET prix=15
 +WHERE id=3
 +</code>
 +
 +Elle ressemblera à ça
 +^  id  ^    nom    ^  prix  ^  durée_mois  ^  session  ^
 +|  1      Eco    |   10        27      |         |
 +|  2    Famille  |   15        27      |         |
 +|  3    Simple     15        12      |         |
 +|  4      Pro    |   40        24      |    20     |
 +
 +====C) DELETE====
 +
 +Delete est un mot anglais qui veut dire supprimer.\\
 +**DELETE FROM** permet de supprimer certaines lignes d'une relation en précisant lesquels grâce à [[les_fiches_revisions:bases_de_donnees:sql#C) WHERE|WHERE]]
 +
 +===1. Code===
 +
 +<code sql>
 +DELETE FROM nom_table
 +WHERE condition
 +</code>
 +
 +Si une condition n'est pas préciser, alors toutes les lignes seront supprimée.\\
 +
 +===2. Exemple===
 +
 +Scénario: Le client //Jean Simon// n'a pas renouvelé son abonnement donc il est supprimé de la relation
 +
 +Si la relation ABONNEMENT ressemblait à ceci (visible grâce à : [[les_fiches_revisions:bases_de_donnees:sql#IV. Visualiser une relation|SELECT]]
 +^  id  ^  prenom  ^    nom      ville    age  ^  id_abonnement  ^
 +|  1    Annie     Martin    Paris    25          3        |
 +|  2     Jean     Simon    |  Nantes  |  34          3        |
 +|  3     Marc     Duval    |  Paris    56          1        |
 +|  4    Margot  |  Fournier  |   Lyon    24          2        |
 +|  5     Paul     Ledoux    Nantes  |  31          1        |
 +|  6     Anne    Lacroix    Paris    47          4        |
 +|  7    Chloé    Olivier     Lyon    67          3        |
 +|  8    Marie     Arnaud    Paris    33          4        |
 +|  9    Frank    Guillet    Paris    22          1        |
 +|  10  |   John     Gilles     Lyon    39          2        |
 +
 +Après ce code
 +<code sql>
 +DELETE FROM CLIENTS
 +WHERE id=2
 +</code>
 +
 +Elle ressemblera à ça:
 +^  id  ^  prenom  ^    nom      ville    age  ^  id_abonnement  ^
 +|  1    Annie     Martin    Paris    25          3        |
 +|  3     Marc     Duval    |  Paris    56          1        |
 +|  4    Margot  |  Fournier  |   Lyon    24          2        |
 +|  5     Paul     Ledoux    Nantes  |  31          1        |
 +|  6     Anne    Lacroix    Paris    47          4        |
 +|  7    Chloé    Olivier     Lyon    67          3        |
 +|  8    Marie     Arnaud    Paris    33          4        |
 +|  9    Frank    Guillet    Paris    22          1        |
 +|  10  |   John     Gilles     Lyon    39          2        |
  
les_fiches_revisions/bases_de_donnees/sql.txt · Dernière modification: 2023/01/18 10:27 de hk