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 nous permettait d’établir l’ensemble des relations (ou fichiers) constituant la base de données. Merise nous aide à la conception et à l’élaboration de la base de données, le langage SQL quant à lui nous aide à manipuler les données ou la structure de la base de données.
1. Historique
Le langage SQL a été élaboré dans les années 1970 d’après les théories d’un informaticien britannique : Edgar Frank Codd.
Le docteur Codd est considéré comme l’inventeur du modèle relationnel. Il travaillait au laboratoire de recherche d’IBM à San José en Californie. IBM mis du temps a croire en la théorie d’un langage d’interrogation des données structuré et ce sont des entreprises concurrentes telles Oracle qui les premières misèrent sur le langage SQL.
De par sa nature simple et presque naturelle, SQL ne tarda pas à devenir un standard de fait dans la manipulation des données.
Il fut rapidement normalisé, garantissant ainsi son indépendance vis-à-vis des systèmes de gestion de bases de données relationnelle (SGBDR). Ainsi, une requête SQL peut...
Le langage de manipulation des données
Nous allons aborder dans cette partie les ordres du langage de manipulation de données. Nous allons commencer par l’ordre SELECT.
Pour les exemples, nous allons utiliser 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)
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/2018 |
1 |
|
1 |
5 |
30/01/2018 |
4 |
|
4 |
3 |
29/01/2018 |
1 |
|
4 |
2 |
30/01/2018 |
2 |
|
5 |
2 |
01/02/2018 |
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. La commande SELECT retourne les résultats dans un tableau. Cette commande permet de sélectionner une ou plusieurs colonnes d’une ou plusieurs tables.
Syntaxe :
SELECT [ALL / DISTINCT] nom_attribut1 [, nom_attribut2, ......]
FROM nom_table1 [, nom_table2, ....]
WHERE <condition de recherche>;
L’option ALL est l’option par défaut qui 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 indique la liste des colonnes choisies, 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 indique l’ensemble des tables (séparées par des virgules) sur lesquelles portent les opérations.
La condition de recherche permet d’exprimer des critères de recherche complexes à l’aide d’opérateurs logiques et/ou de comparateurs arithmétiques....
Le langage de définition des données
SQL fournit des instructions permettant de créer, supprimer, modifier, renommer des fichiers. Ces instructions sont les suivantes :
-
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éation de 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
Voici la requête de création de la table Achats :
CREATE TABLE Achats
...
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, modifier, insérer dans la table Clients.
GRANT SELECT, UPDATE,INSERT
ON Clients
TO Jean-Luc;
Permettre à Jean-Luc de modifier...
Mise en pratique avec MySQL
Tous les exemples donnés plus haut peuvent être testés avec un vrai serveur de base de données.
Le serveur de base de données MySQL est un serveur réputé pour plusieurs raisons :
-
Il existe sur de nombreuses plates-formes (Linux, Unix, Windows).
-
Il supporte une grande montée en charge. Il est capable de gérer des entrepôts de données de plusieurs téraoctets.
-
MySQL peut répondre aux demandes de performances les plus exigeantes. Il peut traiter un volume de requêtes s’exprimant en milliards de requêtes par jours.
-
MySQL offre des fonctions de sécurité qui garantissent une très forte protection des données.
-
MySQL est Open Source et gratuit en licence développement, payant en exploitation. Le coût de possession est très inférieur à ce que propose la concurrence.
Le site officiel français est : https://www.mysql.com/fr/
Il existe des packs logiciels installant une suite logicielle permettant d’installer un serveur MySQL sans effort. Voici certains de ces packs :
-
EasyPHP : http://www.easyphp.org/
-
WampServer : http://www.wampserver.com/
Ces différents packs intègrent le serveur Web Apache, le langage PHP et MySQL. Ils offrent aussi des outils de configuration et de gestion de MySQL comme phpMyAdmin.
1. Installation du serveur de base de données
Le pack utilisé dans cet ouvrage sera WampServer.
Il n’y a aucune difficulté pour installer WampServer. Il suffit de télécharger...