Table des matières
INFORMATION_SCHEMA
[+/-]INFORMATION_SCHEMA SCHEMATA
INFORMATION_SCHEMA TABLES
INFORMATION_SCHEMA COLUMNS
INFORMATION_SCHEMA STATISTICS
INFORMATION_SCHEMA USER_PRIVILEGES
INFORMATION_SCHEMA SCHEMA_PRIVILEGES
INFORMATION_SCHEMA TABLE_PRIVILEGES
INFORMATION_SCHEMA COLUMN_PRIVILEGES
INFORMATION_SCHEMA CHARACTER_SETS
INFORMATION_SCHEMA COLLATIONS
INFORMATION_SCHEMA
COLLATION_CHARACTER_SET_APPLICABILITY
INFORMATION_SCHEMA TABLE_CONSTRAINTS
INFORMATION_SCHEMA KEY_COLUMN_USAGE
INFORMATION_SCHEMA ROUTINES
INFORMATION_SCHEMA VIEWS
INFORMATION_SCHEMA
SHOW
Le support de la base INFORMATION_SCHEMA
est
disponible en MySQL 5.0.2 et plus récent. Il fournit un accès aux
métadonnées sur les bases de données.
Les ``métadonnées'' sont des informations sur les données, telles que le nom des bases de données, 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''.
Voici un exemple :
mysql>SELECT table_name, table_type, engine
->FROM information_schema.tables
->WHERE table_schema = 'db5'
->ORDER BY table_name DESC;
+------------+------------+--------+ | table_name | table_type | engine | +------------+------------+--------+ | v56 | VIEW | NULL | | v3 | VIEW | NULL | | v2 | VIEW | NULL | | v | VIEW | NULL | | tables | BASE TABLE | MyISAM | | t7 | BASE TABLE | MyISAM | | t3 | BASE TABLE | MyISAM | | t2 | BASE TABLE | MyISAM | | t | BASE TABLE | MyISAM | | pk | BASE TABLE | InnoDB | | loop | BASE TABLE | MyISAM | | kurs | BASE TABLE | MyISAM | | k | BASE TABLE | MyISAM | | into | BASE TABLE | MyISAM | | goto | BASE TABLE | MyISAM | | fk2 | BASE TABLE | InnoDB | | fk | BASE TABLE | InnoDB | +------------+------------+--------+ 17 rows in set (0.01 sec)
Expliquation : la commande requiert la liste de toutes les tables
de la base de données db5
, en ordre
anti-alphabétique, avec trois informations : le nom de la table,
son type et le moteur de table.
INFORMATION_SCHEMA
est la ``base de données
d'informations'', la base qui stocke les informations à propos des
autres bases que le serveur MySQL entretient. Dans
INFORMATION_SCHEMA
, il existe plusieurs tables en
lecture seule. Ce sont en fait des vues, et non pas des tables, ce
qui fait que vous ne verrez pas de fichiers associés.
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.
Avantages de
SELECT
La commande SELECT ... FROM INFORMATION_SCHEMA
a
pour but d'être une méthode cohérente d'accéder aux informations
fournies par les différentes commandes SHOW
que
MySQL supporte (SHOW DATABASES
, SHOW
TABLES
, etc). En utilisant SELECT
, vous
avez plusieurs avantages comparés à SHOW
:
Il est conforme aux règles de Codd. C'est à dire que tous les accès sont fait sur des tables.
Personne n'a besoin d'apprendre une nouvelle syntaxe. Comme tout
le monde connait déjà les commandes SELECT
,
il suffit d'apprendre les noms des objets.
L'implémenteeur n'a pas besoin d'ajouter de nouveaux mots-clé.
Il y a des millions de formats de résultats possibles, au lieu d'un seul. Cela apporte de la flexibilité aux applications qui ont des spécifications variables sur les métadonnées qu'elles recherchent.
La migration est plus facile, car toutes les autres bases de données fonctionnent sur ce schéma.
Cependant, comme SHOW
est une comande populaire
auprès des employés et utilisateurs de MySQL, et que cela mettrait
la pagaille si cette dernière venait à disparaître, les avantages
de cette convention ne sont pas suffisants pour supprimer
SHOW
. En fait, il y a des améliorations à la
commande SHOW
en MySQL 5.0. Ils sont présentés
dans la section Section 22.2, « Extensions à la commande SHOW
».
Standards
L'implémentation des structures des tables de la base
INFORMATION_SCHEMA
suivent le standard ANSI/ISO
SQL:2003 standard Part 11 ``Schemata''. Notre intention est
d'atteindre une compatibilité partielle avec SQL:2003 core feature
F021 ``Basic information schema''.
Les utilisateurs de SQL Server 2000 (qui suit aussi ce standard)
noteront une similarité importante. Cependant, MySQL a omis
certaines colonnes qui ne sont pas pertinente dans notre
implémentation, et a ajouté des colonnes qui lui sont spécifique.
Par exemple, la colonne de moteur de stockage pour les tables dans
la table INFORMATION_SCHEMA.TABLES
.
Même si les autres serveurs de base de données utilisent
différents noms, comme syscat ou system, le nom standard est
INFORMATION_SCHEMA
.
En effet, nous avons une nouvelle ``base de données'' appelée
information_schema
, même s'il n'y a pas besoin
de faire un fichier qui porte ce nom. Il est possible de
sélectionner la base INFORMATION_SCHEMA
comme
base par défaut avec la commande USE
, mais la
seule solution pour accéder au contenu de ces tables est la
commande SELECT
. Vous ne pouvez pas insérer de
données ou modifier le contenu des tables.
Droits
Il n'y pas de différence entre les prérequis de droits actuels
pour la commande SHOW
et les commandes
SELECT
. Dans chaque cas, vous avez les mêmes
droits sur un objet, et vous en aurez besoin pour accéder aux
informations le concernant.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.