Administrezvosbasesdedonnéesavec MySQL

Transcription

Auteur externeAdministrez vos bases de données avecMySQL12 mai 2020

Table des matières.1.Quelques exemples d’applications15.2.Points abordés dans ce tutoriel16I.MySQL et les bases du langage SQL17I.1.IntroductionI.1.1.Concepts de base . . . . . . . . . .I.1.1.1.Base de données . . . . . . .I.1.1.2.SGBD . . . . . . . . . . . .I.1.1.3.SGBDR . . . . . . . . . . .I.1.1.4.Le langage SQL . . . . . . .I.1.2.Présentation succincte de MySQL.I.1.2.1.Un peu d’histoire . . . . . .I.1.2.2.Mise en garde . . . . . . . .I.1.3. et de ses concurrents . . . . . . .I.1.3.1.Oracle database . . . . . . .I.1.3.2.PostgreSQL . . . . . . . . .I.1.3.3.MS Access . . . . . . . . . .I.1.3.4.SQLite . . . . . . . . . . . .I.1.4.Organisation d’une base de donnéesI.1.4.1.En résumé . . . . . . . . . .I.2.Installation de MySQLI.2.1.Avant-propos . . . . . . . . . . . . . . . . . . .I.2.1.1.Ligne de commande . . . . . . . . . . . .I.2.1.2.Interface graphique . . . . . . . . . . . .I.2.1.3.Pourquoi utiliser la ligne de commande ?I.2.2.Installation du logiciel . . . . . . . . . . . . . .I.2.2.1.Windows . . . . . . . . . . . . . . . . . .I.2.2.2.Mac OS . . . . . . . . . . . . . . . . . .I.2.2.3.Linux . . . . . . . . . . . . . . . . . . . .I.2.3.Connexion à MySQL . . . . . . . . . . . . . . .I.2.3.1.Connexion au client . . . . . . . . . . . .I.2.3.2.Déconnexion . . . . . . . . . . . . . . . .I.2.4.Syntaxe SQL et premières commandes . . . . .I.2.4.1.”Hello World !” . . . . . . . . . . . . . .I.2.4.2.Syntaxe . . . . . . . . . . . . . . . . . .I.2.4.3.Un peu de math . . . . . . . . . . . . . .I.2.4.4.Utilisateur . . . . . . . . . . . . . . . . 31323333353636363839

Table des matièresI.2.5.Encodage, jeux de caractèresI.2.5.1.La table ASCII . . .I.2.5.2.Jeux de caractères . .I.2.5.3.Interclassement . . .I.2.5.4.En résumé . . . . . .et interclassement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .I.3.Les types de donnéesI.3.1.Avertissement . . . . . . . . . . . . .I.3.2.Types numériques . . . . . . . . . . .I.3.2.1.Nombres entiers . . . . . . . .I.3.2.2.Nombres décimaux . . . . . .I.3.3.Types alphanumériques . . . . . . . .I.3.3.1.Chaînes de type texte . . . . .I.3.3.2.Chaînes de type binaire . . . .I.3.3.3.SET et ENUM . . . . . . . . .I.3.4.Types temporels . . . . . . . . . . . .I.3.4.1.DATE, TIME et DATETIMEI.3.4.2.YEAR . . . . . . . . . . . . .I.3.4.3.TIMESTAMP . . . . . . . . .I.3.4.4.La date par défaut . . . . . .I.3.4.5.En résumé . . . . . . . . . . .I.4.Création d’une base de donnéesI.4.1.Avant-propos : conseils et conventions . . . . .I.4.1.1.Conseils . . . . . . . . . . . . . . . . .I.4.1.2.Conventions . . . . . . . . . . . . . . .I.4.1.3.Mise en situation . . . . . . . . . . . .I.4.2.Création et suppression d’une base de donnéesI.4.2.1.Création . . . . . . . . . . . . . . . . .I.4.2.2.Suppression . . . . . . . . . . . . . . .I.4.2.3.Utilisation d’une base de données . . .I.4.2.4.En résumé . . . . . . . . . . . . . . . .I.5.Création de tablesI.5.1.Définition des colonnes . . . . . . . . . . . . . . .I.5.1.1.Type de colonne . . . . . . . . . . . . . . .I.5.1.2.NULL or NOT NULL ? . . . . . . . . . . .I.5.1.3.Récapitulatif . . . . . . . . . . . . . . . . .I.5.2.Introduction aux clés primaires . . . . . . . . . .I.5.2.1.Identité . . . . . . . . . . . . . . . . . . . .I.5.2.2.Clé primaire . . . . . . . . . . . . . . . . .I.5.2.3.Auto-incrémentation . . . . . . . . . . . .I.5.3.Les moteurs de tables . . . . . . . . . . . . . . . .I.5.3.1.Préciser un moteur lors de la création de laI.5.4.Syntaxe de CREATE TABLE . . . . . . . . . . .I.5.4.1.Syntaxe . . . . . . . . . . . . . . . . . . .I.5.4.2.Application : création de Animal . . . . . .I.5.4.3.Vérifications . . . . . . . . . . . . . . . . 657575858585960. . . . . . . . . . . . . . . . . . .table. . . . . . . . .616161626263636364646565656767.

Table des matièresI.5.5.Suppression d’une table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68I.5.5.1.En résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68I.6.Modification d’une tableI.6.1.Syntaxe de la requête . . . . . . . . . . .I.6.2.Ajout et suppression d’une colonne . . .I.6.2.1.Ajout . . . . . . . . . . . . . . . .I.6.2.2.Suppression . . . . . . . . . . . .I.6.3.Modification de colonne . . . . . . . . . .I.6.3.1.Changement du nom de la colonneI.6.3.2.Changement du type de données .I.6.3.3.En résumé . . . . . . . . . . . . .I.7.Insertion de donnéesI.7.1.Syntaxe de INSERT . . . . . . . . . . . . . . . . . . . . .I.7.1.1.Insertion sans préciser les colonnes . . . . . . . . .I.7.1.2.Insertion en précisant les colonnes . . . . . . . . .I.7.1.3.Insertion multiple . . . . . . . . . . . . . . . . . .I.7.2.Syntaxe alternative de MySQL . . . . . . . . . . . . . . .I.7.3.Utilisation de fichiers externes . . . . . . . . . . . . . . .I.7.3.1.Exécuter des commandes SQL à partir d’un fichierI.7.3.2.Insérer des données à partir d’un fichier formaté .I.7.4.Remplissage de la base . . . . . . . . . . . . . . . . . . .I.7.4.1.Exécution de commandes SQL . . . . . . . . . . .I.7.4.2.LOAD DATA INFILE . . . . . . . . . . . . . . .I.7.4.3.En résumé . . . . . . . . . . . . . . . . . . . . . .Contenu masqué . . . . . . . . . . . . . . . . . . . . . . .I.8.Sélection de donnéesI.8.1.Syntaxe de SELECT . . . . . . . . . .I.8.1.1.Sélectionner toutes les colonnesI.8.2.La clause WHERE . . . . . . . . . . .I.8.2.1.Les opérateurs de comparaison .I.8.2.2.Combinaisons de critères . . . .I.8.2.3.Sélection complexe . . . . . . .I.8.2.4.Le cas de NULL . . . . . . . . .I.8.3.Tri des données . . . . . . . . . . . . .I.8.3.1.Tri ascendant ou descendant . .I.8.3.2.Trier sur plusieurs colonnes . . .I.8.4.Éliminer les doublons . . . . . . . . . .I.8.5.Restreindre les résultats . . . . . . . .I.8.5.1.Syntaxe . . . . . . . . . . . . .I.8.5.2.Syntaxe alternative . . . . . . .I.8.5.3.En résumé . . . . . . . . . . . .Contenu masqué . . . . . . . . . . . . .I.9.Élargir les possibilités de la clause WHERE94I.9.1.Recherche approximative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94I.9.1.1.Sensibilité à la casse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.8282838384848687898990909191929393

Table des matièresI.9.1.2.Recherche dans les numériquesI.9.2.Recherche dans un intervalle . . . . .I.9.3.Set de critères . . . . . . . . . . . . .I.9.3.1.En résumé . . . . . . . . . . .I.10. Suppression et modification de donnéesI.10.1. Sauvegarde d’une base de données .I.10.2. Suppression . . . . . . . . . . . . .I.10.3. Modification . . . . . . . . . . . . .I.10.3.1. En résumé . . . . . . . . . .96979798.9999101101102II. Index, jointures et sous-requêtes103II.1. Index105II.1.0.1. Etat actuelle de la base de données . . . . . . . . . . . . . . . . . . . 105II.1.1. Qu’est-ce qu’un index ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105II.1.1.1. Intérêt des index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107II.1.1.2. Désavantages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107II.1.1.3. Index sur plusieurs colonnes . . . . . . . . . . . . . . . . . . . . . . . 107II.1.1.4. Index sur des colonnes de type alphanumérique . . . . . . . . . . . . . 110II.1.2. Les différents types d’index . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112II.1.2.1. Index UNIQUE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112II.1.2.2. Index FULLTEXT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113II.1.3. Création et suppression des index . . . . . . . . . . . . . . . . . . . . . . . . 113II.1.3.1. Ajout des index lors de la création de la table . . . . . . . . . . . . . 113II.1.3.2. Ajout des index après création de la table . . . . . . . . . . . . . . . . 115II.1.3.3. Complément pour la création d’un index UNIQUE - le cas des contraintes117II.1.3.4. Suppression d’un index . . . . . . . . . . . . . . . . . . . . . . . . . . 118II.1.4. Recherches avec FULLTEXT . . . . . . . . . . . . . . . . . . . . . . . . . . . 118II.1.4.1. Comment fonctionne la recherche FULLTEXT ? . . . . . . . . . . . . 119II.1.4.2. Les types de recherche . . . . . . . . . . . . . . . . . . . . . . . . . . 119II.1.4.3. En résumé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127Contenu masqué . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128II.2. Clés primaires et étrangèresII.2.1. Clés primaires, le retour . . . . . . . .II.2.1.1. Choix de la clé primaire . . . .II.2.1.2. Création d’une clé primaire . . .II.2.1.3. Suppression de la clé primaire .II.2.2. Clés étrangères . . . . . . . . . . . . .II.2.2.1. Création . . . . . . . . . . . . .II.2.2.2. Suppression d’une clé étrangèreII.2.3. Modification de notre base . . . . . . .II.2.3.1. La table Espece . . . . . . . . .II.2.3.2. La table Animal . . . . . . . . .II.2.3.3. En résumé . . . . . . . . . . . .Contenu masqué . . . . . . . . . . . . .4.130130131132134134135136137137138141142

Table des matièresII.3. JointuresII.3.1. Principe des jointures et notion d’alias . . . .II.3.1.1. Principe des jointures . . . . . . . . . .II.3.1.2. Notion d’alias . . . . . . . . . . . . . .II.3.2. Jointure interne . . . . . . . . . . . . . . . . .II.3.2.1. Syntaxe . . . . . . . . . . . . . . . . .II.3.2.2. Pourquoi ”interne” ? . . . . . . . . . . .II.3.3. Jointure externe . . . . . . . . . . . . . . . . .II.3.3.1. Jointures par la gauche . . . . . . . . .II.3.3.2. Jointures par la droite . . . . . . . . .II.3.4. Syntaxes alternatives . . . . . . . . . . . . . .II.3.4.1. Jointures avec USING . . . . . . . . . .II.3.4.2. Jointures naturelles . . . . . . . . . . .II.3.4.3. Jointures sans JOIN . . . . . . . . . . .II.3.5. Exemples d’application et exercices . . . . . .II.3.5.1. A/ Commençons par des choses facilesII.3.5.2. B/ Compliquons un peu les choses . . .II.3.5.3. C/ Et maintenant, le test ultime ! . . .II.3.5.4. En résumé . . . . . . . . . . . . . . . .Contenu masqué . . . . . . . . . . . . . . . . .II.4. Sous-requêtesII.4.1. Sous-requêtes dans le FROM . . . . . .II.4.1.1. Les règles à respecter . . . . . .II.4.2. Sous-requêtes dans les conditions . . .II.4.2.1. Comparaisons . . . . . . . . . .II.4.2.2. Conditions avec IN et NOT IN .II.4.2.3. Conditions avec ANY, SOME etII.4.3. Sous-requêtes corrélées . . . . . . . . .II.4.3.1. En résumé . . . . . . . . . . . . . . . . . . . . . .ALL. . . . .II.5. Jointures et sous-requêtes : modification de donnéesII.5.1. Insertion . . . . . . . . . . . . . . . . . . . . . .II.5.1.1. Sous-requête pour l’insertion . . . . . . .II.5.2. Modification . . . . . . . . . . . . . . . . . . . .II.5.2.1. Utilisation des sous-requêtes . . . . . . .II.5.2.2. Modification avec jointure . . . . . . . .II.5.3. Suppression . . . . . . . . . . . . . . . . . . . .II.5.3.1. Utilisation des sous-requêtes . . . . . . .II.5.3.2. Suppression avec jointure . . . . . . . . .II.5.3.3. En résumé . . . . . . . . . . . . . . . . .II.6. Union de plusieurs requêtesII.6.1. Syntaxe . . . . . . . .II.6.1.1. Les règles . . .II.6.2. UNION ALL . . . . . .II.6.3. LIMIT et ORDER BYII.6.3.1. LIMIT . . . . .II.6.3.2. ORDER BY . .5.

Tabledesmatières.1. Quelquesexemplesd’applications 15.2. Pointsabordésdanscetutoriel 16 I. MySQLetlesbasesdulangageSQL 17 I.1. Introduction 19