introduction à mysql
références
MySQL.orgManuel de référence MySQL
création d'une base de données
Pour cet exercice nous allons utiliser la base de données Hotel. Il s'agit d'une application qui permet d'inscrire les réservations dans un hôtel dans un resort. On pourra gérer les arrivées et les départs, assigner les chambres selon les demandes des clients, etc.La première tâche est de dessiner un modèle de la base de données. Il faut identifier les tables, les champs dans les tables, les clés et les relations.
Une première version pourrait avoir l'air de ceci :

outils
Le serveur MySQL est déjà installé dans UniServer.Pour pouvoir travailler avec les bases de données stockées sur le serveur on devrait utiliser un client visuel.
Un bon client pour MySQL est SQLYog.
Après avoir installé SQLYog vous pourrez récupérer la base de données exemple en faisant un Restore from SQL Dump... qui récupère le fichier .sql et reconstruit la base de données.

Le fichier à utiliser pour les exercices qui suivent peut être téléchargé à partir d'ici : Le backup de la base de données 'hotel'.
le langage sql
Le langage fonctionne avec une série d'instructions restreinte : il n'y a qu'environ 30 instructions en SQL.Les instructions se divisent en 4 catégories :
- DÉFINITION DE TABLES (DATA DEFINITION LANGUAGE)(DDL):
CREATE, DROP, ALTER
- MANIPULATION DE DONNÉES (DATA MANIPULATION LANGUAGE) (DML):
INSERT, UPDATE, DELETE
- INTERROGATIONS (QUERIES):
SELECT
- CONTRÔLE D'ACCÈS (DATA CONTROL LANGUAGE) (DCL):
GRANT
Les commandes DDL servent à créer les tables, les modifier ou les enlever
Il faut cependant créer une base de données avant de commencer :
CREATE DATABASE [IF NOT EXISTS] db_name;
Après l'avoir créé, il faut dire à MySQL de l'ouvrir :
USE db_name;
Notez que vous ne créez pas une nouvelle bd à chaque fois que vous entrez en MySQL; cependant vous devez toujours ouvrir la bd sur laquelle vous voulez travailler.
Si on devait supprimer la base de données au complet :
DROP DATABASE db_name;
Ensuite on peut commencer à créer les tables dans la bd:
CREATE TABLE nom_table (colonne1 type1 [NOT NULL] [UNIQUE] [PRIMARY KEY] [AUTO_INCREMENT],Référence: Create table syntax
colonne2 type2, ...)
Eg: CREATE TABLE employe (id varchar(5) NOT NULL UNIQUE PRIMARY KEY,
nom varchar(20), salaire numeric(9,2), date_embauche date);
Allez voir les références suivantes au sujet des données:
Chapter 10. Data types
et
Choosing the right Column types
Pour changer ou modifier une table on utilise la commande ALTER TABLE ...
ALTER TABLE nom_table ADD (colonne type, ...)
Eg: ALTER TABLE employe ADD (adresse varchar(30));
Data Definition StatementsPour effacer une table, on utilise le DROP TABLE ...
Changing the order of columns
DROP TABLE nom_table;
Eg: DROP TABLE employe;
Les commandes DML servent à manipuler les données - les insérer, les changer ou les effacer dans les tables.
La commande INSERT
Pour mettre des valeurs dans une table on utilise le INSERT INTO ...Notez le nombre de valeurs doit correspondre exactement au nombre de colonnes dans la table et le type de donnée doit correspondre exactement au type de colonne.
Si on doit omettre une valeur pour une colonne, on utilise l'identificateur NULL
INSERT INTO nom_table VALUES (valeur1, valeur2, ...)On peut aussi mettre des valeurs dans seulement certaines colonnes de la table:
Eg: INSERT INTO competence VALUES ('A111', 'COBOL', 15);
INSERT INTO competence VALUES ('B2222', 'SQL', NULL);
INSERT INTO competence(empid, experience) VALUES ('A111', 15);Notez bien: chaque INSERT ajoute une ligne à la table; vous ne pouvez pas changer le contenu d'une ligne avec un INSERT.
Le NULL
Remarquez l'utilisation du NULL. Le NULL est un caractère spécial en SQL. NULL n'est pas la même chose qu'un espace ou un 0. NULL signifie que la valeur est inexistante ou indéterminée. Toutes les opérations faites sur NULL retourne NULL.Pour évaluer si une colonne contient un null ou non, on ne fait pas ...WHERE col = null;
Il faut évaluer NULL au moyen de ... IS NULL ou ... IS NOT NULL
La commande UPDATE
Pour changer les données il faut faire un UPDATE ...UPDATE nom_table SET colonne1 = valeur1, colonne2=valeur2
WHERE condition
Eg: UPDATE employe SET salaire=25000
WHERE numemp = 'A1111';
Eg: UPDATE employe SET salaire = salaire * 1.1
WHERE departement = 22;
La commande DELETE
Le DELETE ... sert à supprimer des lignes dans la table; notez que chaque DELETE enlève une ligne au complet; vous ne pouvez pas enlever seulement une colonne sauf en faisant un UPDATE.DELETE FROM nom_table WHERE condition
Eg: DELETE FROM projets
WHERE p_datefin < date();
Le SELECT
SELECT colonne1, colonne2, ... FROM nom_tableWHERE condition
* = toutes les colonnes
SELECT * FROM Projet;
SELECT Numero_projet, Titre, Budget FROM Projet;
SELECT e_id, e_Nom FROM Employe ;
LA CLAUSE WHERE ...
La clause WHERE est l'équivalent d'un IF ...
SELECT * FROM table WHERE condition;
Affiche la ligne de table SI condition est vraie;
OPÉRATEURS: = > < >= <= <> ou !=
BETWEEN LIKE IN NOT AND OR
Supposons qu'il existe une table PRODUITS comme :
Produits
numprod varchar(5)
description varchar(50)
prix decimal(9,2)
cout decimal(9,2)
EXEMPLES:
SELECT * FROM PRODUITS WHERE NUMPROD = "A1234";
SELECT NUMPROD, DESC, PRIX FROM PRODUITS WHERE PRIX > 50;
SELECT NUMPROD, DESC, PRIX FROM PRODUITS
WHERE PRIX BETWEEN 50 AND 150;
SELECT NUMPROD, DESC FROM PRODUITS
WHERE NUMPROD LIKE "A%";
SELECT NUMPROD, DESC FROM PRODUITS
WHERE NUMPROD LIKE "A____";
% = CHAINE DE CARACTERES
_ = 1 CARACTERE
SELECT NUMPROD, DESC FROM PRODUITS WHERE DESC LIKE "%10%";
SELECT NUMPROD, DESC FROM PRODUITS
WHERE NUMPROD IN ("A100", "A200", "B500", "D800");
LE AND et OR S'UTILISENT COMME DANS TOUS LES AUTRES LANGAGES:
SELECT * FROM PRODUITS
WHERE DESC LIKE "A%" AND PRIX > 500;
Précédente