Introduction à MySQL pas à pas
Initiation
au SGBD MySQL
Valérie Bellynck
INPG-EFPG, Maître de conférences en Informatique
LIG-GETALP
Où en est-on ? On a vu :
les modèles conceptuel et logique, l'algèbre relationnelle,
la construction des objets d'Access, la réalisation d'un base de données réaliste avec Access, la prise en compte des différents points de vue et tâches associés aux utilisateurs, avec quelques fois la fenêtre SQL (pour les requêtes, les formulaires ou les états)
Ce qu'on va voir :
une très courte introduction à la syntaxe du langage SQL, utilisé dans les serveurs MySQL le lien avec son utilisation dans des sites Web
[Valérie Bellynck], [11 octobre 2007] - Initiation à MySQL TOC
27/09/11 10:01
Introduction << >>
SQL
("Structured Query Language" en anglais,
ce qui signifie Langage d'interrogation structuré , ou en simplifiant langage de requête) est un langage de définition et de manipulation de bases de données relationnelles ;
Il définit un standard qui a été normalisé (ANSI) ; chaque produit SQL réalise différement et plus ou moins strictement la norme .
MySQL
est un serveur de base de données exploitant un langage qui dérive directement de SQL,
en reprennant la syntaxe,
mais pas toutes les fonctionnalités (clés imbriquées, clés étrangères...)
[Valérie Bellynck], [11 octobre 2007] - Initiation à MySQL TOC
27/09/11 10:01
Introduction
Historique de SQL
1970
découverte de l'algèbre relationnelle ( E.F.Codd)
jusqu'en 1977
SEQUEL (IBM)
-> SEQUEL/2 (serveur System/R d'IBM) 1981
Relational Software
Oracle (premier SGBD relationnel implémentant SQL) 1986 normalisation de SQL
-> SQL/86 1992 nombreuses améliorations -> modification de la norme
-> SQL/92 = SQL2
1999
Expressions rationnelles, requêtes récursives, déclencheurs, types non-scalaires et quelques fonctions orientées objet
-> SQL-99 ou SQL3 2003
fonctions pour la manipulation XML,« window functions », ordres standardisés et colonnes avec valeurs auto-produites
-> SQL:2003
La première version de SQL a été développée à IBM en premier en 1970 par Donald D. Chamberlin et Raymond F. Boyce. Cette version,d'origine était appelé SEQUEL, a été conçue pour manipuler et éditer des données emmagasinées dans la base de données relationel IBM : le Système R. le nom SEQUEL a été abandonné car c'est celui d'un système Pick.
En 1979, Relational Software, Inc. (actuellement Oracle Corporation) présenta la première version commercialement disponible de SQL, rapidement imité par d'autres fournisseurs. Malgré le succès du langage SQL qui a suivi, Edgar F. Codd dénoncera cet outil qu'il considère comme une interprétation incorrecte de ses théories.
SQL a été adopté comme recommandation par l'Institut de normalisation américaine (ANSI) en 1986, puis comme norme internationale par l'ISO en 1987 sous le nom de ISO/CEI 9075 - Technologies de l'information - Langages de base de données - SQL.
[Valérie Bellynck], [11 octobre 2007] - Initiation à MySQL TOC
27/09/11 10:04
Introduction
Les sous-langages de SQL
LDD : Langage de Définition des Données
(DDL: Data Definition Language en anglais)
-> permet de créer, modifier ou supprimer les définitions des tables de la base de modifier la structure de la base de données
LMD : Langage de Manipulation des Données
(DML: Data Manipulation Language)
-> permet de manipuler les données dans les tables de consulter / modifier le contenu de la base de données LCD : Langage de Contrôle des Données
(DCL: Data Control Language)
-> permet de gérer les protections d'accès aux tables de gérer les privilèges, ie les droits des utilisateurs
LCT : Langage de Contrôle des Transactions
(TCL: Transaction Control Language)
-> permet de gérer les interruptions en cours de traitement et permettre de remettre la base de données dans un état cohérent de gérer les transactions, c'est-à-dire rendre automatique divers ordres enchaînés en séquence
SQL procédural,
dont PSM Persistent Stored Module, CLI Call Level Interface et SQL embarqué (Embedded SQL en anglais),
-> permet d'interfacer SQL avec des langages hôtes
exploiter un ensemble d'outils
[Valérie Bellynck], [11 octobre 2007] - Initiation à MySQL TOC
27/09/11 10:05
MySQL pour le Web : Architecture 3-tiers
MySQL est très utilisé pour le développement de sites Web dynamique, et proposé par des hébergeurs gratuits comme free, lycos, OVH, ...
Mais il n'est pas le seul (postgreSQL, msql, SQLplus, ...) et peut être utilisé en dehors du context des sites Web.
[Valérie Bellynck], [11 octobre 2007] - Initiation à MySQL TOC
27/09/11 10:05
La communication avec un serveur nécessite une phase de connexion, avec identifiant et mot de passe
Il existe en gros 3 niveaux de permission pour les utilisateurs :
les Administrateursles Concepteursles Utilisateurs peuvent agir sur
peuvent agir surpeuvent agir sur les bases de données, les structures des tables,les contenus des tables, et donc l'accès
et donc les colonneset donc les lignes et l'existence des tables
Chaque niveau exploite principalement un des sous-langages SQL
LCD, LCT,
LDDLMD
SQL procédural
| [Valérie Bellynck], [11 octobre 2007] - Initiation à MySQL | TOC |
27/09/11 10:06
Tâches des Administrateurs
limiter le nombre de requêtes/mises-à-jour/connexions par jour et par utilisateur démarrer/arrêter le serveur créer/gérer les utilisateurs
accéder à toutes les tables, et bloquer l'utilisation de certaines tables sauver/restaurer tout ou partie des bases de données créer des processus pour automatiser des tâches
donc agir sur les tables
[Valérie Bellynck], [11 octobre 2007] - Initiation à MySQL TOC
27/09/11 10:06
Tâches des Concepteurs / Réalisateurs
créer/supprimer des tables, et des tables temporaires
modifier leurs structures, dont changer de statut à des attributs (index) exécuter des processus donc agir sur les colonnes
Tâches des Utilisateurs / Visiteurs
voir le contenu des tables aux quelles ils sont autorisés, même sur plusieurs tables à la fois (jointures) ajouter/supprimer des valeurs à certaines tables
...
donc agir sur les lignes
[Valérie Bellynck], [11 octobre 2007] - Initiation à MySQL TOC
Les utilisateurs et leurs niveaux de permission sont mémorisés par le serveur
dans une base de données parmi celles qu'il gère
drôle, non ?
[Valérie Bellynck], [11 octobre 2007] - Initiation à MySQL TOC
Algèbre relationnelle
Rappels de vocabulaire
Domaine : ensemble de valeurs d’un même type, pouvant toutes caractériser/qualifier une propriété récurrente. Table relationnelle : table à 2 dimensions, chaque colonne étant caractérisée par un nom.
Relation (Table relationnelle) : sous ensemble du produit cartésien d’une liste de domaines. Le résultat est un tableau à deux dimensions dont les colonnes correspondent aux domaines, et sont nommées, et dont les lignes contiennent des tuples.
Attribut : une colonne d’une relation, caractérisé par un (son) nom. tUple : liste des valeurs d’une ligne d’une table relationnelle.
[Valérie Bellynck], [11 octobre 2007] - Initiation à MySQL TOC
Algèbre relationnelle
Les opérations de base
Projection : sélection d’un ou plusieurs attributs d’une relation.
Exemple : n’afficher que les colonnes Nom et Prenom d'une table Personnes.
Jointure : création d'une nouvelle relation à partir de 2 ou plusieurs autres
en prenant comme pivot 1 ou plusieurs attributs.
Exemple : concaténer deux tables d’adresses en fonction du nom de famille pour obtenir dans une seule table les informations provenant des 2 tables (c’est typiquement du recoupement de fichiers).
Sélection : sélection de tous les tuples ou bien seulement d'une partie en fonction de critères de sélection qui portent sur les valeurs des attributs.
Exemple : n’afficher que les lignes de la table Personnes qui vérifient la condition suivante : le nom ne commence pas par la lettre ‘C’.
Cette algèbre est facilement possible avec les commandes de MySQL
(SELECT FROM WHERE)
[Valérie Bellynck], [11 octobre 2007] - Initiation à MySQL TOC
Types des données
Chaque attribut peut porter des valeurs d'un seul et même type.
Les types utilisables peuvent nécessiter plus ou moins de place en mémoire.
Pour pouvoir ajuster au plus près le type des données aux besoins des situations réelles, MySQL supporte des types très différents :
Nombre entier signé ou non (température, quantité commandée, âge)
Nombre à virgule (prix, taille)
Chaîne de caractères (nom, adresse, article de presse)
Date et heure (date de naissance, heure de parution)
Enumération (une couleur parmi une liste prédéfinie)
Ensemble (une ou des monnaies parmi une liste prédéfinie)
[Valérie Bellynck], [11 octobre 2007] - Initiation à MySQL TOC
Types des données
Chaque attribut peut porter des valeurs d'un seul et même type.
Les types utilisables peuvent nécessiter plus ou moins de place en mémoire.
Pour pouvoir ajuster au plus près le type des données aux besoins des situations réelles, MySQL supporte des types très différents :
Nombre entier signé ou non (température, quantité commandée, âge)
Nombre à virgule (prix, taille)
Chaîne de caractères (nom, adresse, article de presse)
Date et heure (date de naissance, heure de parution)
Enumération (une couleur parmi une liste prédéfinie)
Ensemble (une ou des monnaies parmi une liste prédéfinie)
[Valérie Bellynck], [11 octobre 2007] - Initiation à MySQL TOC
Exemple du type entier
nom borne inférieure borne supérieure
TINYINT -128127
TINYINT UNSIGNED 0255
SMALLINT -3276832767
SMALLINT UNSIGNED 065535
MEDIUMINT -83886088388607
MEDIUMINT UNSIGNED 016777215
INT* -21474836482147483647
INT* UNSIGNED 04294967295
BIGINT -92233720368547758089223372036854775807
BIGINT UNSIGNED 018446744073709551615
INTEGER est un synonyme de INT.
UNSIGNED permet d’avoir un type non signé.
ZEROFILL : remplissage des zéros non significatifs.
[Valérie Bellynck], [11 octobre 2007] - Initiation à MySQL TOC
Exemple du type caractère
nom longueur
Chaîne de taille fixée à M, où 1<M<255, complétée avec des espaces si nécessaire.
Idem, mais insensible à la casse lors des tris et recherches.
Chaîne de taille variable, de taille maximum M, où 1<M<255, complété avec des espaces si nécessaire.
| CHAR(M) |
| CHAR(M) BINARY |
| VARCHAR(M) |
| TINYTEXT |
| TEXT |
| MEDIUMTEXT |
| LONGTEXT |
| DECIMAL(M,D) |
| NUMERIC(M,D) |
VARCHAR(M) BINARYIdem, mais insensible à la casse lors des tris et recherches.
Longueur maximale de 255 caractères.
Longueur maximale de 65535 caractères.
Longueur maximale de 16777215 caractères.
Longueur maximale de 4294967295 caractères.
Simule un nombre flottant de D chiffres après la virgule et de M chiffres au maximum. Chaque chiffre ainsi que la virgule et le signe moins (pas le plus) occupe un caractère.
[Valérie Bellynck], [11 octobre 2007] - Initiation à MySQL TOC
Niveau Utilisateur agissant sur le contenu d'une table
| (DELETE ) |
| (INSERT ) |
| (UPDATE ) |
SELECTINSERTUPDATEDELETE
SELECT `date` , `val`
FROM èssai`
LIMIT 0 , 30
et les autres... (FILE)
SELECT, INSERT, UPDATE, DELETE, FILE
[Valérie Bellynck], [11 octobre 2007] - Initiation à MySQL TOC
Niveau Utilisateur agissant sur le contenu d'une table
| (DELETE ) |
| (INSERT ) |
| (UPDATE ) |
SELECTINSERTUPDATEDELETE
SELECT `date` , `val`
FROM èssai`
LIMIT 0 , 30
et les autres... (FILE)
SELECT, INSERT, UPDATE, DELETE, FILE
[Valérie Bellynck], [11 octobre 2007] - Initiation à MySQL TOC
Niveau Concepteur
agissant sur la structure d'une table
CREATE
CREATE TABLE èssai` (
| (DROP ) |
`no` SMALLINT NOT NULLALTERDROP
AUTO_INCREMENT PRIMARY KEY ,
ALTER TABLE èssai` ADD `test` VARCHAR
`val` VARCHAR ( 32 ) NULL ,
( 64 ) NOT NULL AFTER `val` ;
`date` DATE NULL
) ENGINE = MYISAM ;
CREATE, ALTER, INDEX, DROP, CREATE TEMPORARY TABLES CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EXECUTE
[Valérie Bellynck], [11 octobre 2007] - Initiation à MySQL TOC
Niveau Administrateur agissant sur les bases de données et les utilisateurs
|
|
|
CREATE USER SHOW DATABASES LOCK TABLES
SHOW DATABASES, LOCK TABLES, REFERENCES, REPLICATION CLIENT, REPLICATION SLAVE CREATE USER
[Valérie Bellynck], [11 octobre 2007] - Initiation à MySQL TOC
Niveau Administrateur agissant sur le serveur lui-même
|
|
|
SHUTDOWN RELOAD GRANT
GRANT, SUPER, PROCESS, RELOAD, SHUTDOWN
[Valérie Bellynck], [11 octobre 2007] - Initiation à MySQL TOC
phpMyAdmin
Pour les tâches de construction des bases de données en MySQL, généralement on utilise un ensemble de pages Web résultant de l'exécution de scripts en PHP.
phpMyAdmin est issu d'un développement "open source" (logiciels libre). Il permet de spécifier des requêtes MySQL en remplissant des formulaires HTML
Démo
Voir directement sur "site" chez l'hébergeur "free" :, sous le compte bfricottin ou "en local" phpMyAdmin sur mon ordi.
s'identifier -> connexion, 1 ou plusieurs BD, (+) nouvelle BD page de garde -> encodage + tri, aide MySQL en ligne choix d'une BD -> liste des tables, et accès à leur gestion choix d'un table -> présentation de sa structure, "
[Valérie Bellynck], [11 octobre 2007] - Initiation à MySQL TOC
Références << (21 of 21)
Bibliographie
Des bases de données à l'Internet, Philippe Mathieu , Passeport pour l'informatique, Ed. Vuibert, 2000
Oracle SQL*Plus, Jonathan Gennick (traduction de Lionel Montmayeur), précis et concis, Ed. O'Reilly
Webographie
Remarque : il est très pratique d'utiliser wikipédia pour aborder un nouveau sujet, et s'en faire une idée assez précise. Par contre, il faut se méfier de la véracité des information qu'on y trouve :
d'une part, ce sont plus souvent des personnes en phase de construction de leur savoir qui participent, et moins des experts du domaine
d'autre part, beaucoup de contenus résultent de traduction de documents en anglais, et le vocabulaire n'est pas toujours constitué des termes choisis par les experts du le domaine.
[Valérie Bellynck], [11 octobre 2007] - Initiation à MySQL TOC
