Vous avez un serveur local qui fonctionne, avec PhPMyAdmin
Vous avez au moins une base de données créée dans PhP MyAdmin (voir cours Créer une base de données avec PhPMyAdmin )
Vous avez vu, rapidement, comment faire des requêtes SQL avec INSERT INTO dans le cours précédent Créer une base de données avec PhPMyAdmin
Nous allons voir plusieurs requêtes, d'abord effectuées dans l'onglet SQL de PhPMyAdmin, puis directement depuis une page web.
Ce cours propose un aperçu des fonctionnalités et des instructions de SQL. Pour plus d'instruction SQL: https://sql.sh
Pour créer une base de données que vous appelez maBaseDeDonnees, si vous avez les droits, la requête est composée du mot clef CREATE puis DATABASE et enfin du nom de la future base de données :
CREATE DATABASE maBaseDeDonnees
Pour supprimer une base de données appelée maBaseDeDonnees, si vous avez les droits, la requête est composée du mot clef DROP puis DATABASE et enfin du nom de la base de données à supprimer :
DROP DATABASE maBaseDeDonnees
Aller dans PhPMyAdmin, puis sur l'onglet SQL
Ecrivez la requête pour créer la base de données testCreationBaseDeDonnees, puis cliquer sur Exécuter
Votre base de données est créée et apparait dans l'aborescence (ici, tout en bas)
Aller dans PhPMyAdmin, puis sur l'onglet SQL
Ecrivez la requête pour supprimer la base de données testCreationBaseDeDonnees, puis cliquer sur Exécuter
Votre base de données est supprimée et n'apparait plus dans l'aborescence.
Pour créer une table que vous appelez maTable avec trois attributs attribut1, attribut2, attribut3 et leur domaine respectif, si vous avez les droits, la requête est composée du mot clef CREATE puis TABLE, du nom de la future table, et entre parenthèse le nom des attributs, et leur domaine, séparés par une virgule de la suite des attributs:
CREATE TABLE maTable ( attribut1 domaine1, attribut2 domaine2, attribut3 domaine3 )
Pour supprimer une table appelée maTable, si vous avez les droits, la requête est composée du mot clef DROP puis TABLE et enfin du nom de la table à supprimer :
DROP TABLE maTable
Aller dans PhPMyAdmin, puis sur l'onglet SQL
Ecrivez la requête pour créer la table Notes:
CREATE TABLE `Notes` (
`idNotes` int(11) NOT NULL,
`note` float NOT NULL,
`idEvaluation` int(11) NOT NULL,
`idEtude` int(11) NOT NULL
)
Votre table est créée et apparait dans l'aborescence.
Le code, pour instancier les clefs primaires, étrangères etc. est plus complexe que celui entré ici. Voici, ci-contre, l'ensemble des requêtes SQL nécessaires pour cela.
C'est pour cette raison que l'on utilise l'interface de PhPMyAdmin par exemple, lors de la création de table.
Par la suite, il est possible d'exporter le code, pour l'importer.
Par ailleurs, il est très rare de créer une table directement via une page web: on crée en général des occurences.
CREATE TABLE `Notes` (
`idNotes` int(11) NOT NULL,
`note` float NOT NULL,
`idEvaluation` int(11) NOT NULL,
`idEtude` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ALTER TABLE `Notes`
ADD PRIMARY KEY (`idNotes`),
ADD KEY `idEvaluation` (`idEvaluation`),
ADD KEY `idEtude` (`idEtude`);
ALTER TABLE `Notes`
MODIFY `idNotes` int(11) NOT NULL AUTO_INCREMENT;
ALTER TABLE `Notes`
ADD CONSTRAINT `notes_ibfk_1` FOREIGN KEY (`idEtude`) REFERENCES `Etude` (`idEtude`),
ADD CONSTRAINT `notes_ibfk_2` FOREIGN KEY (`idEvaluation`) REFERENCES `Evaluation` (`idEvaluation`);
Aller dans PhPMyAdmin, puis sur l'onglet SQL
Ecrivez la requête pour supprimer la table Notes, puis cliquer sur Exécuter
Votre table est supprimée et n'apparait plus dans l'aborescence.
Pour créer une nouvelle colonne attribut1 avec une domaine domaine1 dans une table maTable, si vous avez les droits, la requête est composée du mot clef ALTER puis TABLE, du nom de la table, du mot clef ADD, suivi du nom du nouvel attribut et de son domaine :
ALTER TABLE maTable ADD attribut1 domaine1
Pour supprimer une colonne attribut1 dans une table maTable, si vous avez les droits, la requête est composée du mot clef ALTER puis TABLE, du nom de la table, du mot clef DROP, suivi du nom de l'attribut :
ALTER TABLE maTable DROP attribut1
Aller dans PhPMyAdmin, puis sur l'onglet SQL
Ecrivez la requête pour ajouter l'attribut moyenne à la table Etude:
ALTER TABLE Etude ADD moyenne float NOT NULL
Votre attribut a été ajouté à votre table:
Aller dans PhPMyAdmin, puis sur l'onglet SQL
Ecrivez la requête pour supprimer l'attribut moyenne, puis cliquer sur Exécuter
Votre attribut a été supprimé de votre table:
Pour créer une nouvelle occurrence où attribut1 vaut valeur1Attribut1, où attribut2 vaut valeur1Attribut2 et où attribut3 vaut valeur1Attribut3 dans une table maTable, si vous avez les droits, la requête est composée du mot clef INSERT INTO, du nom de la table, et entre parenthèses le nom des attributs de cette table, suivi du mot clef VALUES puis entre parenthèses les valeurs de ces attributs dans le même ordre que déclaré avant VALUES:
INSERT INTO maTable ( attribut1, attribut2, attribut3) VALUES (valeur1Attribut1, valeur1Attribut2, valeur1Attribut3)
Après VALUES, on peut rajouter plusieurs occurrences, en mettant entre parenthèses toutes les valeurs des occurrences, et en séparant les occurrences par des virgules:
INSERT INTO maTable ( attribut1, attribut2, attribut3) VALUES (valeur1Attribut1, valeur1Attribut2, valeur1Attribut3), (valeur2Attribut1, valeur2Attribut2, valeur2Attribut3), (valeur3Attribut1, valeur3Attribut2, valeur3Attribut3),
Pour supprimer une occurrence dans une table maTable, si vous avez les droits, la requête est composée du mot clef DELETE FROM puis du nom de la table, du mot clef WHERE, suivi de l'attribut de la clef primaire et de sa valeur pour l'occurrence à supprimmer:
DELETE FROM maTable WHERE maClefPrimaire = valeurDeClefPrimaire
On peut également utiliser n'importe quelle condition avec WHERE . Un certain nombre de conditions utilisé avec WHERE sont détaillées dans la section suivant (SELECT).
Aller dans PhPMyAdmin, puis sur l'onglet SQL
Ecrivez la requête pour créer une nouvelle UE:
Votre occurrence a été ajouté dans votre table:
Aller dans PhPMyAdmin, puis sur l'onglet SQL
Ecrivez la requête pour supprimer la dernière UE créée:
Votre occurrence a été supprimée de votre table:
Si une table s'appelle MATABLE dans une base de données, on peut sélectionner toutes les données de la table avec l'instruction suivante:
SELECT * FROM MATABLE
Si on regarde cette instruction en détail:
SELECT : instruction SQL pour sélectionner les données correspondantes aux contraintes données par la suite
* : permet de sélectionner toutes les colonnes (= tous les attributs) de la table spécifiée par la suite
FROM : instruction SQL pour indiquer la table (= la relation) que l'on utilise pour sélectionner les données
MATABLE : nom de la table que l'on utiliser pour sélectionner les données
Dans PhPMyAdmin, selectionner une base de données (ici, Filiere) dans l'aborescence à gauche.
Aller dans l'onglet SQL. Nous allons tenter de sélectionner toutes les évaluations enregistrées dans la base de données.
Nous souhaitons donc "sélectionner" + "tous les attributs" des occurrences + "de la table Evaluation".
La requête correspondante est donc:
SELECT * FROM Evaluation
Ecrivez cette requête dans l'encadré dédié et cliquez sur Exécuter
Une fois exécutée, l'ensemble des occurences de la table (il y en a 4 ici) et l'ensemble des attributs (idEvaluation, Modalites, Debut, Fin, Sujet et idCours) est affiché
Dans PhPMyAdmin, en étant dans la bonne base de données:
Etape 1: cliquer sur l'onglet SQL
Etape 2: taper SELECT * FROM Cours dans l'encadré
Etape 3: cliquer sur Exécuter
Etape 4: les résultats apparaissent
Si une table s'appelle MATABLE dans une base de données et a trois attributs Colonne1, Colonne2 et Colonne3, on peut sélectionner les données de certaines colonnes de la table en remplaçant "*" vu précédemment par les noms des attributs séparés par des virgules.
Pour Colonne1:
SELECT Colonne1 FROM MATABLE
Pour Colonne2:
SELECT Colonne2 FROM MATABLE
Pour Colonne3:
SELECT Colonne3 FROM MATABLE
Pour Colonne1 et Colonne2:
SELECT Colonne1, Colonne2 FROM MATABLE
Pour Colonne2 et Colonne3:
SELECT Colonne2, Colonne3 FROM MATABLE
Pour Colonne1 et Colonne3:
SELECT Colonne1,Colonne3 FROM MATABLE
Dans PhPMyAdmin, selectionner une base de données (ici, Filiere) et ller dans l'onglet SQL.
Nous souhaitons donc "sélectionner" + "les modalités, la fin et le sujet" des occurrences + "de la table Evaluation".
La requête correspondante est donc:
SELECT Modalites, Fin, Sujet FROM Evaluation
Ecrivez cette requête dans l'encadré dédié et cliquez sur Exécuter.
Seuls ces trois attributs sont affichés.
Dans PhPMyAdmin, en étant dans la bonne base de données:
Etape 1: cliquer sur l'onglet SQL
Etape 2: taper SELECT NomCours FROM Cours dans l'encadré
Etape 3: cliquer sur Exécuter
Etape 4: les résultats apparaissent
Dans PhPMyAdmin, en étant dans la bonne base de données:
Etape 1: cliquer sur l'onglet SQL
Etape 2: taper SELECT NomPersonne,PrenomPersonne FROM Personne
Etape 3: cliquer sur Exécuter
Etape 4: les résultats apparaissent
Il suffit de changer l'ordre des attributs dans la requête, en mettant PrenomPersonne avant:
SELECT PrenomPersonne, NomPersonne FROM Personne
Imaginons table qui s'appelle MATABLE dans une base de données et a trois attributs Colonne1, Colonne2 et Colonne3. On peut sélectionner les lignes (=occurences) respectant certaines conditions (ou contraintes). Pour cela on rajoute le mot clef WHERE à la fin de la requête SELECT suivi de la contrainte.
Cela est indépendant de la première partie de la requête, où on choisit les attributs à retourner par la requête
Si on veut sélectionner toutes colonnes et afficher les lignes qui ont la valeur maValeur dans la colonne Colonne1 :
SELECT * FROM MATABLE WHERE Colonne1="maValeur"
Si on veut sélectionner les colonnes Colonne2 et Colonne3 et afficher toutes les lignes qui ont la valeur maValeur dans la colonne Colonne1 :
SELECT Colonne1, Colonne3 FROM MATABLE WHERE Colonne1="maValeur"
Voici un exemple avec la base de données Filiere que vous pouvez essayer. Nous affichons toutes les informations de la table Evaluation pour le cours de base de données (idCours=2)
SELECT * FROM Evaluation WHERE idCours="2"
Voici un exemple avec la base de données Filiere que vous pouvez essayer. Nous affichons les modalités et le sujet de la table Evaluation pour le cours de base de données (idCours=2)
SELECT Modalites, Sujet FROM Evaluation WHERE idCours="2"
Dans PhPMyAdmin, en étant dans la bonne base de données:
Etape 1: cliquer sur l'onglet SQL
Etape 2: taper SELECT * FROM Personne WHERE NomPersonne="Monster"
Etape 3: cliquer sur Exécuter
Etape 4: les résultats apparaissent
Si on veut sélectionner toutes colonnes et afficher les lignes qui ont les valeurs maValeur1 ou maValeur2 dans la colonne Colonne1 :
SELECT * FROM MATABLE WHERE Colonne1 IN ( "maValeur1", "maValeur2" )
Si on veut sélectionner les colonnes Colonne2 et Colonne3 et afficher toutes les lignes qui ont la valeur maValeur dans la colonne Colonne1 :
SELECT Colonne1, Colonne3 FROM MATABLE WHERE Colonne1 IN ( "maValeur1", "maValeur2" )
Voici un exemple avec la base de données Filiere que vous pouvez essayer. Nous affichons toutes les informations de la table Evaluation qui sont soit des projets, soit des dossiers
SELECT * FROM Evaluation WHERE Modalites IN ("Dossier", "Projet")
Voici un exemple avec la base de données Filiere que vous pouvez essayer. Nous affichons le sujet et la date de fin de la table Evaluation pour le cours de base de données (idCours=2)
SELECT Sujet, Fin FROM Evaluation WHERE Modalites IN ("Dossier", "Projet")
Dans PhPMyAdmin, en étant dans la bonne base de données:
Etape 1: cliquer sur l'onglet SQL
Etape 2: taper SELECT * FROM Personne WHERE NomPersonne IN ("Monster", "Thevin", "JadorelUCO") dans l'encadré
Etape 3: cliquer sur Exécuter
Etape 4: les résultats apparaissent
Si on veut sélectionner toutes colonnes et afficher les lignes qui ont les valeurs inférieures à maValeur1 dans la colonne Colonne1 :
SELECT * FROM MATABLE WHERE Colonne1 < "maValeur1"
Si on veut sélectionner toutes colonnes et afficher les lignes qui ont les valeurs supérieures à maValeur2 dans la colonne Colonne1 :
SELECT * FROM MATABLE WHERE Colonne1 > "maValeur2"
Si on veut sélectionner toutes colonnes et afficher les lignes qui ont les valeurs entre maValeur1 et maValeur2 dans la colonne Colonne1 :
SELECT * FROM MATABLE WHERE Colonne1 BETWEEN "maValeur1" AND "maValeur2"
Voici un exemple avec la base de données Filiere que vous pouvez essayer. Nous affichons toutes les informations de la table Evaluation qui ont un rendu avant Noël 2020
SELECT * FROM Evaluation WHERE Fin < '2020-12-24 23:59:00'
Voici un exemple avec la base de données Filiere que vous pouvez essayer. Nous affichons toutes les informations de la table Evaluation qui ont un rendu après le premier de l'an 2021
SELECT * FROM Evaluation WHERE Fin > '2021-01-01 00:00:01'
Voici un exemple avec la base de données Filiere que vous pouvez essayer. Nous affichons toutes les informations de la table Evaluation qui ont un rendu après Noël et avant le premier de l'an 2021
SELECT * FROM Evaluation WHERE Fin BETWEEN '2020-12-24 23:59:00' AND '2021-01-01 00:00:01'
Dans PhPMyAdmin, en étant dans la bonne base de données:
Etape 1: cliquer sur l'onglet SQL
Etape 2: taper SELECT * FROM Personne WHERE idPersonne BETWEEN "4" AND "25" dans l'encadré
Etape 3: cliquer sur Exécuter
Etape 4: les résultats apparaissent
Si on veut sélectionner toutes colonnes et afficher les lignes qui ont les valeurs commence par maValeur1 dans la colonne Colonne1, on ajoute le caractère "%" à la fin de maValeur:
SELECT * FROM MATABLE WHERE Colonne1 LIKE "maValeur1%"
Si on veut sélectionner toutes colonnes et afficher les lignes qui ont les valeurs finissent par maValeur2 dans la colonne Colonne1, on ajoute le caractère "%" au début de maValeur:
SELECT * FROM MATABLE WHERE Colonne1 LIKE "%maValeur2"
Si on veut sélectionner toutes colonnes et afficher les lignes qui contiennent maValeur3 dans la colonne Colonne1, on ajoute le caractère "%" au début et à la fin de maValeur
SELECT * FROM MATABLE WHERE Colonne1 LIKE "%maValeur3%"
Si on veut sélectionner toutes colonnes et afficher les lignes qui contiennent maValeur1, maValeur2 puis maValeur3 (dans cet ordre) dans la colonne Colonne1 , on intercale de % entre les valeurs:
SELECT * FROM MATABLE WHERE Colonne1 LIKE "%maValeur1%maValeur2%maValeur3%"
Voici un exemple avec la base de données Filiere que vous pouvez essayer. Nous affichons toutes les informations de la table Personne qui ont un prénom qui commence par Li
SELECT * FROM Personne WHERE PrenomPersonne LIKE "Li%"
Voici un exemple avec la base de données Filiere que vous pouvez essayer. Nous affichons toutes les informations de la table Personne qui ont un prénom qui fini par un w
SELECT * FROM Personne WHERE PrenomPersonne LIKE "%w"
Voici un exemple avec la base de données Filiere que vous pouvez essayer. Nous affichons toutes les informations de la table Personne qui ont un prénom qui contient un a
SELECT * FROM Personne WHERE PrenomPersonne LIKE "%a%"
Voici un exemple avec la base de données Filiere que vous pouvez essayer. Nous affichons toutes les informations de la table Personne qui ont un prénom qui contient un l puis un i puis un a dans cet ordre.
SELECT * FROM Personne WHERE PrenomPersonne LIKE "%l%i%a%"
Dans PhPMyAdmin, en étant dans la bonne base de données:
Etape 1: cliquer sur l'onglet SQL
Etape 2: taper SELECT * FROM Cours WHERE nomCours LIKE "%web%"
Etape 3: cliquer sur Exécuter
Etape 4: les résultats apparaissent
Dans PhPMyAdmin, en étant dans la bonne base de données:
Etape 1: cliquer sur l'onglet SQL
Etape 2: taper SELECT * FROM Cours WHERE nomCours LIKE "%e%e%"
Etape 3: cliquer sur Exécuter
Etape 4: les résultats apparaissent
Si une table s'appelle MATABLE dans une base de données et a trois attributs Colonne1, Colonne2 et Colonne3, on peut trier les données récupérées avec l'instruction ORDER BY suivi du nom de la colonne qui sert pour le tri
SELECT * FROM MATABLE ORDER BY Colonne1
Cela est équivalent à (ASC pour ascendant):
SELECT * FROM MATABLE ORDER BY Colonne1 ASC
Voici un exemple avec la base de données Filiere que vous pouvez essayer. Nous affichons toutes les informations de la table Personne triées en fonction du prénom
SELECT * FROM Personne ORDER BY PrenomPersonne
Voici un exemple avec la base de données Filiere que vous pouvez essayer. Nous affichons les prénoms de la table Personne triées en fonction du nom de famille par ordre alphabétique
SELECT PrenomPersonne FROM Personne ORDER BY NomPersonne
Dans PhPMyAdmin, en étant dans la bonne base de données:
Etape 1: cliquer sur l'onglet SQL
Etape 2: taper SELECT * FROM Cours ORDER BY idUE
Etape 3: cliquer sur Exécuter
Etape 4: les résultats apparaissent
Dans PhPMyAdmin, en étant dans la bonne base de données:
Etape 1: cliquer sur l'onglet SQL
Etape 2: taper SELECT NEtudiant FROM Etude ORDER BY idPersonne
Etape 3: cliquer sur Exécuter
Etape 4: les résultats apparaissent
Si une table s'appelle MATABLE dans une base de données et a trois attributs Colonne1, Colonne2 et Colonne3, on peut trier les données récupérées avec l'instruction ORDER BY suivi du nom de la colonne qui sert pour le tri, puis de DESC (pour descendant)
SELECT * FROM MATABLE ORDER BY Colonne1 DESC
Voici un exemple avec la base de données Filiere que vous pouvez essayer. Nous affichons toutes les informations de la table Personne triées en fonction du prénom à l'inverse de l'ordre alphabétique
SELECT * FROM Personne ORDER BY PrenomPersonne DESC
Voici un exemple avec la base de données Filiere que vous pouvez essayer. Nous affichons les prénoms de la table Personne triées en fonction du nom de famille par ordre alphabétique
SELECT PrenomPersonne FROM Personne ORDER BY NomPersonne DESC
Dans PhPMyAdmin, en étant dans la bonne base de données:
Etape 1: cliquer sur l'onglet SQL
Etape 2: taper SELECT * FROM Cours ORDER BY idUE DESC
Etape 3: cliquer sur Exécuter
Etape 4: les résultats apparaissent
Dans PhPMyAdmin, en étant dans la bonne base de données:
Etape 1: cliquer sur l'onglet SQL
Etape 2: taper SELECT NEtudiant FROM Etude ORDER BY idPersonne DESC
Etape 3: cliquer sur Exécuter
Etape 4: les résultats apparaissent
Si une table s'appelle MATABLE dans une base de données et a trois attributs Colonne1, Colonne2 et Colonne3, on peut trier les données récupérées avec l'instruction ORDER BY suivi du nom de la colonne qui sert pour le tri en premier, puis celle qui sert en deuxième etc.
SELECT * FROM MATABLE ORDER BY Colonne1, Colonne2
Cela est équivalent à (ASC pour ascendant):
SELECT * FROM MATABLE ORDER BY Colonne1 ASC, Colonne2 ASC,
Voici un exemple avec la base de données Filiere que vous pouvez essayer. Nous affichons toutes les informations de la table Personne triées en fonction du prénom d'abord, puis en fonction du nom de famille s'il y a des prénoms identiques
SELECT * FROM Personne ORDER BY PrenomPersonne, NomPersonne
Il faut rajouter le suffixe DESC et ASC à la suite des colonnes selon si le tri est descendant ou ascendant sur cette colonne. Pour trier par ordre descendant sur la colonne1, puis ascendant sur la colonne2 puis 3 et descendant sur la colonne 4:
SELECT * FROM MATABLE ORDER BY Colonne1 DESC, Colonne2 ASC, Colonne3 ASC, Colonne4 DESC
Voici un exemple avec la base de données Filiere que vous pouvez essayer. Nous affichons toutes les informations de la table Personne triées en fonction du prénom d'abord à l'inverse de l'ordre alphabétique, puis en fonction du nom de famille dans l'ordre alphabétique s'il y a des prénoms identiques
SELECT * FROM Personne ORDER BY PrenomPersonne DESC, NomPersonne ASC
Dans PhPMyAdmin, en étant dans la bonne base de données:
Etape 1: cliquer sur l'onglet SQL
Etape 2: taper SELECT * FROM Enseignant ORDER BY idPersonne ASC, HeuresCM DESC, HeuresTD ASC
Etape 3: cliquer sur Exécuter
Etape 4: les résultats apparaissent
Une jointure permet de recréer une seule table en associant les clefs étrangères à une clef primaire. On va faire "virtuellement" des nouvelles occurrences d'une "nouvelle" table combinant les valeurs dans une table 1 et 2.
Une jointure permet d'associer une clef étrangère de l'attribut clefEtrangere dans une table maTable1 avec les valeurs de l'occurrence correspondant sont les clefs primaires clefPrimaire dans la table maTable2
Inner join est une jointure qui ne garde que les occurrences qui sont à la fois une valeur présente en tant que clef étrangère dans la table 1 et à la fois clef primaire dans la table 2 (cf illustration ci-après):
SELECT * FROM maTable1 INNER JOIN maTable2 ON maTable1.clefEtrangere =maTable2.clefPrimaire
Voici une exemple de la base Filière, où la table Cours est liée à une UE via une clef étrangère. On peut lier les occurrences ce cours (ex: base de données) avec le nom de l'UE à laquelle il est rattaché (ex: UE Programmation) qui est dans une autre table. Vous avez l'illustration juste en dessous.
SELECT * FROM Cours INNER JOIN UE ON cours.idUE=UE.idUE
idUE est une clef étrangère
idUE est une clef primaire
On ne garde que les cours qui ont des idUE existants dans les deux tables
Dans PhPMyAdmin, en étant dans la bonne base de données:
Etape 1: cliquer sur l'onglet SQL
Etape 2: taper SELECT * FROM Enseignant INNER JOIN Personne ON Enseignant.idPersonne= Personne.idPersonne
Etape 3: cliquer sur Exécuter
Etape 4: les résultats apparaissent
Right join est une jointure qui garde, comme INNER JOIN, les occurrences qui sont à la fois une valeur présente en tant que clef étrangère dans la table 1 et à la fois clef primaire dans la table 2, mais qui en plus ajoute les occurrences qui sont dans la table à droite de joint (cf illustration ci-après)
SELECT * FROM maTable1 RIGHT JOIN maTable2 ON maTable1.clefEtrangere =maTable2.clefPrimaire
Voici une exemple de la base Filière, où la table Cours est liée à une UE via une clef étrangère. On peut lier les occurrences ce cours (ex: base de données) avec le nom de l'UE à laquelle il est rattaché (ex: UE Programmation) qui est dans une autre table. Vous avez l'illustration juste en dessous.
SELECT * FROM Cours RIGHT JOIN UE ON Cours.idUE=UE.idUE
Left join est une jointure qui garde, comme INNER JOIN, les occurrences qui sont à la fois une valeur présente en tant que clef étrangère dans la table 1 et à la fois clef primaire dans la table 2, mais qui en plus ajoute les occurrences qui sont dans la table à gauche de joint (cf illustration ci-après)
SELECT * FROM maTable1 LEFT JOIN maTable2 ON maTable1.clefEtrangere =maTable2.clefPrimaire
En général, on échange alors l'ordre des tables, car avec la vérification sur les valeurs des clefs étrangères, en principe vous ne deviez pas avoir de clef étrangère qui n'existe pas en tant que clef primaire:
SELECT * FROM maTable1 LEFT JOIN maTable2 ON maTable1.clefEtrangere =maTable2.clefPrimaire
Voici une exemple de la base Filière, où la table Cours est liée à une UE via une clef étrangère. On peut lier les occurrences ce cours (ex: base de données) avec le nom de l'UE à laquelle il est rattaché (ex: UE Programmation) qui est dans une autre table. Vous avez l'illustration juste en dessous.
SELECT * FROM UE LEFT JOIN Cours ON Cours.idUE=UE.idUE
idUE est une clef étrangère
idUE est une clef primaire
On garde que les cours qui ont des idUE existants dans les deux tables, plus ceux dans la table de droite de JOIN
idUE est une clef étrangère
idUE est une clef primaire
On garde que les cours qui ont des idUE existants dans les deux tables, plus ceux dans la table de gauche de JOIN
Dans PhPMyAdmin, en étant dans la bonne base de données:
Etape 1: cliquer sur l'onglet SQL
Etape 2: taper SELECT * FROM Enseignant RIGHT JOIN Personne ON Enseignant.idPersonne= Personne.idPersonne
Etape 3: cliquer sur Exécuter
Etape 4: les résultats apparaissent
Dans PhPMyAdmin, en étant dans la bonne base de données:
Etape 1: cliquer sur l'onglet SQL
Etape 2: taper SELECT * FROM Personne LEFT JOIN Enseignant ON Enseignant.idPersonne= Personne.idPersonne
Etape 3: cliquer sur Exécuter
Etape 4: les résultats apparaissent
La première étape pour utiliser une base de données directement dans votre page web, c'est de vous y connecter via votre page web.
Pour cela, nous allons utiliser PDO
Nous allons utiliser l'instruction suivante pour se connecter sur votre base de données, avec en gras les éléments à modifier selon votre cas.
Pour vous connecter, il vous faut les droits, vous vous authentifiez donc avec un login et un mot de passe.
Voici plus de détails, partie par partie:
$bdd = : l'accès à la base de données, une fois la connexion faite, est stocké dans une variable (ici, le nom de cette variable PhP est bdd)
new PDO( : demande de l'initialisation de l'accès
" : (premier paramètre composé de:)
mysql:host=localhost; : nom de la source des données
dbname=mabase; : nom de la base de données
charset=utf8 : encodage
", (fin du premier paramètre)
"mabase_login", login de l'utilisateur de la base
"mabase_mdp", mot de passe de l'utilisateur
array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION)); enregistremebt des erreurs si la connexion ne fonctionne pas.
<?php
$bdd = new PDO( "mysql:host=localhost;dbname=mabase;charset=utf8", "mabase_login", "mabase_mdp", array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION));
?>
A ce stade, nous récuperons l'erreur, mais nous ne l'affichons pas si la connexion échoue. Nous allons donc mettre cette instruction dans un bloc Try Catch (c'est à dire Essayer, si ça ne fonctionne pas Intercepter l'erreur), ci-contre en italique:
<?php try {
$bdd = new PDO( "mysql:host=localhost;dbname=mabase;charset=utf8", "mabase_login", "mabase_mdp", array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION));
}
catch (Exception $e) {
die('Erreur fatale : ' . $e->getMessage());
}
?>
Si vous avez suivi les cours précédents, vous utiliserez mysql:host=localhost;dbname=Filiere
Il ne reste donc qu'à obtenir un login et un mot de passe pour la base de données
<?php try {
$bdd = new PDO( "mysql:host=localhost;dbname=Filiere;charset=utf8", "mabase_login", "mabase_mdp", array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION));
}
catch (Exception $e) {
die('Erreur fatale : ' . $e->getMessage());
}
Sur la page PhPMyAdmin, aller sur l'accueil en cliquant sur l'icone de la maison en haut à gauche.
Dans l'onglet Compte utilisateur, vous voyez la liste des utilisateurs.
En dessous de la liste des comptes, cliquer sur Ajouter un compte d'utilisateur
Saisissez un nom utilisateur (celui que vous mettrez dans l'instruction vue précédemment), dans mon cas, j'ai mis lauren en minuscules.
Sélectionner Local à Nom d'hôte
Choisissez un mot de passe (celui que vous mettrez dans l'instruction vue précédemment). Pour la suite de l'exemple, j'ai renseigné un mot de passe particulièrement mauvais: admin
Afin de pouvoir réaliser l'ensemble des requêtes SQL, j'ai choisi dans Editer les privilièges, de Tout cocher.
Attention: pour votre site web, cela est déconseillé, car il serait alors possible d'effacer des données, des tables etc.
Cliquer sur Exécuter en bas à droite.
Le nouveau compte a été créé:
Remplacer, dans l'instruction, "mabase_login", "mabase_mdp" par votre login utilisateur et votre mot de passe nouvellement créé.
Dans mons cas, j'écrirais:
<?php try {
$bdd=new PDO("mysql:host=localhost;dbname=Filiere;charset=utf8", "lauren", "admin",
array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
catch (Exception $e) {
die('Erreur fatale : ' . $e->getMessage());
}
<?php try {
$bdd = new PDO( "mysql:host=localhost;dbname=Filiere;charset=utf8", "mabase_login", "mabase_mdp", array(PDO::ATTR_ERRMODE=>PDO::ERRMODE_EXCEPTION));
}
catch (Exception $e) {
die('Erreur fatale : ' . $e->getMessage());
}
Vous pouvez intégrer cette instruction dans une page, afin de voir si la page s'affiche (connexion réussie) ou s'il y a une Erreur Fatale, dans quel cas la connexion n'a pas marché.
Veillez à ouvrir votre page web via votre serveur web, sinon cela ne fonctionnera pas
CAS 1: la page s'affiche, la connexion à la base de données a réussi
CAS 2: une erreur s'affiche, la connexion à la base de données n'a pas abouti