Table des matières

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. Résumé

*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

II. Création d'une base de donnée (sur DB Browser for SQLite)

  1. Allumez DB Browser for SQLite
  2. Cliquez sur nouvelle base de donnée
  3. Donnez lui un nom
  4. Cette page devrais s'ouvrir:
  5. Cliquez alors sur 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

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

A) Code

CREATE TABLE nom
(attribut1 domaine1, attribut2 domaine2);

Attribut : Correspond au nom de la colone

Domaine : Type de l'attribut:

B) Exemple

Création de la relation CLIENTS

CREATE TABLE CLIENTS
(id INT, prenom TEXT, nom INT, ville INT, age INT, id_abonnement INT);

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

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é

2. Exemples

a) Avec *

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
b) Avec le nom d'une des colones (attribut)

Pour voir la liste des abonnements et leur prix

SELECT nom, prix
FROM ABONNEMENT
nom prix
Eco 10
Famille 15
Simple 20
Pro 40

B) SELECT DISTINCT

En rajoutant DISTINCT après SELECT, on peut éviter d'avoir des doublons.

1. Code

SELECT DISTINCT attribut
FROM nom_table

2. Exemple

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

C) WHERE

Cette commande rajoute un/des filtre(s)

1. Code

SELECT attributs
FROM nom_table
WHERE condition

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.

AND
Les deux conditions doit être vraie

condition1 AND condition2

OR
Soit: Au moins une condition doit être vraie

condition1 OR condition2

3. Exemple

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

D) ORDER BY

Permet de mettre de trier le tableau affiché selon les attributs précisé

1. Code simple

SELECT attributs
FROM nom_table
ORDER BY attribut

2. Plusieurs conditions

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

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

SELECT attributs
FROM nom_table
ORDER BY attribut DESC

ASC

ORDER BY attribut ASC

Revient à écrire

ORDER BY attribut

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)

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
b) Avec DESC

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

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

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.

1. Code

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

2. Exemples

a) Exemple concret

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
b) Dans un sens
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
c) Dans l'autre
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

V. Modifier une relation

A) INSERT

INSERT INTO permet de rajouter des lignes à une relation

1. Code

INSERT INTO nom_table
(attribut1, attribut2, attribut3)
VALUES
("valeur1", "valeur2", "valeur3")

2. Exemple

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

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

UPDATE nom_table
SET attribut1="valeur1", attribut2="valeur2"
WHERE condition

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

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

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

DELETE FROM nom_table
WHERE condition

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

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