Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. PHP et MySQL
  3. Introduction à MySQL
Extrait - PHP et MySQL Maîtrisez le développement d'un site web dynamique et interactif (5e édition)
Extraits du livre
PHP et MySQL Maîtrisez le développement d'un site web dynamique et interactif (5e édition)
1 avis
Revenir à la page d'achat du livre

Introduction à MySQL

Introduction aux bases de données relationnelles

1. Concepts

Une base de données est un ensemble de données structurées correspondant généralement à un domaine fonctionnel (facturation, ressources humaines, etc.). Physiquement, une base de données se matérialise par un ensemble de fichiers stockés sur un périphérique de stockage.

Les données d’une base de données sont gérées par un logiciel appelé système de gestion de base de données (SGBD). Ce logiciel offre plusieurs fonctionnalités : accès aux données, gestion des mises à jour, renforcement de l’intégrité, contrôle de la sécurité d’accès, etc.

Une base de données relationnelle supporte une organisation des données basée sur le modèle relationnel, développé en 1970 par Edgar Frank Codd. C’est la structure la plus répandue aujourd’hui.

Dans une base de données relationnelle, les données sont organisées en tables logiquement liées entre elles. Une table comporte un certain nombre de colonnes (ou champs) qui décrivent une ligne (ou enregistrement). La mise en relation des tables s’effectue par l’intermédiaire d’une colonne.

Exemple

livre 
+----+--------------------------------+---------------+ 
| id | titre                          | id_collection | 
+----+--------------------------------+---------------+ 
|  1 | PHP 7.0 - Développement Web    |             1 | 
|  2 |...

Travailler avec MySQL

1. Administration du serveur MySQL

Après avoir installé MySQL, nous pouvons administrer le serveur MySQL avec le compte super-utilisateur root (rien à voir avec le compte root sous Unix ou Linux).

Initialement, selon la manière dont MySQL a été installé, le compte root possède ou non un mot de passe ; ce compte dispose de tous les droits sur toutes les bases de données du serveur MySQL. Par contre, il ne peut se connecter que localement (à partir du serveur lui-même).

Dans le chapitre Construire une base de données dans MySQL, nous verrons comment créer d’autres utilisateurs et leur affecter des droits.

2. Interface en ligne de commande

L’application cliente mysql est un programme interactif qui permet de se connecter à un serveur MySQL et d’exécuter des requêtes sur ce serveur. Cette application se trouve dans le répertoire bin de votre installation MySQL.

Syntaxe

mysql [-h hôte] [-u utilisateur] [-p[mot_de_passe]] [nom_base] 

-h hôte

Hôte auquel il faut se connecter (machine locale par défaut). 

-u utilisateur

Nom d’utilisateur pour la connexion (nom de l’utilisateur courant du système d’exploitation par défaut).

-p[mot_de_passe]

Mot de passe pour la connexion (aucun mot de passe par défaut). S’il n’est pas donné sur la ligne de commande, il sera demandé de manière interactive, en saisie masquée. Si le mot de passe est spécifié dans la ligne de commande (ce qui n’est pas conseillé pour la sécurité), il ne doit pas y avoir d’espace après l’option -p.

nom_base

Base sélectionnée au départ (aucune par défaut).

Exemple

[root@athena ~]# mysql -u root 
Welcome to the MySQL monitor.  Commands...

Installer notre base de données de démonstration

Dans la suite de ce chapitre, nous allons travailler avec une base de données nommée eni. Cette base de données eni peut être créée à l’aide du script creer-base-eni.sql suivant :

-- Création de la base de données. 
DROP DATABASE IF EXISTS eni ; 
CREATE DATABASE eni; 
USE eni; 
 
-- Création de la table RUBRIQUE. 
CREATE TABLE rubrique 
  ( 
  id INT PRIMARY KEY AUTO_INCREMENT, 
  titre VARCHAR(20) NOT NULL, 
  id_parent INT 
  ); 
INSERT INTO rubrique 
  (id,titre,id_parent) 
VALUES 
  (1,'Base de données',NULL), 
  (2,'Développement',NULL), 
  (3,'Internet',NULL), 
  (4,'Open Source',NULL) 
; 
INSERT INTO rubrique 
  (titre,id_parent) 
VALUES 
  ('MySQL',1), 
  ('Oracle',1), 
  ('Langages',2), 
  ('Méthode',2), 
  ('HTML - XML',3), 
  ('Conception Web',3), 
  ('Sécurité',3), 
  ('Système',4), 
  ('Langages',4), 
  ('Base de données',4) 
; 
 
-- Création de la table COLLECTION. 
CREATE TABLE collection 
  ( 
  id INT PRIMARY KEY AUTO_INCREMENT, 
  nom VARCHAR(25) NOT NULL UNIQUE, 
  prix_ht DECIMAL(5,2) DEFAULT 20, 
  frais_ht DECIMAL(5,2) 
  ); 
INSERT INTO collection 
  (nom,prix_ht,frais_ht) 
VALUES 
  ('Ressources...

Apprendre les bases du langage SQL

1. Types de données

MySQL propose plusieurs types de données pour la définition des colonnes des tables. Dans le chapitre Construire une base de données dans MySQL, nous verrons comment utiliser ces types de données dans les ordres de création de table.

a. Types chaîne de caractères

MySQL propose les principaux types suivants pour les chaînes de caractères :

CHAR[(n)] [BINARY]

Chaîne de longueur fixe, de n caractères (n compris entre 0 et 255, 1 par défaut). Lors du stockage, la chaîne est complétée à droite par des espaces jusqu’à la longueur demandée ; ces espaces sont automatiquement supprimés lorsque la chaîne est lue.

VARCHAR(n) [BINARY]

Chaîne de longueur variable, de n caractères maximum (n compris entre 0 et 65535). Lors du stockage, aucun espace n’est ajouté. Il faut noter que si la chaîne contient des espaces à droite, ceux-ci ne sont pas supprimés lorsque la chaîne est lue.

TINYTEXT [BINARY]

Chaîne de longueur variable jusqu’à 255 caractères. Équivalent à VARCHAR(255).

TEXT [BINARY]

Chaîne de longueur variable jusqu’à 216-1 caractères.

MEDIUMTEXT [BINARY]

Chaîne de longueur variable jusqu’à 224-1 caractères.

LONGTEXT [BINARY]

Chaîne de longueur variable jusqu’à 232-1 caractères.

ENUM(’valeur’[,...])

Énumération. Chaîne dont la valeur doit appartenir à une liste de valeurs (ou être NULL). Une énumération peut contenir 65 535 valeurs distinctes au maximum.

SET(’valeur’[,...])

Ensemble. Chaîne qui peut contenir zéro, une ou plusieurs valeurs parmi une liste de valeurs. Un ensemble peut contenir 64 valeurs...

Exécuter des requêtes SQL simples

1. Le mode SQL du serveur

Le serveur MySQL peut fonctionner selon différents modes SQL. Le mode SQL définit quelle syntaxe SQL peut être utilisée et quelles vérifications le serveur doit faire, notamment lors des mises à jour.

Le mode SQL utilisé au démarrage est défini par la valeur de l’option sql-mode (sur la ligne de commande du démon MySQL ou dans le fichier de configuration).

Vous pouvez modifier le mode SQL après le démarrage grâce à la variable système sql_mode. Le mode SQL peut être modifié au niveau global ou au niveau session (chaque connexion peut utiliser un mode différent adapté à ces besoins).

Le mode SQL est défini par une liste de mots-clés séparés par des virgules.

Le mode par défaut a considérablement évolué depuis la version 5.6.6.

Avant la version 5.6.6, le mode par défaut était vide : le serveur MySQL évitait de générer des erreurs lors des mises à jour et n’hésitait pas à modifier des valeurs pour permettre leur affectation à une colonne ; une simple alerte était émise.

Depuis la version 5.6.6, les modes suivants ont successivement été ajoutés au mode par défaut :

Version

Modes ajoutés

Signification

5.6.6

NO_ENGINE_SUBSTITUTION

Une erreur se produit si une table est créée avec un moteur qui n’est pas disponible.

5.7.5

ONLY_FULL_GROUP_BY

Une erreur se produit dans une requête GROUP BY si les clauses SELECT, HAVING ou ORDER BY référencent des colonnes sans fonction d’agrégat qui ne figurent pas dans la clause GROUP BY ou qui ne dépendent pas de manière unique de colonnes présentes dans...