Vous êtes sur la page 1sur 22

PHP/MySQL

Création de sites Web dynamiques


MySQL Jointures

A. LOTFI
Powerpoint Templates
Page 1
Définition
Utilité
Jointure Relationnelle
Jointure SQL2
Applications

Powerpoint Templates
Page 2
Permettent d’extraire des données issues de plusieurs
tables.
Le processus de normalisation du modèle relationnel est
basé sur la décomposition et a pour conséquence
d’augmenter le nombre de tables d’un schéma.
La majorité des requêtes utilisent des jointures
nécessaires pour pouvoir extraire des données de tables
distinctes.
Une jointure met en relation deux tables sur la base d’une
clause de jointure (comparaison de colonnes).
Généralement, cette comparaison fait intervenir une clé
étrangère d’une table avec une clé primaire d’une autre table
(car le modèle relationnel est fondamentalement basé sur les
valeurs).
Powerpoint Templates
Page 3
La forme la plus courante de la jointure est la jointure dite
« relationnelle » (aussi appelée SQL89)
Caractérisée par une seule clause FROM contenant les
tables et alias à mettre en jointure deux à deux.
La syntaxe est :
SELECT [alias1.]col1, [alias2.]col2…
FROM [nomBase.]nomTable1 [alias1],
[nomBase.]nomTable2 [alias2]…
WHERE (conditionsDeJointure);

Powerpoint Templates
Page 4
Afin de se rendre conforme à la norme SQL2, MySQL propose
aussi des directives qui permettent de programmer d’une manière
plus verbale les différents types de jointures :

SELECT [ALL | DISTINCT | DISTINCTROW ]


listeColonnes
FROM [nomBase.]nomTable1 [{ INNER | { LEFT |
RIGHT } [OUTER] }]
JOIN [nomBase.]nomTable2{ ON condition | USING (
colonne1 [, colonne2]... )}
| { CROSS JOIN | NATURAL [{ LEFT | RIGHT }
[OUTER] ]
JOIN [nomBase.]nomTable2 } …
[WHERE condition ];

Powerpoint Templates
Page 5
En fonction de la nature de l’opérateur utilisé dans la requête,
de la clause de jointure et des tables concernées, on distingue :
Les jointures internes (inner joins) :
L’équijointure (equi join) est la plus connue, elle utilise
l’opérateur d’égalité dans la clause de jointure. La jointure naturelle
est conditionnée en plus par le nom des colonnes. La non
équijointure utilise l’opérateur d’inégalité dans la clause de jointure.
L’autojointure (self join) est un cas particulier de l’équijointure,
qui met en oeuvre deux fois la même table (des alias de tables
permettront de distinguer les enregistrements entre eux).

La jointure externe (outer join), la plus compliquée, qui favorise


une table (dite « dominante ») par rapport à l’autre (dite « subordonnée
»). Les lignes de la table dominante sont retournées même si elles ne
satisfont pas aux conditions de jointure.

Powerpoint Templates
Page 6
On veut voir tous les articles de musique avec leurs
familles.
If faut utiliser les deux tables à la fois.
Le code SQL est :
SELECT *
FROM Articles a INNER JOIN Familles f
ON a.familleID=f.ID

Powerpoint Templates
Page 7
PHP/MySQL
Création de sites Web dynamiques
MySQL Vues

A. LOTFI, R. TLEMSANI & R. HACHEMI


Powerpoint Templates
Page 8
Définition
Utilité
Création de vue
Visualisation d’une vue
Suppression d’une vue
Exemples pratiques

Powerpoint Templates
Page 9
Outre le contrôle de l’accès aux données (privilèges), la
confidentialité des informations est un aspect important qu’un SGBD
relationnel doit prendre en compte.
Depuis la version 5 de MySQL, la confidentialité est renforcée
par l’utilisation de vues (views) qui agissent comme des fenêtres sur
la base de données.
Les vues correspondent à ce qu’on appelle « le niveau externe »
qui reflète la partie visible de la base de données pour chaque
utilisateur.
Seules les tables contiennent des données et, pourtant, pour
l’utilisateur, une vue apparaît comme une table.
En théorie, les utilisateurs ne devraient accéder aux informations
qu’en questionnant des vues.
Les vues masquent la structure des tables interrogées.
En pratique, la plupart des applications se passent de ce concept
en manipulantPowerpoint
directementTemplates
les tables.
Page 10
Powerpoint Templates
Page 11
La figure suivante illustre ce qui a été dit :

Une vue est considérée comme une table virtuelle car elle n’a pas
d’existence propre.
Seule sa structure est stockée
Powerpoint dans le dictionnaire.
Templates
Page 12
Vous devez posséder le privilège CREATE VIEW et les
privilèges en SELECT des tables présentes dans la requête de
définition de la vue.
La syntaxe SQL de création d’une vue est la suivante :
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED
| MERGE | TEMPTABLE}]
VIEW [nomBase.]nomVue [(listecolonnes)]
AS requêteSELECT
[WITH [CASCADED | LOCAL] CHECK OPTION];

Les mécanismes de transmission et de révocation de privilèges


que nous avons étudiés s’appliquent également aux vues.
Seules les données appartenant à la vue seront accessibles aux
bénéficiaires.
Les privilèges objet qu’il est possible d’attribuer sur une vue sont
les mêmes que ceux applicables sur les tables (SELECT, INSERT,
UPDATE sur une ou plusieurs
Powerpoint colonnes, DELETE).
Templates
Page 13
Vous devez au moins posséder les privilèges CREATE VIEW et
DELETE au niveau d’une vue pour pouvoir la modifier.
ALTER [ALGORITHM = {UNDEFINED | MERGE |
TEMPTABLE}]
VIEW [nomBase.]nomVue [(listecolonnes)]
AS requêteSELECT
[WITH [CASCADED | LOCAL] CHECK OPTION];
Pour la visualisation, la syntaxe est la suivante :
SHOW CREATE VIEW [nomBase.]nomVue;
Vous devez posséder le privilège DROP. La syntaxe SQL est la
suivante :
DROP VIEW [IF EXISTS]
[nomBase.]nomVue [,nomBase2.]nomVue2...
[RESTRICT | CASCADE];
La suppression d’une vue n’entraîne pas la destruction des
données qui résident toujours dans les tables.
Powerpoint Templates
Page 14
On veut créer une vue sur la table ARTICLES qui ne contient que
les champs Description et Prix.
On veut aussi que cette vue soit triée sur le Champs description.
Le code SQL est :
CREATE VIEW V01 AS
SELECT Description 'Désignation', Prix 'PV'
From ARTICLES
ORDER BY Description;

Powerpoint Templates
Page 15
On veut créer une vue qui contient la description des articles
ainsi que la famille de chaque article.
On veut aussi que cette vue soit triée sur le champs famille.
Le code SQL est :
CREATE VIEW V02 AS
SELECT Description 'Désignation', Intitule
‘Famille’
From ARTICLES a INNER JOIN FAMILLES f
ON a.FamilleID=f.ID
ORDER BY Intitule

Powerpoint Templates
Page 16
PHP/MySQL
Création de sites Web dynamiques
INFORMATION_SCHEMA

A. LOTFI, R. TLEMSANI & R. HACHEMI


Powerpoint Templates
Page 17
La base INFORMATION_SCHEMA donne accès aux
"metadata" sur vos bases de données.
Les "metadata'' sont des informations sur les données,
telles que :
les noms des bases de données et des tables
le type de données des colonnes ou les droits d'accès.
On appelle aussi ces données le "dictionnaire de données''
ou le "catalogue système''.
INFORMATION_SCHEMA est donc la "base de données
d'informations'' qui stocke les informations à propos des
autres bases sur le serveur MySQL.
Plusieurs tables sont en lecture seule dans
INFORMATION_SCHEMA. Ces "tables" ne sont pas des
tables en réalité mais plutôt des "vues", donc pas de fichiers
associés. Powerpoint Templates Page 18
Chaque utilisateur MySQL a le droit d'accéder à ces
tables, mais seules les lignes concernant des objets pour
lesquels il a des droits seront visibles.
Vous ne pouvez pas supprimer cette base mais elle
n'occupe pas d'espace.
On donne quelques requêtes utiles sur cette base.

Powerpoint Templates
Page 19
Taille des données et indexes par moteur

select ENGINE, sum(DATA_LENGTH)/(1024*1024)


as "Données (Mo)“,
sum(INDEX_LENGTH)/(1024*1024)
as "Indexes (Mo)",
sum(DATA_LENGTH+INDEX_LENGTH)/(1024*1024
) as "Total (Mo)«
from information_schema.TABLES
group by ENGINE;

Powerpoint Templates
Page 20
Taille des données et indexes par base

select TABLE_SCHEMA,
sum(DATA_LENGTH)/(1024*1024) as
"Données (Mo)",
sum(INDEX_LENGTH)/(1024*1024) as
"Indexes (Mo)",
sum(DATA_LENGTH+INDEX_LENGTH)/(10
24*1024) as "Total (Mo)"
from information_schema.TABLES
group by TABLE_SCHEMA;

Powerpoint Templates
Page 21
Recherche des colonnes de type ‘INT’

select TABLE_SCHEMA, TABLE_NAME,


COLUMN_NAME, DATA_TYPE
from information_schema.COLUMNS
where DATA_TYPE like '%INT%'
and TABLE_SCHEMA != 'mysql';

Powerpoint Templates
Page 22

Vous aimerez peut-être aussi