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 : Le nom des attributs qu'il faut affiché
Peut également être remplacé par *
Cela montrera toutes les colones de la relation
nom_table : Le nom de la relation qui sera affiché
Pour voir toutes les charactéristiques des abonnements
SELECT * FROM ABONNEMENT
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 |
Pour voir la liste des abonnements et leur prix
SELECT nom, prix FROM ABONNEMENT
nom | prix |
---|---|
Eco | 10 |
Famille | 15 |
Simple | 20 |
Pro | 40 |
En rajoutant DISTINCT après SELECT, on peut éviter d'avoir des doublons.
SELECT DISTINCT attribut FROM nom_table
Pour voir la liste de toutes les villes dans lequel habite les clients sans les avoir en double
SELECT DISTINCT ville FROM CLIENTS
ville |
---|
Paris |
Nantes |
Lyon |
Cette commande rajoute un/des filtre(s)
SELECT attributs FROM nom_table WHERE condition
Opérateur | Description |
---|---|
= | Egal |
!= | Pas egal |
< | Inférieur à |
> | Supérieur à |
<= | Inférieur ou égale à |
>= | Supérieur ou égale à |
En utilisant AND et OR il possible de préciser plusieurs conditions.
AND
Les deux conditions doit être vraie
condition1 AND condition2
OR
Soit:
Au moins une condition doit être vraie
condition1 OR condition2
Pour voir les clients vivant à Paris qui ont 30 ans ou plus
SELECT * FROM CLIENTS WHERE ville="Paris" AND age>=30
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
SELECT prenom, nom FROM CLIENTS WHERE age>50 OR ville="Nantes"
prenom | nom |
---|---|
Jean | Simon |
Marc | Duval |
Paul | Ledoux |
Chloé | Olivier |
Permet de mettre de trier le tableau affiché selon les attributs précisé
SELECT attributs FROM nom_table ORDER BY attribut
ORDER BY va trier le tableau d'abbord par l'attribut1 puis par l'attribut2 puis enfin par l'attribut3 etc…
SELECT attributs FROM nom_table ORDER BY attribut1, attribut2, attribut3
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
SELECT attributs FROM nom_table ORDER BY attribut DESC
ASC
ORDER BY attribut ASC
Revient à écrire
ORDER BY attribut
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)
SELECT * FROM CLIENTS ORDER BY ville, nom, prenom
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 |
Affiche le tableau des clients vivant à Paris en les trieant, par leur age décroissant puis par leur nom
SELECT nom, age FROM CLIENTS WHERE ville="Paris" ORDER BY age DESC, nom
nom | age |
---|---|
Duval | 56 |
Lacroix | 47 |
Arnaud | 33 |
Martin | 25 |
Guillet | 22 |
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
INNER JOIN permet de rajouter une autre table via un attribut.
En général une des deux tables aura un clé étrangère qui pourra être relier à la table pour lequel la clé étrangère correspond.
SELECT attributs FROM table1 INNER JOIN table2 ON table1.attribut = table2.attribut
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
Voire le prénom, nom, l'abonnement et le prix qu'il paye pour
SELECT prenom, CLIENTS.nom, ABONNEMENT.nom, ABONNEMENT.prix FROM CLIENTS INNER JOIN ABONNEMENT ON CLIENTS.id_abonnement = ABONNEMENT.id
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 |
SELECT * FROM CLIENTS INNER JOIN ABONNEMENT ON CLIENTS.id_abonnement = ABONNEMENT.id
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 |
SELECT * FROM ABONNEMENT INNER JOIN CLIENTS ON ABONNEMENT.id= CLIENTS.id_abonnement WHERE condition
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 |
INSERT INTO permet de rajouter des lignes à une relation
INSERT INTO nom_table (attribut1, attribut2, attribut3) VALUES ("valeur1", "valeur2", "valeur3")
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);
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 |
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
UPDATE nom_table SET attribut1="valeur1", attribut2="valeur2" WHERE condition
Si vous ne préciser pas WHERE toutes les lignes seront modifiés !!!
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
UPDATE ABONNEMENT SET prix=15 WHERE id=3
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 |
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
DELETE FROM nom_table WHERE condition
Si une condition n'est pas préciser, alors toutes les lignes seront supprimée.
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
DELETE FROM CLIENTS WHERE id=2
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 |