MySQL. Valérie Gay– MySQL - page 2 - 2001 MySQL MySQL (``Maille Ess Ku Ell'' ) est un langage rapide, multi-threaded, multi- utilisateur, c'est aussi.

Slides:



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

SQL - Subtilités.
PHP mySQL Extension php_mysql. Connexion à une base de données Établir une connexion mysql_connect(string server, string username, string password) –permet.
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,
Licence GNU FDL - Version 1.5
LMD: Langage de Manipulation de Données
Faculté I&C, Claude Petitpierre, André Maurer Bases de données SQL (Structured Query Language)
Contrôles d'accès aux données
L’utilisation des bases de données
Initiation aux bases de données et à la programmation événementielle
L’utilisation des bases de données
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Procédures stockées CPI-SQLServer.
SQL: Contraintes et Triggers
MySQL Création des sites dynamiques
Création de bases de données
Bases de Données Avancées - TP2: SQL
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
1 CSI 2532 Lab3 6 Février 2012 Programmation avancée SQL.
Christine Bonnet SOURCES : « Samples » dOracle, « Oracle 8 » R. Chapuis PRO*C – C ++
Introduction Le SQL (Structured  Query Language) est un langage universel de gestion des bases de données. Il a une triple fonction : LDD Langage de Définition.
Cours 4b: Introduction au SQL, le langage des SGBD Relationnels
Chap 4.5 : SQL (LDD) LDD : Langage de définition de données Réfs : Manuel p105.
 CREATE TABLE  DROP TABLE  ALTER TABLE  INSERT  UPDATE  DELETE  SELECT interrogation 2 Instruction de mise à jour structure.
MySQL.
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Transac SQL Intégrité des données.
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.
 Requêtes MySQL en PHP Introduction
1 PHP 5 Notions fondamentales (cours #5) Formation continue – Cégep de Sainte-Foy.
PostgreSQL – Présentation
Module 7 : Utilisation de requêtes élaborées
DEFINITION DES DONNEES : schéma conceptuel. Schéma conceptuel instructiondescription CREATE TABLEcréation d'une relation ALTER TABLEmodification de la.
Module 4 : Implémentation de l'intégrité des données.
Sélection de colonnes (la projection)
Gérer les rôles.
Gérer les utilisateurs
21/04/2015© Robert Godin. Tous droits réservés.1 6Gestion des contraintes d’intégrité en SQL n Contrainte d'intégrité statique – respectée pour chacun.
Cours SQL.
Quinio1 Bases de données : modèlisation et SGBD Séance 3 B Quinio.
Création et Gestion de Tables
3 Copyright © Oracle Corporation, Tous droits réservés. Créer des fonctions.
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:
Analyse et Conception de Systèmes Informatiques (ACSI)
Cours Access TuanLoc NGUYEN. Contact Nguyen TuanLoc Tél: Web:
06/04/06 LES BASES DE DONNEES INTRODUCTION CogniTIC – Bruxelles Formation - Cepegra.
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.
Les bases de données Séance 8 Jointures.
Le langage SQL.
Séance /10/2004 SGBD - Approches & Principes.
Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage d’interrogation de données. (Les requêtes statistiques et autres).
Initiation aux bases de données et à la programmation événementielle
NIVEAU LOGIQUE Vues. Fenêtre dynamique sur la base Ses données proviennent d'autres tables ou d'autres vues.
INTRODUCTION AUX BASES DE DONNEES Base et métabase
Cours n°2 Implémentation et exploitation
Bases de données – Cours 3
CONCEPTS BD - Synthèse journée 1 :
De Arnault Chazareix :
Les bases de données Séance 4 Construction du Modèle Physique (la BDD)
Bases de données : modèlisation et SGBD Séance 3.
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.
Langages d’interrogation et de manipulation. N. ChaignaudGM4 - Base de données2 1. Algèbre relationnelle  Ensemble d’opérations permettant de manipuler.
Structured Query Language
Transcription de la présentation:

MySQL

Valérie Gay– MySQL - page MySQL MySQL (``Maille Ess Ku Ell'' ) est un langage rapide, multi-threaded, multi- utilisateur, c'est aussi un serveur de base de données SQL robuste (Structured Query Language). Documentation sur MySQL –sur le serveur Titan – –

Valérie Gay– MySQL - page Qu'est ce que MySQL? Véritable serveur de base de données SQL multi-utilisateur et "multi-threaded". configuration client/serveur ce qui consiste en un serveur démon mysqld, différents programmes clients et des librairies. SQL est le plus populaire langage de base de données dans le monde. SQL est un langage standardisé qui rend facile le stockage, la mise à jour et l'accès à l'information.

Valérie Gay– MySQL - page Connection au serveur 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.  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

Valérie Gay– MySQL - page (De)connection au serveur shell> mysql -h localhost -u user -p Enter password: ******** mysql> SELECT VERSION(), CURRENT_DATE; | version() | CURRENT_DATE | | | | 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.

Valérie Gay– MySQL - page mysql en mode batch mettre les commandes que vous souhaitez exécuter dans un fichier. shell> mysql 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.

Valérie Gay– MySQL - page mysql en mode batch  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 mysql.out

Valérie Gay– MySQL - page Droits sous MySQL Les droits select, insert, update et delete permettent d'exécuter des opérations sur les lignes dans les tables existantes d'une base. Le droit alter vous permet d'utiliser la commande ALTER TABLE. Les droits create et drop vous permet de créer et détruire de nouvelles tables et bases. Le droit grant vous permet de donner des droits que vous possédez à un autre utilisateur. mysql> GRANT ALL PRIVILEGES ON *.* TO IDENTIFIED BY 'quelquechose'; mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE, DROP ON bank.* TO IDENTIFIED BY ‘toto';

Programmation MySQL

Valérie Gay– MySQL - page 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 ( `\' ), 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.'

Valérie Gay– MySQL - page 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',...)

Valérie Gay– MySQL - page Index de colonne Tous les types de colonnes peuvent être indexés, à l'exception des types BLOB et TEXT. L'utilisation d'index est le meilleur moyen 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 créer 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)));

Valérie Gay– MySQL - page Index multi-colonnes MySQL peut créer des index sur plusieurs colonnes en même temps. MySQL gère les index sur plusieurs colonnes de manière à ce que les requêtes qui recherche une valeur connue dans la première colonne (avec une clause WHERE ), soient rapides, même si les valeurs pour les autres colonnes ne sont pas précisées. Exemple: CREATE TABLE test (id INT NOT NULL, nom CHAR(30) NOT NULL, prenom CHAR(30) NOT NULL, PRIMARY KEY (id), INDEX nom_complet (nom, prenom));

Valérie Gay– MySQL - page CREATE DATABASE CREATE DATABASE nom_bd Crée une base de donnée avec le nom Nom_bd. MySQL retourne une erreur si la base de données existe déjà. Avec MySQL, les bases sont représentées sous la forme de dossiers qui contiendront des fichiers, qui représenteront les tables. Etant donné qu'à la création d'une base, cette dernière est vide, CREATE DATABASE se contente de créer un dossier dans le dossier données de MySQL.

Valérie Gay– MySQL - page DROP DATABASE DROP DATABASE [IF EXISTS] Nom_bd DROP DATABASE efface toutes les tables de la base, ainsi que la base, i.e. le dossier. Il faut être TRES prudent avec cette commande. DROP DATABASE retourne le nombre de fichiers qui ont été effacés. Pour les tables MyISAM les index et les données sont dans deux fichiers.MYI et.MYD. Avec InnoDB tout est rassemblé dans un ou plusieurs fichiers appelé Tablespace. La structure des tables est stockée dans un fichier.frm

Valérie Gay– MySQL - page CREATE TABLE CREATE [TEMPORARY] TABLE [IF NOT EXISTS] Nom_table ( Nom_col type [NOT NULL | NULL] [DEFAULT valeur_par_defaut] [AUTO_INCREMENT] [PRIMARY KEY] [reference_definition] ou PRIMARY KEY (index_Nom_col,...) ou KEY [Nom_index] KEY(index_Nom_col,...) ou INDEX [Nom_index] (index_Nom_col,...) ou UNIQUE [INDEX] [Nom_index] (index_Nom_col,...) ou [CONSTRAINT symbole] FOREIGN KEY nom_index (index_Nom_col,...) [reference_definition] ou CHECK (expression ) )

Valérie Gay– MySQL - page ALTER TABLE ALTER [IGNORE] TABLE Nom_table alter_spec [, alter_spec...] alter_specification = ADD [COLUMN] create_definition [FIRST | AFTER column_name ] ou ADD INDEX [Nom_index] (index_Nom_col,...) ou ADD PRIMARY KEY (index_Nom_col,...) ou ADD UNIQUE [Nom_index] (index_Nom_col,...) ou ALTER [COLUMN] Nom_col {SET DEFAULT literal | DROP DEFAULT} ou CHANGE [COLUMN] old_Nom_col create_definition ou MODIFY [COLUMN] create_definition ou DROP [COLUMN] Nom_col ou DROP PRIMARY KEY ou DROP INDEX key_name ou RENAME [AS] new_Nom_table ou table_option ALTER TABLE modifie la structure d'une table existante. Par exemple, il est possible d'ajouter ou d'effacer des colonnes, de créer et détruire des index, de changer le type d'une colonne ou de la renommer, ou bien renommer la table.

Valérie Gay– MySQL - page DROP TABLE / DELETE DROP TABLE [IF EXISTS] Nom_table [, Nom_table,...] DROP TABLE efface une ou plusieurs tables. Toutes les données et le fichier de définition sont effacés. Cette commande est irréversible DELETE FROM Nom_table [WHERE where_definition] [LIMIT rows] DELETE efface les lignes de la table Nom_table qui satisfont les conditions données par where_definition, et retourne le nombre de ligne effacées

Valérie Gay– MySQL - page 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 restera courante jusqu'à la fin de la session, ou jusqu'à la prochaine utilisation de la commande USE.

Valérie Gay– MySQL - page SELECT SELECT [DISTINCT | DISTINCTROW | ALL] select_expression,... [FROM table_references [WHERE where_definition] [GROUP BY Nom_col,...] [HAVING where_definition] [ORDER BY {unsigned_integer | Nom_col | formula} [ASC | DESC],...] SELECT est utilisé pour obtenir des lignes à partir d'une ou plusieurs tables. select_expression indique les colonnes à lire.

Valérie Gay– MySQL - page INSERT INSERT [LOW_PRIORITY | DELAYED] [IGNORE] [INTO] Nom_table [(Nom_col,...)] VALUES (expression,...),(...),... INSERT insère une nouvelle ligne dans une table existante

Valérie Gay– MySQL - page UPDATE UPDATE nom_table SET nom_colonne1=expr1, nom_colonne2=expr2,... [WHERE where_definition] UPDATE met à jour une ligne existante dans une table. La clause SET indique quelles colonnes modifier, et quelles valeurs mettre dans ces colonnes. La conditions WHERE permet de choisir quelles lignes sont à mettre à jour. Sinon, toutes les lignes sont mises à jour

Valérie Gay– MySQL - page 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 STATUS ou SHOW VARIABLES ou SHOW PROCESSLISTou SHOW TABLE STATUS [FROM Nom_bdd] 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.

Valérie Gay– MySQL - page GRANT et REVOKE GRANT priv_type [(column_list)] [, priv_type [(column_list)]...] ON {Nom_table | * | *.* | Nom_bdd.*} TO user_name [IDENTIFIED BY 'password'] [, user_name [IDENTIFIED BY 'password']...] [WITH GRANT OPTION] REVOKE priv_type [(column_list)] [, priv_type [(column_list)]...] ON {Nom_table | * | *.* | Nom_bdd.*} FROM user_name [, user_name...] Exemple : mysql> GRANT ALL PRIVILEGES ON *.* TO IDENTIFIED BY 'quelquechose'; mysql> GRANT SELECT,INSERT,UPDATE,DELETE,CREATE, DROP ON bank.* TO IDENTIFIED BY ‘toto';

Valérie Gay– MySQL - page CREATE/DROP INDEX CREATE [UNIQUE] INDEX Nom_index ON Nom_table (Nom_col[(longueur]),... ) CREATE INDEX est un raccourci de ALTER TABLE qui crée des index. Généralement, il est possible de créer les index d'une table au moment de la création de la table, avec CREATE TABLE. CREATE INDEX permettra alors d'ajouter de nouveaux index. DROP INDEX Nom_index DROP INDEX est un raccourci de ALTER TABLE qui efface des index.

Valérie Gay– MySQL - page Fonctionnalités manquantes 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.

Valérie Gay– MySQL - page Fonctionnalités manquantes 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. 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

Valérie Gay– MySQL - page Traduction des opérations sous MySQL Projection Ex : Select noetud, nometud From Etudiant; Sélection ou restriction Ex : Select noetud, nometud From Etudiant Where age < 18 and nometud=‘Martin’; age < 18 et nometud=‘Martin’ Etudiant … Noetud,nometud Etudiant

Valérie Gay– MySQL - page Rappels Tri 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 …

Valérie Gay– MySQL - page Rappel : 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) PiloteVol U nopil …

Valérie Gay– MySQL - page Rappel : 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) pilotevol _ nopil …

Valérie Gay– MySQL - page Expression d’une jointure 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; vol.nopil=pilote.nopil pilotevol …

Valérie Gay– MySQL - page Différents types de jointure É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 (1/2)

Valérie Gay– MySQL - page Différents types de jointure 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 (2/2)

Valérie Gay– MySQL - page Expression d’un 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 avion avion pilote pilote X vol vol Nombre total de n-uplets = nbr de n-uplets de Vol X nbr de n-uplets de Pilote plville=loc

Valérie Gay– MySQL - page 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 …