Vous êtes sur la page 1sur 31

Réf : tuto_MySQL_WampServer.

doc

Les BASES de DONNEES dans WampServer

1 Définitions Générales

Une base de données (BDD) permet d'enregistrer, de stocker, de ranger des


données de façon organisée et hiérarchisée.
SQL est le langage qui permet de manipuler les bases de données.
Les SGBD (Systèmes de Gestion de Base de Données) sont les programmes
qui vous permettent de gérer vos données directement sans utiliser de script
PHP.
Les plus connus sont :
MySQL : libre et gratuit, c'est probablement le SGBD le plus connu. Nous
l'utiliserons
PostgreSQL : libre et gratuit comme MySQL, avec plus de fonctionnalités mais
un peu moins connu.
SQLite: libre et gratuit, très limité en fonctionnalités.
Oracle : utilisé par les entreprises, un des SGBD les plus complets mais payant.
Microsoft SQL Server : le SGBD de Microsoft.

1.1 Structure de la base de données


La base dans le langage SQL, permet de classer les informations contenues
dans les tables.
Une table contient des données différentes. Une base contient au maximum
256 tables. C'est là que sont enregistrées les données, sous la forme d'un
tableau.
Dans ce tableau, les colonnes sont appelées des champs, et les lignes sont
appelées des entrées.

TIC –UIAD Création de site internet 2ème année Daniel Gaudin – Jean Claude Chêne page 1/31
Réf : tuto_MySQL_WampServer.doc

1.2 Gestion des Bases de Données


La base de données gère les informations sous forme de tableaux, MySQL
enregistre des informations, les écrit et les enregistre dans des fichiers !
Ces fichiers sont quelque part sur votre disque dur. Il faut toujours utiliser
MySQL qui va se charger d'extraire et de modifier les informations dans ces
fichiers.
Chaque SGBD a sa propre façon d'enregistrer les données
Par exemple, avec MySQL sous Windows si vous utilisez WAMP, vous devriez
trouver les fichiers où sont stockées les informations dans
C:\wamp\mysql\data.
On va devoir communiquer avec la BDD pour lui donner l'ordre de récupérer ou
d'enregistrer des données. Pour "parler" avec le BDD, on utilise le langage SQL
(Structured Query Language).

Le langage SQL permet de construire de puissantes BDD relationnelles,


quelque soit la BDD utilisée.

2 UTILISATION avec PHPMyADMIN

Nous allons donc utiliser MySQL qui est fourni dans WampServer.
PhpMyAdmin est l’interface d’utilisation de MYSQL, basé sur le PHP et le HTML,
de WampServer

Lorsque nous lançons WampServer nous avons


l’icône dans notre barre des tâches. Si nous
cliquons sur cette icône nous ouvrons une
fenêtre de commande dans laquelle nous
pouvons cliquer sur « phpMyAdmin ».

TIC –UIAD Création de site internet 2ème année Daniel Gaudin – Jean Claude Chêne page 2/31
Réf : tuto_MySQL_WampServer.doc

Nous ouvrons alors la fenêtre suivante :

2.1 CREER UNE BASE DE DONNEES


Lancer Wamp server et ouvrir phpMyAdmin nous avons alors dans la fenêtre (1)
un champ (2) Créer une base de donnés :

Donner un nom à la base : « base_essai » et cliquer sur créer

TIC –UIAD Création de site internet 2ème année Daniel Gaudin – Jean Claude Chêne page 3/31
Réf : tuto_MySQL_WampServer.doc

Nous avons alors confirmation de la création dans un cadre entouré de vert et


juste dessous la ligne de code SQL qui a été générée pour effectuer cette
opération.
Cette information est très importante car elle nous permettra par la suite de
« copier/coller » du code sans avoir à le retaper intégralement !
Dans la colonne gauche en bleu nous avons notre base avec entre parenthèses
le nombre de table incorporées ; 0 pour l’instant puisque nous n’en avons
encore créée aucune !

Nb : le champ « Interclassement » concerne divers langages ; exemple :

Nous laissons WampServer gérer cela.

TIC –UIAD Création de site internet 2ème année Daniel Gaudin – Jean Claude Chêne page 4/31
Réf : tuto_MySQL_WampServer.doc

2.2 Créer et Gérer des Tables


Pour cela nous sélectionnons notre base en cliquant dessus :

Nous nommons la table et définissons le nombre de colonnes souhaité (champs)


ici table_nom et 2 colonnes.

L’écran suivant s’ouvre :

On remplit chaque champ


Un index Id, type entier INT qui servira de clé primaire, taille/valeur 4 chiffres,
dans index mettre INDEX et cocher la case AUTO_INCREMENT.
Un champ Nom qui pourra contenir une chaîne de caractères avec le type
VARCHAR de 30 caractères dans le champ taille/valeur
On ignore les autres champs.

TIC –UIAD Création de site internet 2ème année Daniel Gaudin – Jean Claude Chêne page 5/31
Réf : tuto_MySQL_WampServer.doc

Puis on SAUVEGARDE (si on exécute on crée un nouveau champ) la table est


enregistrée et apparaît dans la liste

L’instruction SQL apparaît bien sous le message encadré de vert de


confirmation d’exécution.
Remarquons que la colonne NULL indique l’information Non ce qui ce traduit
dans les lignes de code SQL par NOT NULL et signifie qui les champs ne
doivent pas être vide. Si nous avions voulu accepter des champs vides il aurait
fallu cocher la case NULL (ligne en vert) dans l’écran de création des colonnes.
De la même façon créons une deuxième table « table_activites » avec 3
colonnes « tennis » « petanque » « bridge » :

Nous avons maintenant notre base de données avec deux tables.

TIC –UIAD Création de site internet 2ème année Daniel Gaudin – Jean Claude Chêne page 6/31
Réf : tuto_MySQL_WampServer.doc

2.3 Les Onglets de gestion


Nous voyons en haut de l’écran des onglets de navigation. Chaque onglet a
une fonction. Celui sur lequel nous sommes, Structure: affiche les divers
champs ci-dessus.

SQL : permet de lancer une instruction directement en SQL

Rechercher : un enregistrement, divers paramètres, permet de faire des


« Requêtes » (une recherche croisée entre les champs de différentes tables)
nous verrons cela plus en détail.

TIC –UIAD Création de site internet 2ème année Daniel Gaudin – Jean Claude Chêne page 7/31
Réf : tuto_MySQL_WampServer.doc

Insérer : cette commande sert à insérer des données dans une table de notre
base. Il convient d’ouvrir la table et de cliquer sur l’onglet « Insérer »
Notez : si notre table est vide nous ne pouvons l’afficher et nous avons cet
écran :

Une fenêtre de saisie des données s’ouvre. Elle nous propose deux champs de
saisie dans lesquels nous pouvons inscrire des données. Le champ « Id » n’est
pas à renseigner puisqu’il « s’auto-incrémente ».

Il faut ensuite cliquer sur « Exécuter » pour insérer les données dans la table.
ATTENTION, si on ne rentre des données que dans le deuxième champ et que
l’on clique sur exécuter les deux champs seront implémentés dans la table, le
premier étant vide.
Une fois exécutée la saisie nous obtenons cet écran et la table n’étant plus vide
nous pouvons l’afficher.

…….
Nous voyons alors nos saisies et l’« Id » a été incrémenté automatiquement, là
il commence à 5 car nous avons fait des essais auparavant et les avons effacés.

TIC –UIAD Création de site internet 2ème année Daniel Gaudin – Jean Claude Chêne page 8/31
Réf : tuto_MySQL_WampServer.doc

Exporter : la base, équivaut à « enregistrer sous » pour sauvegarder

Il faut vérifier que toutes les tables sont bien sélectionnées et que le choix est
bien sur SQL puis cliquer sur Exécuter.
Une fenêtre s’ouvre et l’on choisi l’emplacement pour enregistrer le fichier
en .sql !

TIC –UIAD Création de site internet 2ème année Daniel Gaudin – Jean Claude Chêne page 9/31
Réf : tuto_MySQL_WampServer.doc

Importer : une base, sert à « ouvrir » et à implémenter dans WampServer


une ou des tables dans une base, existante ou à créer avant l’importation,à
partir d’un fichier en .sql (ou autre s’il était besoin comme .zip par ex.)

Choisir le fichier dans l’emplacement avec cette commande et cliquer sur


Exécuter.

Opérations : permet de créer, modifier, renomer, vider les bases et les tables.

L’onglet Privilèges permet la gestion des utilisateurs. Généralement l’on


travaille sous Root mais il peut être utile de créer plusieurs utilisateurs quand
on gère plusieurs bases surtout à partir d’un site Web !.

TIC –UIAD Création de site internet 2ème année Daniel Gaudin – Jean Claude Chêne page 10/31
Réf : tuto_MySQL_WampServer.doc

Pour cela il faut cliquer sur Ajouter un utilisateur et renseigner les champs puis
cliquer sur Exécuter.

L’utilisation du bouton Générer un mot de passe est déconseillée car le mot de


passe généré est très long !

Enfin l’onglet Supprimer sert à effacer complétement une table ou une base.
A utiliser avec prudence !

TIC –UIAD Création de site internet 2ème année Daniel Gaudin – Jean Claude Chêne page 11/31
Réf : tuto_MySQL_WampServer.doc

3 MANIPULATION des données dans WampServer

Avant de manipuler les données rentrées dans notre table nous allons préciser
un certain nombre de caractéristiques possibles utilisées par MySQL.

3.1 Les types de champs MySQL

Allons dans l’onglet « Structure » de notre table et ajoutons une « colonne »


en fin de table. Lorsque l’on clique sur « Exécuter » nous ouvrons cette
fenêtre :

Déroulons la liste des types que vous propose MySQL sur la ligne « Type » :

… …

Alors que PHP ne propose que quelques types de données (int, string, bool...),
MySQL propose une quantité très importante de types de données.

TIC –UIAD Création de site internet 2ème année Daniel Gaudin – Jean Claude Chêne page 12/31
Réf : tuto_MySQL_WampServer.doc

En fait, ceux-ci sont classés par catégories :


NUMERIC : ce sont les nombres. On y trouve des types dédiés aux petits
nombres entiers (TINYINT), aux gros nombres entiers (BIGINT), aux nombres
décimaux (DOUBLE), etc.
DATE and TIME : ce sont les dates et les heures. De nombreux types
différents permettent de stocker une date, une heure, ou les deux à la fois.
STRING : ce sont les chaînes de caractères. Là encore, il y a des types
adaptés à toutes les tailles.
SPATIAL : cela concerne les bases de données spatiales, utile pour ceux qui
font de la cartographie. Ce ne sera pas notre cas, donc nous n'en parlerons pas
ici.
Attention : si dans un champ numérique le 0 est en premier il ne sera pas pris
en compte. Il faut donc utiliser un champ caractère pour par exemple stocker
des numéros de téléphone.
En fait, phpMyAdmin a eu la bonne idée de proposer au tout début de cette
liste les 4 types de données les plus courants :
INT : nombre entier.
VARCHAR : court texte (entre 1 et 255 caractères).
TEXT : long texte (on peut y stocker un roman sans problème).
DATE : date (jour, mois, année).

Nous n'aurons besoin de jongler qu'entre ces 4 types, donc ce sont eux qu'il
faut retenir. Cela couvrira 99% des besoins. Vous pouvez aussi garder en tête
le type DOUBLE qui permet de stocker des nombres décimaux.
Une petite remarque à propos de VARCHAR : c'est un type adapté aux courts
textes, vous devez indiquer la taille maximale du champ (entre 1 et 255). Si
vous ne le faites pas, vous ne pourrez pas créer la table.

TIC –UIAD Création de site internet 2ème année Daniel Gaudin – Jean Claude Chêne page 13/31
Réf : tuto_MySQL_WampServer.doc

3.2 Les clés primaires

Toute table doit posséder un champ qui joue le rôle de clé primaire. La clé
primaire permet d'identifier de manière unique une entrée dans la table. En
général, on utilise le champ "Id" comme clé primaire par défaut.
Chaque enregistrement de votre site doit pouvoir être identifié de manière
unique. Le moyen le plus simple pour cela est de lui donner un numéro unique,
dans un champ nommé "Id". Il ne peut pas y avoir deux enregistrements avec
le même Id dans la même table ou dans deux tables d’une même base de
données !
Il est vital que chaque table possède sa clé primaire. Des tables sans clé
primaire auront leurs performances extrêmement réduites. Créer à chaque fois
ce champ "Id" en lui donnant l'index PRIMARY, ce qui aura pour effet d'en
faire une clé primaire, cocher la case AUTO_INCREMENT afin que ce champ
gère lui-même les nouvelles valeurs automatiquement à chaque nouvelle saisie.

3.3 Les REQUÊTES

Nous avons vu que l’onglet « Rechercher » nous permet de faire des requêtes
dans nos tables.

Une requête SQL est un texte qui donne un ordre à exécuter à un moteur de
base de données sur une base de données. On utilise la commande SELECT.
Elle peut concerner un enregistrement ou plusieurs, elle peut mettre en jeu
une table ou plusieurs. La requête est composée de mots clés, les commandes
SQL (qui sont pour l’instant générées automatiquement par WampServer).
Reprécisons également que les commandes SQL ne sont pas sensibles à la
casse ni à l'écriture mais les champs sont sensibles à la syntaxe.

TIC –UIAD Création de site internet 2ème année Daniel Gaudin – Jean Claude Chêne page 14/31
Réf : tuto_MySQL_WampServer.doc

Pour cet exemple nous importons une nouvelle table, « jeu_video », dans
notre « base_essai » afin de disposer de données plus nombreuses et plus
variées pour que notre démonstration soit plus significative.
Cette table possède 50 « Entrées » qui ont chacune 7 colonnes, elle a cet
aspect :

Nous allons donc dans l’onglet « Rechercher » et nous obtenons cette vue :

Nous voyons que toutes les colonnes de la structure de notre table sont
affichées et que pour chacune d’elles nous avons un choix possible
d’« Opérateur ».

TIC –UIAD Création de site internet 2ème année Daniel Gaudin – Jean Claude Chêne page 15/31
Réf : tuto_MySQL_WampServer.doc

Ce choix est différent suivant le TYPE de données de notre colonne.

Les TYPE numériques (int, double,…) et les TYPE alphanumériques (varchar,


text,…)

………..…………

Les opérateurs de comparaison permettent de confronter deux valeurs, et


renvoient un résultat selon que celles-ci sont identiques (true) ou pas (false).
MySQL propose quelques options en plus des opérateurs habituels.

Attention : tous ne sont pas proposés par WampServer en automatique et tous


ne s’utilise pas avec tous les types de données; on ne va pas utiliser une
comparaison de chaine de caractère comme REGEXP avec une valeur
numérique par exemple.

Exemple de requêtes :
Recherchons dans notre table tous les jeux fonctionnant sur PC :

TIC –UIAD Création de site internet 2ème année Daniel Gaudin – Jean Claude Chêne page 16/31
Réf : tuto_MySQL_WampServer.doc

Qui nous donnera le résultat suivant :

Recherchons maintenant si « Michel » a testé des jeux sous PC :

Voici le résultat :

Notez le code SQL généré par WampServer :

SELECT *
FROM `jeux_video’ WHERE`possesseur`='michel'
AND `console` LIKE 'PC'
LIMIT 0, 30

TIC –UIAD Création de site internet 2ème année Daniel Gaudin – Jean Claude Chêne page 17/31
Réf : tuto_MySQL_WampServer.doc

Enfin dernier exemple recherchons dans les commentaires le mot « meilleur » :

Et voyons le résultat :

Il existe également d’autres opérateurs permettant d’autre fonction s’utilisant


toujours avec la commande SELECT, comme par exemple ORDER BY qui
permet de trier une liste de résultats … nous verrons tout cela dans la section
suivante consacrée à la syntaxe du langage SQL !

TIC –UIAD Création de site internet 2ème année Daniel Gaudin – Jean Claude Chêne page 18/31
Réf : tuto_MySQL_WampServer.doc

4 Le LANGAGE SQL

N’oublions pas que le but est d’accéder aux données de la base de données
afin de les manipuler pour obtenir le résultat qui nous intéresse.
Nous avons donc appris à créer, implémenter et manipuler des bases de
données avec SQL par l’intermédiaire du SGBD MySQL fourni dans
WampServer.
Nous allons maintenant étudier un peu plus en détail le langage SQL lui-même
afin de pouvoir plus tard manipuler nos bases de données à l’aide de script PHP
inclus dans des pages HTML via notre site.
Une commande SQL est aussi appelée instruction SQL ou requête SQL.
SQL fournit un ensemble de commandes pour une variété de tâches, dont:

la création et la modification du schéma de la BDD,


l’interrogation de la base de données,
l’insertion, la mise à jour et la suppression des données dans la base
de données,
la définition de vues,
le contrôle de l’accès aux données,
la création d'index pour accélérer les interrogations…

Nous allons donc taper directement des instructions SQL depuis une fenêtre de
commande en ligne telle celle proposée par WampServer via l’onglet « SQL » :

L’ensemble des commandes SQL étant en anglais nous allons avant cela faire
un petit rappel des principales définitions, commandes et du vocabulaire à
notre disposition.

TIC –UIAD Création de site internet 2ème année Daniel Gaudin – Jean Claude Chêne page 19/31
Réf : tuto_MySQL_WampServer.doc

4.1 Les Définitions

Abréviation Signification Abréviation Signification Remarque


anglaise anglaise française française

DB Data Base BD ou BDD Base de Données

DBMS Data Base SGBD Système de


Management Gestion de Base
System de Données

SQL Structured Query SQL Langage Langage


Language Structuré de d’Extraction de
Données Données

DDL Data Definition DDL Langage de Les Commandes


Language Définition des Principales
Données

DML Data DML Langage de Les Commandes


Manipulation Manipulation des d’Opérations sur
Language Données les Données

TABLE Table

ROW Ligne

COLUMN Colonne

DATATYPE Type de Données

4.2 Le Vocabulaire de Commande

Commande Définition Syntaxe Exemple

Création d’une CREATE « entité » CREATE DATABASE


CREATE
entité SQL « nom » ‘ma_base’

SELECT « titre de SELECT console, prix


Interrogation de la
SELECT colonne » FROM « table » FROM jeux_video
Base de Données
WHERE « valeur choisie » WHERE prix<20

Supprimer une DROP « entité »« nom »


DROP DROP TABLE ma_table
entité

DELETE FROM « entité »


Effacer des WHERE DELETE FROM ma_table
DELETE
données « champ »=« valeur à WHERE id=1
effacer »

TIC –UIAD Création de site internet 2ème année Daniel Gaudin – Jean Claude Chêne page 20/31
Réf : tuto_MySQL_WampServer.doc

INSERT INTO « entité » INSERT INTO ma_table


Insertion de (‘champ1’,’champ2’) (‘nom’, ‘prénom’)
INSERT
données values values
(‘valeur1’,’valeur2’) (‘Gaudin’,’Daniel’)

UPDATE « entité » SET


UPDATE ma_table SET
Mise à jour de « champ »=«nouvelle
UPDATE nom=’Jules’ WHERE
données valeur » WHERE
nom=’Gaudin’
« champ » = « valeur »

ALTER « entité » ADD


Ou CHANGE
ALTER TABLE
Modification d’une Ou MODIFY `ma_table` ADD
ALTER
entité `Age` INT(2) NOT
Ou DROP
NULL
Ou RENAME « action à
mener »

Sélectionne la base USE « base de données » USE ma_base


USE
de travail « Commande … » SELECT …

Nota : l’utilisation de * avec SELECT dans la forme « SELECT * … » entraîne


l’affichage de toutes les colonnes de toutes les tables citées après « FROM ».

4.3 Les Opérateurs de comparaisons

Opérateur(s) Renvoi "true" si...

<> ou != ...les deux valeurs ne sont pas égales

< ...la valeur de gauche est strictement


inférieure à celle de droite

> ...la valeur de gauche est strictement


supérieure à celle de droite

<= ...la valeur de gauche est strictement


inférieure ou égale à celle de droite

>= ...la valeur de gauche est strictement


supérieure ou égale à celle de droite

BETWEEN…AND ...la valeur testée est située entre


deux valeurs données

IN ...la valeur testée se situe dans une


liste valeurs données

NOT IN ...la valeur testée ne se situe pas


dans une liste de valeurs données

TIC –UIAD Création de site internet 2ème année Daniel Gaudin – Jean Claude Chêne page 21/31
Réf : tuto_MySQL_WampServer.doc

LIKE ...la valeur de gauche correspond à


celle de droite (celle de droite peux
utiliser le caractère % pour simuler
n'importe quel nombre de caractère,
et _ pour un seul caractère

NOT LIKE ...les deux valeurs ne correspondent


pas

REGEXP ou RLIKE ...la valeur de gauche correspond à


l'expression régulière donnée

NOT REGEXP ...la valeur de gauche ne correspond


pas à l'expression régulière donnée

IS NULL ...la valeur testée est nulle

IS NOT NULL ...la valeur testée n’est pas nulle

4.4 La syntaxe des lignes de commandes

Il est d’usage pour se retrouver plus facilement dans la ligne de code, certaines
peuvent être très longues, de mettre en majuscules les COMMANDES et en
minuscules les informations. Mais MySQL est insensible à la casse.

Les noms de base et de table ne peuvent contenir d’espaces ou des caractères


spéciaux, c’est pourquoi nous y insérons des tirets bas « _ ». Bien qu’ils soient
acceptés on évitera les caractères accentués dans les noms de base et de
tables. Par contre nous pouvons les utiliser sans problème dans les titres de
colonnes.

Les noms donnés aux bases, tables, colonnes, champs, … doivent être mis
entre « ‘ » (simple cote) dans la plupart des instructions.

Les valeurs crées ou données dans une instruction le sont entre « (…) » et
séparées par des virgules « , ».

Chaque instruction doit se terminer par un point-virgule « ; ».

TIC –UIAD Création de site internet 2ème année Daniel Gaudin – Jean Claude Chêne page 22/31
Réf : tuto_MySQL_WampServer.doc

Cela nous donne les commandes de base suivantes :

¾ Pour créer une base : CREATE DATABASE base_essai ;

Pour créer une table dans notre base :

¾ Il faut sélectionner la base avec : USE base_essai ;

Créer en nommant la table : CREATE TABLE nom_de_table (pas de « ; » là car


les attributs entre parenthèses suivent directement cette commande)
Y mettre au minimum une ligne pour pouvoir créer la table : (nom_ligne
VARCHAR(25)); (là nous précisons que cette ligne sera de type caractères
variés de 25 champs)
Notre ligne de commande aura donc cette structure :

¾ CREATE TABLE nom_de_table (nom_ligne VARCHAR(25));

Maintenant il va falloir étoffer notre table en y rajoutant lignes et structures !

Rajoutons une colonne :

¾ ALTER table table_test ADD ref varchar(10) ;

Insérons-y des données :

¾ INSERT INTO table_test VALUES (‘valeur1’, ‘valeur2’) ;

Et faisons une requête :

¾ SELECT ref FROM table_test ;

TIC –UIAD Création de site internet 2ème année Daniel Gaudin – Jean Claude Chêne page 23/31
Réf : tuto_MySQL_WampServer.doc

5 Exemples de codes SQL*

5.1 Base de Données à une table

Créons notre base :


¾ CREATE DATABASE employees ;

Créons une table à 3 colonnes :


¾ CREATE TABLE personal_info (first_name char(20) not null, last_name
char(20) not null, employeeid int not null) ;

Ajoutons une colonne :


¾ ALTER TABLE personal_info ADD salary DOUBLE NULL ;

Incrémentons nos premières valeurs dans la table :


¾ INSERT INTO personal_info values('bart','simpson',1000,45000) ;

Insérons maintenant plusieurs valeurs en même temps :


¾ INSERT INTO `employees`.`personal_info` (`first_name`, `last_name`,
`employeeid`, `salary`) VALUES ('mickey', 'mouse', '1001', '32000'),
('donald', 'duck', '1002', '26000'), ('peter', 'pan', '1003', '64000'), ('fritz',
'the cat', '1004', '33000');

Si nous voulons trier la liste et l’afficher suivant un ordre précis :


¾ ALTER TABLE `personal_info` ORDER BY `employeeid` ;

Pour afficher une colonne :


¾ SELECT last_name FROM personal_info ;

Pour afficher les valeurs d’une colonne avec une condition :


¾ SELECT * FROM personal_info WHERE salary > 40000 ;

Pour mettre à jour toutes les valeurs d’une colonne :


¾ UPDATE personal_info SET salary = salary * 1.03 ;

TIC –UIAD Création de site internet 2ème année Daniel Gaudin – Jean Claude Chêne page 24/31
Réf : tuto_MySQL_WampServer.doc

Pour modifier une valeur dans une colonne :


UPDATE personal_info SET salary = salary + 5000 WHERE employeeid = 1002 ;

Pour supprimer des données :


¾ DELETE FROM personal_info WHERE employeeid = 1003 ;

Pour vider une table de tout son contenu :


¾ TRUNCATE TABLE `personal_info` ;

Pour supprimer une table :


¾ DROP TABLE personal_info ;

Pour supprimer une base de données :


¾ DROP DATABASE employees ;

TIC –UIAD Création de site internet 2ème année Daniel Gaudin – Jean Claude Chêne page 25/31
Réf : tuto_MySQL_WampServer.doc

5.2 Base de données à plusieurs tables*

Nous allons utiliser l’exemple précédent en y créant une table supplémentaire :


(si vous avez écrasé la base « employees », recréez-la en utilisant les codes de
l’exemple précédent)
¾ CREATE TABLE disciplinary_action (action_id int not null, employeeid int
not null, comments char(255)) ;

Nous allons maintenant y mettre des données :


¾ INSERT INTO `employees`.`disciplinary_action` (`action_id`,
`employeeid`, `comments`) VALUES ('1', '1002', 'absence irrégulière'),
('2', '1004', 'mise à pied'), ('3', '1000', 'ivresse à son poste');

Recherchons maintenant quel(s) employés ont eu une sanction :


¾ SELECT personal_info.first_name, personal_info.last_name,
disciplinary_action.comments FROM personal_info, disciplinary_action
WHERE personal_info.employeeid = disciplinary_action.employeeid ;

Pour cela il faut bien être dans la base « employees » et sur l’onglet SQL.

Lorsqu’on exécute l’instruction SQL nous renvoi bien …

TIC –UIAD Création de site internet 2ème année Daniel Gaudin – Jean Claude Chêne page 26/31
Réf : tuto_MySQL_WampServer.doc

… une liste avec les Noms et Prénoms des employés avec la sanction subie.

Si nous voulons rajouter un critère supplémentaire à notre requête nous


utilisons l’opérateur complémentaire AND comme ceci « AND
personal_info.salary > 40000 » ce qui nous donnera :
¾ SELECT personal_info.first_name, personal_info.last_name,
disciplinary_action.comments FROM personal_info, disciplinary_action
WHERE personal_info.employeeid = disciplinary_action.employeeid AND
personal_info.salary > 40000 ;

Et nous renvoi :

Remarquez bien la syntaxe utilisée pour indiquer à MySQL que nous voulons
rechercher dans deux tables :

.
SELECT nom_table1 nom_colonne, nom_table2 nom_colonne .
FROM nom_table1, nom_table2 WHERE nom_table1 nom_colonne = … ; .
A chaque instruction dans la requête la table pointée est rajoutée devant le
nom de colonne avec un point de liaison.

TIC –UIAD Création de site internet 2ème année Daniel Gaudin – Jean Claude Chêne page 27/31
Réf : tuto_MySQL_WampServer.doc

Ajoutons maintenant un champ à notre table personal_info :


¾ ALTER TABLE personal_info ADD (reportsto INTEGER NULL);
Et remplissons les :
¾ UPDATE `personal_info` SET `reportsto` = '220000' WHERE
`employeeid` = '1000' ;
¾ UPDATE `personal_info` SET `reportsto` = '300000' WHERE
`employeeid` = '1001' ;
¾ UPDATE `personal_info` SET `reportsto` = '180000' WHERE
`employeeid` = '1002' ;
¾ UPDATE `personal_info` SET `reportsto` = '130000' WHERE
`employeeid` = '1003' ;
¾ UPDATE `personal_info` SET `reportsto` = '230000' WHERE
`employeeid` = '1004' ;

Créons une troisième table :


¾ CREATE TABLE employeeterritories (employeeid INTEGER NOT NULL,
territoryid INTEGER NOT NULL, state VARCHAR(5), city TINYTEXT);
Nous obtenons :

TIC –UIAD Création de site internet 2ème année Daniel Gaudin – Jean Claude Chêne page 28/31
Réf : tuto_MySQL_WampServer.doc

Remplissons maintenant notre table :


¾ INSERT INTO `employeeterritories` (`employeeid`, `territoryid`,
`state`, `city`) VALUES ('1000', '100', 'CA', 'Sacramento'), ('1001', '200',
'AZ', 'Phoenix'), ('1002', '300', 'TX', 'Austin'), ('1003', '400', 'GE',
'Atlanta'), ('1004', '500', 'FL', 'Tallahassee');

Nous obtenons :

Nous allons maintenant faire une requête sur nos trois tables qui peut
s’exprimer ainsi :
Quels sont les employés (nom et prénom) travaillant dans quel endroit (ville et
état) qui font un chiffre d’affaire supérieur à 200 000$ et qui ont subi une
sanction disciplinaire ?

¾ SELECT DISTINCT personal_info.first_name, personal_info.last_name,


employeeterritories.city, employeeterritories.state,
personal_info.reportsto, disciplinary_action .comments FROM
personal_info, employeeterritories, disciplinary_action WHERE
personal_info.reportsto >200000 AND personal_info.employeeid =
employeeterritories.employeeid AND personal_info.employeeid =
disciplinary_action. employeeid ;

A vous de trouver de nouveaux exemples !

TIC –UIAD Création de site internet 2ème année Daniel Gaudin – Jean Claude Chêne page 29/31
Réf : tuto_MySQL_WampServer.doc

5.3 La jointure

Introduisons maintenant une nouvelle commande, la JOINTURE, commande


« JOIN » !
Toujours avec notre base « employees » essayons cette instruction :
¾ SELECT first_name, last_name, city, reportsto
¾ FROM personal_info
¾ JOIN employeeterritories
¾ ON personal_info.employeeid = employeeterritories.employeeid
¾ WHERE reportsto >200000 ;
Nous obtenons :

Faisons une requête sur nos trois tables :


¾ SELECT first_name, last_name, city, reportsto, comments FROM
personal_info
¾ JOIN employeeterritories ON personal_info.employeeid =
employeeterritories.employeeid
¾ JOIN disciplinary_action ON personal_info.employeeid =
disciplinary_action.employeeid
¾ WHERE reportsto >200000
Nous obtenons bien le même résultat qu’à la page précédente :

TIC –UIAD Création de site internet 2ème année Daniel Gaudin – Jean Claude Chêne page 30/31
Réf : tuto_MySQL_WampServer.doc

* : vous pouvez copier-coller les codes utilisés dans ces exemples mais en
faisant attention de ne pas copier les puces de début de ligne !
De même il peut arriver que la police soit mal interprétée par WampServer et
que vous soyez obligé de retaper toute l’instruction.

TIC –UIAD Création de site internet 2ème année Daniel Gaudin – Jean Claude Chêne page 31/31

Vous aimerez peut-être aussi