MySQL.

Slides:



Advertisements
Présentations similaires
Bases de Données Avancées: Bases de Données Relationnelles
Advertisements

Access Frédéric Gava (MCF)
SQL - Subtilités.
Algèbre relationnelle
TP 3-4 BD21.
Année universitaire Système dinformation Le SQL (Structured Query Language) langage dinterrogation dune base de données.
LE LANGAGE SQL : LDD La création de tables L’ordre CREATE CREATE TABLE nom_de_table (Nom_colonne Type_colonne, Nom_colonne Type_colonne,
Gestion de la communication par établissement sur le site ville
Licence GNU FDL - Version 1.5
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
LMD: Langage de Manipulation de Données
Développement d’applications web
Contrôles d'accès aux données
L’utilisation des bases de données
Serveurs Partagés Oracle
Initiation aux bases de données et à la programmation événementielle
LANGAGES LIES AU MODELE RELATIONNEL
Chap 4 Les bases de données et le modèle relationnel
L’utilisation des bases de données
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
SQL Partie 3 : (LID : Langage d'interrogation de données)
Cours N°2 Base de Données & Langage SQL
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Procédures stockées CPI-SQLServer.
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections 15.5.
SQL: Contraintes et Triggers
1 PHP 1.Langage PHP 1.1. Types de base, variables et constantes 1.2. Opérateurs et expressions 1.3. Instructions 1.4. Fonctions 2.Accès aux bases de données:
Cours N°2 Base de Données & Langage SQL
Création de bases de données
Les concepts et les méthodes des bases de données
1 SQL Manipulations Avancées (08-09) Witold Litwin.
Manipulation des données Requêtes simples
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
Michel Tollenaere SQL et relationnel ENSGI Cours MSI 2A Relationnel et SQL version 1.4 du 25 septembre 2007 (ajout jointures) 1 Modèle relationnel Historique.
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 SQL jointure PHILIPPE BANCQUART.
LE LANGAGE DE REQUETES SQL2
Cours 4b: Introduction au SQL, le langage des SGBD Relationnels
PHP & My SQL.
Création et présentation d’un tableau avec Word 2007
Chap 4.5 : SQL (LDD) LDD : Langage de définition de données Réfs : Manuel p105.
Gérer la sécurité des mots de passe et les ressources
Initiation MS Access 2010 Requêtes - Sélection (travail en autonomie)
PHP 5° PARTIE : LES COOKIES
Traduction des opérations sous MySQL
Cours n°4M2. ESCE (S. Sidhom) Séminaire ( 6-12 Février 2007 ) Promo. M2 ESCE-Tunis 2006/07 Conception d’un système d'information sur Internet Architecture.
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
PostgreSQL – Présentation
Sélection de colonnes (la projection)
 Formulaires HTML : traiter les entrées utilisateur
Quinio1 Bases de données : modèlisation et SGBD Séance 3 B Quinio.
Cours n°4M1.ist-ie (S. Sidhom) UE 203 Promo. M1 IST-IE 2006/07 Conception d’un système d'information sur Internet Architecture trois-tiers : technologies.
Les vues Une vue: c’est une relation virtuelle. Définie par:
Structured Query Language 1/34. SQL Types de données Langage de Définition de Données (LDD) Langage de Manipulation de Données (LDM) Langage de Contrôle.
MySQL. Valérie Gay– MySQL - page MySQL MySQL (``Maille Ess Ku Ell'' ) est un langage rapide, multi-threaded, multi- utilisateur, c'est aussi.
Le langage SQL.
Initiation aux bases de données et à la programmation événementielle
INTRODUCTION AUX BASES DE DONNEES Base et métabase
Op é rateurs ensemblistes Module 4. 2 La clause GROUP BY La clause GROUP BY est nécessaire dès que l'on utilise des fonctions de calculs statistiques.
Cours n°2 Implémentation et exploitation
Le Langage d ’ Interrogation des donn é es (LID) Module 2.
Bases de données – Cours 3
CONCEPTS BD - Synthèse journée 1 :
Les bases de données Séance 4 Construction du Modèle Physique (la BDD)
1 Initiation aux bases de données et à la programmation événementielle VBA sous ACCESS Cours N° 4 Support de cours rédigé par Bernard COFFIN Université.
1 Les bases de données Séance 5 -- Le Langage de Définition de Données ou la manœuvre de la structure de la base -- Le Langage de Manœuvre de Données.
1 Les bases de données Séance 6 L ’extraction de données Le SELECT.
Transcription de la présentation:

MySQL

MySQL MySQL (``Maille Ess Ku Ell'' ) est un SGBD multi-threaded, multi-utilisateurs, c'est aussi un serveur de base de données SQL robuste : http://www.mysql.com/ Documentation sur MySQL sur le serveur Titan http://www.mysql.com/documentation/ http://dev.nexen.net/docs/mysql/

Connection au serveur Configuration client/serveur Connection : shell> mysql [-h host_name] [-u user_name] [-pyour_pass] Ex: mysql -h localhost -u joe -ptoto Par défaut, mysql utilise les valeurs suivantes : Le nom d'hôte par défaut est localhost, c'est à dire la machine locale (titan à l’IUT). Le nom d'utilisateur par défaut est le nom de login Unix. Aucun mot de passe n'est envoyé si -p n'est pas précisé. Pour avoir la liste des options disponibles sur mysql shell> mysql --help

(De)connection au serveur shell> mysql -h titan -u user -p Enter password: ******** mysql> SELECT VERSION(), CURRENT_DATE; +--------------+-------------------------+ | version() | CURRENT_DATE | | 3.23.19 | 1999-03-19 | 1 row in set (0.01 sec) mysql> USE menagerie Database changed. mysql> QUIT Bye Vous pouvez aussi vous déconnecter en tapant les touches CTRL-D.

mysql en mode batch mettre les commandes que vous souhaitez exécuter dans un fichier.  shell> mysql < batch-file ou  shell> mysql -h host -u user -p < batch-file Enter password: ********. Pourquoi utiliser un script ? - requête utilisée de manière régulière (par exemple, tous les jours, toutes les semaines), - nouvelles requêtes générées à partir d'autres requêtes déjà existantes, en utilisant le copier/coller. - A chaque erreur, vous n'avez pas tout à retaper, mais juste la commande erronée.

mysql en mode batch shell> mysql < batch-file > mysql.out Si une requête génère beaucoup d'informations, vous pouvez les voir avec un outil adapté, plutôt que de les regarder simplement défiler sur l'écran.  shell> mysql < batch-file | more Vous pouvez enregistrer les résultats dans un fichier pour les retraiter ailleurs  shell> mysql < batch-file > mysql.out

Programmation MySQL

Chaîne & entiers Une chaîne est une séquence de caractères, entourée par des guillemets simples ('') ou doubles(""). Par exemple :  'une chaîne‘, "une autre chaîne” Les séquences spéciales commencent avec le caractère backslash (`\’) appelé caractère d'échappement. · \0 ASCII 0 (NUL). · \n Une nouvelle ligne. · \t Une tabulation. · \r Un retour chariot. · \b Un effacement. · \' Un guillemet simple · \" Un guillemet double · \\ Un backslash Les entiers sont représentés comme une séquence de chiffres. Les nombres réel utilise le point (.) comme séparateur décimal. Les entiers et les réels peuvent être précédés par le signe moins (`-'), pour indiquer un nombre négatif.'

Types de colonnes TINYINT SMALLINT MEDIUMINT INT INTEGER BIGINT FLOAT(4) FLOAT(8) FLOAT DOUBLE DOUBLE PRECISION REAL DECIMAL(M,D) NUMERIC(M,D) DATETIME DATE TIMESTAMP TIME YEAR CHAR(M) VARCHAR(M) TINYBLOB, TINYTEXT BLOB, TEXT MEDIUMBLOB, MEDIUMTEXT LONGBLOB, LONGTEXT ENUM('value1','value2',...) SET('value1','value2',...)

USE USE Nom_bd La commande USE Nom_bd indique à MySQL le nom de la base de données par défaut pour les requête suivantes. Cette base est utilisée jusqu'à la fin de la session, ou jusqu'à la prochaine utilisation de la commande USE.

SHOW (Informations,...) SHOW DATABASES ou SHOW TABLES [FROM Nom_bdd] ou SHOW COLUMNS FROM Nom_table [FROM Nom_bdd] ou SHOW INDEX FROM Nom_table [FROM Nom_bdd] ou SHOW fourni les caractéristiques des bases de données, tables et colonnes sur le serveur. La commande DESCRIBE fournit les mêmes informations que SHOW COLUMNS.

Index Tous les types de colonnes peuvent être indexés, sauf les types BLOB et TEXT. L'utilisation d'index permet d'accélérer les performances des clauses SELECT. Une table peut avoir jusqu'à 16 index. une colonne indexée doit être déclarée NOT NULL. L'exemple suivant définit un index pour les 10 premiers caractères de la colonne Nom. CREATE TABLE test (nom CHAR(200) NOT NULL, INDEX Nom_index (nom(10))); MySQL peut créer des index sur plusieurs colonnes en même temps. INDEX nom_complet (nom, prenom));

Fonctionnalités ajoutées L’intégrité référentielle définie grâce aux clés secondaires (suivant la syntaxe FOREIGN KEY) n'avait aucun effet jusqu’aux versions 2.23.x de MySQL. Elle est implémentée depuis la version 4.1, avec les tables Innodb seulement "Type= INNODB" à rajouter à la fin du Create table  Transactions et requêtes imbriquées sont gérées à partir de la version 4.1. MySQL supporte les vues à partir de la version 5.0. Les procédures stockées et les triggers sont également supportés depuis la version 5.0

Opérations ensemblistes Seule l’UNION est gérée depuis la version 4.0. EXCEPT et INTERSECT sont prévus à moyen terme. Ils peuvent être remplacés par des requêtes imbriquées séparées avec IN et NOT IN respectivement.

Traduction des opérations en SQL

Projection & Sélection Ex : Select noetud, nometud From Etudiant; Sélection ou restriction From Etudiant Where age < 18 and nometud=‘Martin’; Noetud,nometud Etudiant age < 18 et nometud=‘Martin’ Etudiant …

Tri & Union Tri Union - Syntaxe SQL2 implémentée : Ex : SELECT nometud FROM Etudiant ORDER BY nometud, age DESC Union - Syntaxe SQL2 implémentée : select ... from R1 where ... Union select ... From R2 where ... … Nometud , age Etudiant R1 R2 U

Intersection Syntaxe SQL2 pas implémentée : select … from pilote INTERSECT select … from vol Remplacée par requête imbriquée en SQL de base : ex : select plnom from pilote where nopil in (select nopil from vol) … Pilote Vol U nopil

Différence Syntaxe SQL2 pas implémentée : select ... From pilote where ... EXCEPT (ou MINUS) select ... from vol where ... Remplacée par requête imbriquée en SQL de base avec NOT IN : ex : select plnom from pilote where nopil NOT IN (select nopil from vol) … pilote vol _ nopil

Expression d’une jointure … vol.nopil=pilote.nopil pilote vol Dans une requête principale : Ex: SELECT plnom FROM vol, pilote WHERE vol.nopil=pilote.nopil; Avec une requête imbriquée : Ex: SELECT plnom FROM pilote WHERE nopil in (select nopil from vol); Ou avec une nouvelle syntaxe : Ex: SELECT plnom FROM pilote INNER JOIN vol ON pilote.nopil=vol.nopil;

Différents types de jointure (1/2) Équijointure : Jointure avec un test d’égalité (Vol.nopil = Pilote.nopil) Autojointure : Jointure d’une table avec elle-même Thêta-jointure : Jointure avec un opérateur différent de l’égalité (Avion1.capacité > Avion2.capacité) Jointure interne : Contient que les tuples qui "joignent" c-à-d ceux ayant au moins un correspondant dans l’autre table

Différents types de jointure (2/2) Jointure externe : Mécanisme qui permet de conserver les tuples n’ayant pas de correspondant dans l’autre table Jointure externe gauche (LEFT OUTER JOIN) SELECT avion.noav, avnom FROM avion LEFT JOIN vol ON avion.noav=vol.noav; Jointure externe droite (RIGHT OUTER JOIN) SELECT avion.noav, avnom FROM avion RIGHT JOIN vol ON avion.noav=vol.noav; Voir syntaxe Oracle dans le support de cours

Produit cartésien Lorsque la clause WHERE est oubliée Ex: SELECT * FROM vol, pilote; Lorsque la jointure s’effectue entre deux champs non clés de même type Ex: SELECT * FROM pilote, avion WHERE plville = loc; pilote pilote X vol vol Nombre total de n-uplets = nbr de n-uplets de Vol X nbr de n-uplets de Pilote pilote pilote X avion avion plville=loc

Regroupement ou Agrégat Calcul répétitif sur des groupes de lignes Ex : SELECT date_com, COUNT(*) FROM commande GROUP BY date_com Règle : Tous les attributs du SELECT qui ne sont pas dans une fonction de groupe doivent être dans le Group by Conseils : Repérer les expressions "pour chaque" ou "par" qui introduisent un traitement répétitif En cas de requête complexe, se représenter le résultat et étudier comment on procèderait manuellement au calcul … Count(*) Date_com commande