Ceci est une ancienne révision du document !
Si vous ne comprenez pas le résumé, cliquez sur la commande qui vous conduira a sa page sur ce wiki.
*CREATE TABLE* ⇒ Créer une relation
CREATE TABLE nom (attribut1 domaine1, attribut2 domaine2);
*SELECT* ⇒ Montre la relation
SELECT attributs FROM table1
*SELECT DISTINCT* ⇒ Montre la relation sans doublons
SELECT DISTINCT attribut FROM nom_table
*WHERE* ⇒ Ajout de conditions (“filtre”) - Ajouté à SELECT, UPDATE et REMOVE
WHERE condition WHERE condition1 AND condition2 WHERE condition1 OR condition2
Rappel: Les conditions sont sous cette forme: attribut=valeur
*ORDER BY* ⇒ Ajout à SELECT pour trier
ORDER BY attribut ORDER BY attribut1, attribut2 ORDER BY attribut DESC
*INNER JOIN* ⇒ Jointure de deux bases de donnée - Ajout à SELECT
SELECT attributs FROM table1 INNER JOIN table2 ON table1.attribut = table2.attribut
SELECT complexe - Exemple
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
*INSERT* ⇒ Ajoute des lignes à une relation
INSERT INTO nom_table (attribut1, attribut2, attribut3) VALUES ("valeur1", "valeur2", "valeur3")
*UPDATE* ⇒ Change certaines lignes d'une relation
UPDATE nom_table SET attribut1="valeur1", attribut2="valeur2" WHERE condition
*DELETE* ⇒ Supprimes certaines lignes d'une relation
DELETE FROM nom_table WHERE condition
nouvelle base de donnée
Annuler
Pour exécuter des commandes (pour les prochaines catégories) cliquez sur Exécuter le SQL
L'exemple utiliser tous au long de ce wiki est le suivant:
On connait leur prénom, nom, ville, age, salaire et leur abonnement
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 |
On connait le tarif mensuel, durée de l'abonnement, nombres de session
id | nom | prix | durée_mois | session |
---|---|---|---|---|
1 | Eco | 10 | 27 | 2 |
2 | Famille | 15 | 27 | 5 |
3 | Simple | 20 | 12 | 3 |
4 | Pro | 40 | 24 | 20 |
CREATE TABLE est la commande qui permet de créer un relation, en lui attribuant des attributs et leur domaine
CREATE TABLE nom (attribut1 domaine1, attribut2 domaine2);
Attribut : Correspond au nom de la colone
Domaine : Type de l'attribut:
Création de la relation CLIENTS
CREATE TABLE CLIENTS (id INT, prenom TEXT, nom INT, ville INT, age INT, id_abonnement INT);
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
SELECT attribut1, attribut2 FROM nom_table
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 |
| 2 | Famille | 15 | 27 | 5 |
| 3 | Simple | 20 | 12 | 3 |
| 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 | 2 |
| 5 | Paul | Ledoux | Nantes | 31 | 1 | 1 | Eco | 10 | 27 | 2 |
| 9 | Frank | Guillet | Paris | 22 | 1 | 1 | Eco | 10 | 27 | 2 |
| 4 | Margot | Fournier | Lyon | 24 | 2 | 2 | Famille | 15 | 27 | 5 |
| 10 | John | Gilles | Lyon | 39 | 2 | 2 | Famille | 15 | 27 | 5 |
| 1 | Annie | Martin | Paris | 25 | 3 | 3 | Simple | 20 | 12 | 3 |
| 2 | Jean | Simon | Nantes | 34 | 3 | 3 | Simple | 20 | 12 | 3 |
| 7 | Chloé | Olivier | Lyon | 67 | 3 | 3 | Simple | 20 | 12 | 3 |
| 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 | 2 | 3 | Marc | Duval | Paris | 56 | 1 |
| 1 | Eco | 10 | 27 | 2 | 5 | Paul | Ledoux | Nantes | 31 | 1 |
| 1 | Eco | 10 | 27 | 2 | 9 | Frank | Guillet | Paris | 22 | 1 |
| 2 | Famille | 15 | 27 | 5 | 4 | Margot | Fournier | Lyon | 24 | 2 |
| 2 | Famille | 15 | 27 | 5 | 10 | John | Gilles | Lyon | 39 | 2 |
| 3 | Simple | 20 | 12 | 3 | 1 | Annie | Martin | Paris | 25 | 3 |
| 3 | Simple | 20 | 12 | 3 | 2 | Jean | Simon | Nantes | 34 | 3 |
| 3 | Simple | 20 | 12 | 3 | 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 à 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 à 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 à : SELECT
^ id ^ nom ^ prix ^ durée_mois ^ session ^
| 1 | Eco | 10 | 27 | 2 |
| 2 | Famille | 15 | 27 | 5 |
| 3 | Simple | 20 | 12 | 3 |
| 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 |
| 2 | Famille | 15 | 27 | 5 |
| 3 | Simple | 15 | 12 | 3 |
| 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 à 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 à : 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 |