Table of Contents
SQL (Structured Query Language) est un langage de définition, de contrôle et de manipulation de données pour les bases de données relationnelles. Le modèle relationnel a été inventé par E.F. Codd (Directeur de recherche du centre IBM de San José) en 1970, et est devenu aujourd'hui le standart en terme de langage pour les bases de données. De fait, c'est le langage utilisé par le système de gestion de base de données MySQL.
Nous ne donnons ici qu'un aperçu du langage SQL, permettant de comprendre les grands principes du langage et de réaliser des requêtes élémentaires. Pour plus de détails, on pourra se reporter à la documentation comment ça marche.
SQL est à la fois un langage de manipulation de données et un langage de définition de données. Toutefois, la définition de données est l'oeuvre de l'administrateur de la base de données, c'est pourquoi la plupart des personnes qui utilisent le langage SQL ne se servent que du langage de manipulation de données, permettant de sélectionner les données qui les intéresse.
La principale commande du langage de manipulation de données est la
commande SELECT
, dont la syntaxe est la suivante :
SELECT [ALL] | [DISTINCT] <liste des noms de colonnes> | * FROM <Liste des tables> [WHERE <condition logique>]
L'option ALL (option par défaut) permet de sélectionner l'ensemble des lignes satisfaisant à la condition logique
L'option DISTINCT permet de ne conserver que des lignes distinctes, en éliminant les doublons
La liste des noms de colonnes indique la liste des colonnes choisies, séparées par des virgules.
Lorsque l'on désire sélectionner l'ensemble des colonnes d'une table il n'est pas nécessaire de saisir la liste exhaustive de ses colonnes : l'option * permet de réaliser cette tâche
La liste des tables indique l'ensemble des tables (séparées par des virgules) sur lesquelles on opère
La condition logique permet d'exprimer des qualifications complexes à l'aide d'opérateurs logiques et de comparateurs arithmétiques
Tip | |
---|---|
Le langage SQL n'est pas sensible à la casse (en anglais case sensitive), cela signifie que l'on peut aussi bien écrire les instructions en minuscules qu'en majuscule. Toutefois, cette insensibilité à la casse n'est que partielle dans la mesure où la différenciation entre minuscules et majuscules existe au niveau des identificateurs d'objets. |
Voyons quelques unes des possibilités de la
commande SELECT
.
Supposons l'existence de la table suivante, recensant des
lecteurs de CD
vendus d'occasion.
Cette table s'appelle lecteurs
.
ref | marque | modele | annee | prix |
---|---|---|---|---|
1 | Pioneer | CD-120 | 1998 | 700 |
2 | Sony | PL135 | 1999 | 890 |
3 | Pioneer | CD-140 | 1997 | 950 |
4 | Philips | PH340 | 2000 | 1050 |
5 | Technics | T600 | 1998 | 890 |
Nous pouvons lister l'ensemble de la table par
SELECT * FROM lecteurs
qui nous donne tous les enregistrements de la table (cinq lignes). Maintenant, nous pouvons restreindre la liste aux lecteurs ayant un prix inférieur ou égal à 1000F :
SELECT * FROM lecteurs WHERE prix <= 1000
ref | marque | modele | annee | prix |
---|---|---|---|---|
1 | Pioneer | CD-120 | 1998 | 700 |
2 | Sony | PL135 | 1999 | 890 |
3 | Pioneer | CD-140 | 1997 | 950 |
5 | Technics | T600 | 1998 | 890 |
On peut également combiner plusieurs critères. Par exemple, les lecteurs Pioneer à moins de 1000F.
SELECT * FROM lecteurs WHERE prix < 1000 and marque='Pioneer'
On peut aussi vouloir sortir cette liste après l'avoir trié. La requête SELECT permet cela directement. Pour obtenir la liste des lecteurs classés par ordre de prix, nous demandons :
SELECT * FROM lecteurs ORDER BY prix
Quand on ne précise pas si le tri est croissant ou décroissant,
c'est un tri décroissant qui est opéré.
On peut préciser de quel type est le tri à l'aide des mots clés
ASC
(croissant) ou DESC
(décroissant).
On peut aussi utiliser plusieurs critères de tri. Il suffit alors de séparer les noms des colonnes utilisées pour le tri par des virgules. L'ordre dans lequel apparaissent les noms de colonnes indique quels critères sont prioritaires. Par exemple,
SELECT * FROM lecteurs ORDER BY prix,annee
donne la liste suivante, où quand plusieurs prix sont identiques, le second critère (l'année) est utilisé pour déterminer l'ordre.
ref | marque | modele | annee | prix |
---|---|---|---|---|
1 | Pioneer | CD-120 | 1998 | 700 |
5 | Technics | T600 | 1998 | 890 |
2 | Sony | PL135 | 1999 | 890 |
3 | Pioneer | CD-140 | 1997 | 950 |
4 | Philips | PH340 | 2000 | 1050 |
La gestion des données comprend la création des bases et des tables, ainsi que la définition des champs des tables et leurs types. Toutes ces opérations peuvent se faire à l'aide de commandes MySQL.
Cependant, pour écourter la présentation, nous recommandons l'utilisation de l'outil phpMyAdmin . Celui-ci permet de créer la base de donnée et de l'administrer à travers une interface web (elle même écrite en PHP d'ailleurs). Par conséquent, une administration à distance ide la base devient aussi simple que si on avait accès au poste où se trouve la base.