SQL (Structured Query Language)
Présentation du langage SQL
Au chapitre Le modèle physique des données de ce livre, nous avons vu que le modèle physique des données permet d’établir l’ensemble des relations (ou fichiers) constituant la base de données. Si Merise nous aide à la conception et à l’élaboration de la base de données, le langage SQL nous aide, quant à lui, à manipuler les données ou la structure de la base de données.
1. Historique
SQL est élaboré dans les années 1970 d’après les théories de l’informaticien britannique E.F. Codd.
Codd est considéré comme l’inventeur du modèle relationnel. Il travaille à l’époque au laboratoire de recherche d’IBM à San José en Californie. IBM met du temps à croire en la théorie d’un langage d’interrogation des données structuré et ce sont des entreprises concurrentes telles qu’Oracle qui, les premières, misent sur le langage SQL.
De par sa nature simple et presque « naturelle », SQL ne tarde pas à devenir un standard de fait dans la manipulation des données.
Il est rapidement normalisé, ce qui garantit son indépendance vis-à-vis des systèmes de gestion de bases de données relationnelles (SGBDR). Ainsi...
Le langage de manipulation des données
Commençons par examiner les ordres du langage de manipulation de données.
Pour les exemples, nous utiliserons les trois fichiers tirés de ces modèles relationnels :
Clients(NumCli, Nom, Prénom, Adresse, Cp, Ville, Téléphone)
Achats(#NumCli, #NumArt, Date, Qté)
Articles(NumArt, Désignation, Catégorie, Prix)
Voici un extrait du contenu des fichiers :
Clients |
NumCli |
Nom |
Prénom |
Adresse |
Cp |
Ville |
Téléphone |
|
1 |
Auguy |
Jean |
1 rue droite |
30000 |
Nîmes |
0485957575 |
|
2 |
Baptiste |
Jean-Luc |
7 rue courbe |
12000 |
Rodez |
0565428775 |
|
3 |
Baptiste |
Amandine |
Avenue Foch |
12000 |
Rodez |
|
|
4 |
Collard |
Marie-Claire |
Rue d’Espagne |
66000 |
Perpignan |
|
|
5 |
Durand |
Raymond |
Rue des oliviers |
30000 |
Nîmes |
0475145425 |
Achats |
NumCli |
NumArt |
Date |
Qté |
|
1 |
1 |
30/01/2024 |
1 |
|
1 |
5 |
30/01/2024 |
4 |
|
4 |
3 |
29/01/2024 |
1 |
|
4 |
2 |
30/01/2024 |
2 |
|
5 |
2 |
01/02/2024 |
2 |
Articles |
NumArt |
Désignation |
Catégorie |
Prix |
|
1 |
Charlie Winston |
CD |
12 |
|
2 |
Caméra Café |
DVD |
19 |
|
3 |
WebCam |
Informatique |
24 |
|
4 |
Graveur |
Informatique |
38 |
|
5 |
Clé USB 16G |
Informatique |
18 |
1. Sélection des données
La commande SELECT permet de réaliser une lecture d’informations selon certains critères. Elle retourne les résultats dans un tableau. Elle permet de sélectionner une ou plusieurs colonnes d’une ou de plusieurs tables.
Syntaxe
SELECT [ALL / DISTINCT] nom_attribut1 [, nom_attribut2, ...]
FROM nom_table1 [, nom_table2, ...]
WHERE <condition de recherche>;
L’option ALL (l’option par défaut) permet de sélectionner l’ensemble des lignes satisfaisant à la condition de recherche.
L’option DISTINCT permet de ne conserver que des lignes distinctes, en éliminant les doublons.
La liste des attributs (nom_attribut1, nom_attribut2…) indique la liste des colonnes sélectionnées, séparées par des virgules. Pour sélectionner l’ensemble des colonnes d’une table, il est possible d’utiliser l’option *.
La liste des tables (nom_table1, nom_table2…) indique l’ensemble des tables, séparées par des virgules, sur lesquelles portent les opérations.
La condition de recherche...
Le langage de définition des données
SQL fournit les instructions suivantes permettant respectivement de créer, de supprimer, de modifier, de renommer des fichiers.
-
CREATE
-
DROP
-
ALTER
-
RENAME
1. La création de tables
La création d’une table se réalise avec l’ordre CREATE.
Syntaxe
CREATE TABLE "nom de table"
("colonne 1" "type de données pour la colonne 1",
"colonne 2" "type de données pour la colonne 2",
... );
Créer la table Articles :
CREATE TABLE Articles
(NumArt INTEGER NOT NULL,
Désignation CHAR(60) NOT NULL,
Catégorie CHAR(30),
Prix INTEGER);
a. Définition de la clé primaire
Dans la table Articles, la clé primaire est NumArt. Voici comment une clé primaire est définie avec SQL :
CREATE TABLE Articles
(NumArt INTEGER NOT NULL,
Désignation CHAR(60) NOT NULL,
Catégorie CHAR(30),
Prix INTEGER
CONSTRAINT C1 PRIMARY KEY (NumArt));
b. Définition des clés étrangères
La table Achats contient deux clés étrangères :
-
NumCli
-
NumArt
Créer la table Achats :
CREATE TABLE Achats
(NumArt INTEGER NOT NULL, ...
Le langage de contrôle des données
Le langage de contrôle des données comprend deux ordres :
-
GRANT
-
REVOKE
GRANT permet de donner des droits à un utilisateur sur une base de données, REVOKE supprime des droits acquis.
1. L’ordre GRANT
Cet ordre utilise différentes options pour définir au mieux les droits.
Option |
Explication |
ALTER |
Donne le droit de modifier la structure d’une table. |
DELETE |
Donne le droit de supprimer des enregistrements. |
INSERT |
Donne le droit d’insérer des enregistrements dans une table. |
SELECT |
Donne le droit d’exécuter des requêtes de sélection. |
UPDATE |
Donne le droit de modifier les données d’une table. |
ALL |
Donne tous les droits. |
Donner le droit à l’utilisateur Jean-Luc de modifier la structure de la table Clients :
GRANT ALTER
ON Clients
TO Jean-Luc;
Donner le droit à l’utilisateur Jean-Luc d’afficher le contenu de la table Clients :
GRANT SELECT
ON Clients
TO Jean-Luc;
Donner tous les droits à l’utilisateur Jean-Luc sur la table Clients :
GRANT ALL
ON Clients
TO Jean-Luc;
Permettre à Jean-Luc de lire, de modifier, d’insérer dans la table Clients :
GRANT SELECT, UPDATE,INSERT
ON Clients
TO Jean-Luc;...
Mise en pratique avec MySQL
Tous les exemples donnés précédemment peuvent être testés avec un vrai serveur de base de données tel que MySQL ou MariaDB.
MySQL ou MariaDB sont des serveurs réputés pour plusieurs raisons :
-
Ils existent sur de nombreuses plates-formes (Linux, Unix, Windows).
-
Ils supportent une grande montée en charge, et sont capables de gérer des entrepôts de données de plusieurs téraoctets.
-
Ils peuvent répondre aux demandes de performances les plus exigeantes, et traiter un volume de requêtes s’exprimant en milliard de requêtes par jour.
-
Ils offrent des fonctions de sécurité qui garantissent une très forte protection des données.
-
Ils sont open source et gratuits en licence « développement », payants en exploitation. Le coût de possession est très inférieur à ce que propose la concurrence.
Le site officiel français de MySQL est : https://www.mysql.com/fr/
Le site officiel français de MariaDB est : https://mariadb.org
Il existe des packs logiciels installant une suite logicielle permettant d’installer un serveur MySQL sans effort. Voici certains de ces packs :
-
EasyPHP : https://www.easyphp.org/
-
WampServer : https://wampserver.aviatechno.net/
Ces différents packs intègrent le serveur web Apache, le langage PHP et MySQL ou MariaDB. Ils offrent aussi des outils de configuration et de gestion.
1. Installation du serveur de base de données
Le pack utilisé dans...