IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Manuel de référence MySQL 5.0


précédentsommairesuivant

22. La base de données d'informations INFORMATION_SCHEMA

Le support de la base INFORMATION_SCHEMA est disponible dans MySQL 5.0.2 et les versions les plus récentes. 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 :

 
Sélectionnez
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)

Explication : 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 faits sur des tables ;
  • personne n'a besoin d'apprendre une nouvelle syntaxe. Comme tout le monde connaît déjà les commandes SELECT, il suffit d'apprendre les noms des objets ;
  • l'implémenteur n'a pas besoin d'ajouter de nouveaux mots-clés ;
  • 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 commande 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. Elles sont présentées dans la section Section 22.2 : « Extensions à la commande SHOW »22.2. Extensions à la commande SHOW.

Standards

L'implémentation des structures des tables de la base INFORMATION_SCHEMA suit 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 pertinentes dans notre implémentation, et a ajouté des colonnes qui lui sont spécifiques. Par exemple, la colonne du 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 des données ou modifier le contenu des tables.

Droits

Il n'y a 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.

22-A. Les tables INFORMATION_SCHEMA

Présentation des sections suivantes

Dans les prochaines sections, nous allons détailler les tables et colonnes de INFORMATION_SCHEMA. Pour chaque colonne, on présente deux informations :

  • le « Nom standard » indique le nom standard SQL de la colonne ;
  • Le « Nom SHOW » indique son équivalent dans le résultat de la commande SHOW, s'il existe ;
  • « Remarques » fournit des informations supplémentaires, éventuellement. Nous avons marqué avec « omis » les colonnes dont MySQL ne fait aucun usage pour le moment. Nous avons omis ces colonnes : elles apparaissent dans les standards, mais pas dans MySQL. Leur présence est donc inutile ici.

Pour éviter d'utiliser des mots qui soient réservés par le standard, par DB2, par SQL server ou Oracle, nous avons changé le nom des colonnes qui portent la mention « extension MySQL ». Par exemple, nous avons changé COLLATION en TABLE_COLLATION dans la table TABLES. Voyez la liste des mots à la fin de cet article : http://www.dbazine.com/gulutzan5.shtml.

La définition des colonnes, comme TABLES.TABLE_NAME), est généralement VARCHAR(N) CHARACTER SET utf8N vaut au moins 64.

Chaque section indique l'équivalent dans le résultat de la commande SHOW : c'est un équivalent à la commande SELECT qui lit les informations dans la table INFORMATION_SCHEMA, ou bien il n'y a pas d'équivalent.

Note : à l'heure actuelle, il manque des colonnes et certaines autres sont sans objets. Nous travaillons dessus et nous mettrons à jour la documentation lorsque ces modifications seront faites.

22-A-1. La table INFORMATION_SCHEMA SCHEMATA

Un schéma est une base de données. La table SCHEMATA fournit des informations sur les bases de données.

Standard Name

SHOW name

Remarks

CATALOG_NAME

-

NULL

SCHEMA_NAME

 

base de données

SCHEMA_OWNER

 

omis

DEFAULT_CHARACTER_SET_CATALOG

 

omis

DEFAULT_CHARACTER_SET_SCHEMA

 

omis

DEFAULT_CHARACTER_SET_NAME

   

SQL_PATH

 

NULL

Notes :

  • pour SQL_PATH, nous aurons peut-être quelque chose de fonctionnelle en MySQL 5.x. Pour le moment, il vaut toujours NULL.

Les commandes suivantes sont équivalentes :

 
Sélectionnez
SELECT SCHEMA_NAME AS `Database`
  FROM INFORMATION_SCHEMA.SCHEMATA
  [WHERE SCHEMA_NAME LIKE 'wild']

SHOW DATABASES
  [LIKE 'wild']

22-A-2. La table INFORMATION_SCHEMA TABLES

La table TABLES fournit des informations sur les bases de données.

Nom standard

Nom SHOW

Remarques

TABLE_CATALOG

 

NULL

TABLE_SCHEMA

Table_...

 

TABLE_NAME

Table_...

 

TABLE_TYPE

   

SELF_REFERENCING_COLUMN_NAME

 

omis

REFERENCE_GENERATION

 

omis

USER_DEFINED_TYPE_NAME

 

omis

IS_INSERTABLE_INTO

 

omis

IS_TYPED

 

omis

COMMIT_ACTION

 

omis

ENGINE

Engine

extension MySQL

VERSION

Version

extension MySQL

ROW_FORMAT

Row_format

extension MySQL

TABLE_ROWS

Rows

extension MySQL

AVG_ROW_LENGTH

Avg_row_length

extension MySQL

DATA_LENGTH

Data_length

extension MySQL

MAX_DATA_LENGTH

Max_data_length

extension MySQL

INDEX_LENGTH

Index_length

extension MySQL

DATA_FREE

Data_free

extension MySQL

AUTO_INCREMENT

Auto_increment

extension MySQL

CREATE_TIME

Create_time

extension MySQL

UPDATE_TIME

Update_time

extension MySQL

CHECK_TIME

Check_time

extension MySQL

TABLE_COLLATION

Collation

extension MySQL

CHECKSUM

Checksum

extension MySQL

CREATE_OPTIONS

Create_options

extension MySQL

TABLE_COMMENT

Comment

extension MySQL

Notes :

  • TABLE_SCHEMA et TABLE_NAME sont un seul champ dans le résultat de SHOW, par exemple Table_in_db1 ;
  • TABLE_TYPE doit être BASE TABLE ou VIEW. Si la table est temporaire, alors TABLE_TYPE = TEMPORARY. Il n'y a pas de vues temporaires, alors il ne peut pas y avoir d'ambiguïté ;
  • nous n'avons rien pour les jeux de caractères par défaut des tables. TABLE_COLLATION s'en approche, car les noms des collations commencent avec un nom de jeu de caractères.

Les commandes suivantes sont équivalentes :

 
Sélectionnez
SELECT table_name FROM INFORMATION_SCHEMA.TABLES
  [WHERE table_schema = 'db_name']
  [WHERE|AND table_name LIKE 'wild']

SHOW TABLES
  [FROM db_name]
  [LIKE 'wild']

22-A-3. La table INFORMATION_SCHEMA COLUMNS

La table COLUMNS fournit des informations sur les colonnes dans les tables.

Nom standard

Nom dans SHOW

Remarques

TABLE_CATALOG

 

NULL

TABLE_SCHEMA

   

TABLE_NAME

   

COLUMN_NAME

Field

 

ORDINAL_POSITION

 

see notes

COLUMN_DEFAULT

Default

 

IS_NULLABLE

Null

 

DATA_TYPE

Type

 

CHARACTER_MAXIMUM_LENGTH

Type

 

CHARACTER_OCTET_LENGTH

   

NUMERIC_PRECISION

Type

 

NUMERIC_PRECISION_RADIX

 

omis

NUMERIC_SCALE

Type

 

DATETIME_PRECISION

 

omis

INTERVAL_TYPE

 

omis

INTERVAL_PRECISION

 

omis

CHARACTER_SET_CATALOG

 

omis

CHARACTER_SET_SCHEMA

 

omis

CHARACTER_SET_NAME

   

COLLATION_CATALOG

 

omis

COLLATION_SCHEMA

 

omis

COLLATION_NAME

Collation

 

DOMAIN_NAME

 

omis

UDT_CATALOG

 

omis

UDT_SCHEMA

 

omis

UDT_NAME

 

omis

SCOPE_CATALOG

 

omis

SCOPE_SCHEMA

 

omis

SCOPE_NAME

 

omis

MAXIMUM_CARDINALITY

 

omis

DTD_IDENTIFIER

 

omis

IS_SELF_REFERENCING

 

omis

IS_IDENTITY

 

omis

IDENTITY_GENERATION

 

omis

IDENTITY_START

 

omis

IDENTITY_INCREMENT

 

omis

IDENTITY_MAXIMUM

 

omis

IDENTITY_MINIMUM

 

omis

IDENTITY_CYCLE

 

omis

IS_GENERATED

 

omis

GENERATION_EXPRESSION

 

omis

COLUMN_KEY

Key

extension MySQL

EXTRA

Extra

extension MySQL

COLUMN_COMMENT

Comment

extension MySQL

Notes :

  • dans SHOW, la colonne Type inclut les valeurs de différentes colonnes COLUMNS ;
  • ORDINAL_POSITION est obligatoire, car il faudra peut-être un jour indiquer ORDER BY ORDINAL_POSITION. Contrairement à SHOW, SELECT n'a pas de classement par défaut ;
  • CHARACTER_OCTET_LENGTH doit être le même que CHARACTER_MAXIMUM_LENGTH, sauf pour les jeux de caractères multi-octets ;
  • CHARACTER_SET_NAME peut être dérivé de Collation. Par exemple, si vous indiquez SHOW FULL COLUMNS FROM t, et que vous pouvez voir dans la colonne Collation la valeur latin1_swedish_ci, alors le jeu de caractères est la partie placée avant le premier caractère souligné : latin1.

Les commandes suivantes sont presque équivalentes :

 
Sélectionnez
SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE table_name = 'tbl_name'
  [AND table_schema = 'db_name']
  [AND column_name LIKE 'wild']

SHOW COLUMNS
  FROM tbl_name
  [FROM db_name]
  [LIKE wild]

22-A-4. La table INFORMATION_SCHEMA STATISTICS

La table STATISTICS fournit des informations sur les tables d'index.

Nom standard

Nom SHOW

Remarques

TABLE_CATALOG

 

NULL

TABLE_SCHEMA

 

= Database

TABLE_NAME

Table

 

NON_UNIQUE

Non_unique

 

INDEX_SCHEMA

 

= Database

INDEX_NAME

Key_name

 

TYPE

 

omis

SEQ_IN_INDEX

Seq_in_index

 

COLUMN_NAME

Column_name

 

COLLATION

Collation

 

CARDINALITY

Cardinality

 

PAGES

 

omis

FILTER_CONDITION

 

omis

SUB_PART

Sub_part

extension MySQL

PACKED

Packed

extension MySQL

NULLABLE

Null

extension MySQL

INDEX_TYPE

Index_type

extension MySQL

COMMENT

Comment

extension MySQL

Notes :

  • il n'y a pas de table standard pour les index. La liste précédente est similaire au résultat que retourne SQL Server 2000 pour sp_statistics, mais nous avons remplacé le nom QUALIFIER par CATALOG et nous avons remplacé le nom OWNER par SCHEMA.
    En fait, la table précédente et le résultat de SHOW INDEX sont dérivés du même parent. La corrélation est très bonne.

Les commandes suivantes sont équivalentes :

 
Sélectionnez
SELECT * FROM INFORMATION_SCHEMA.STATISTICS
  WHERE table_name = 'tbl_name'
  [AND schema_name = 'db_name'

SHOW INDEX
  FROM tbl_name
  [FROM db_name]

22-A-5. La table INFORMATION_SCHEMA USER_PRIVILEGES

La table USER_PRIVILEGES fournit les informations sur les droits globaux. Cette information provient des tables mysql.user.

Non standard

Nom SHOW

Remarques

GRANTEE

 

i.e. 'utilisateur'@'hote'

TABLE_CATALOG

 

NULL

PRIVILEGE_TYPE

   

IS_GRANTABLE

   

Notes :

  • c'est une table non standard. Elle prend ses valeurs dans les tables mysql.user.

22-A-6. La table INFORMATION_SCHEMA SCHEMA_PRIVILEGES

La table SCHEMA_PRIVILEGES fournit des informations sur les droits des schémas (l'autre nom des bases de données). Ces informations proviennent de la table mysql.db.

Nom standard

Nom SHOW

Remarques

GRANTEE

 

i.e.g. 'utilisateur'@'hote'

TABLE_CATALOG

 

NULL

TABLE_SCHEMA

   

PRIVILEGE_TYPE

   

IS_GRANTABLE

   

Notes :

  • ceci est une table non standard. Elle prend ses valeurs dans la table mysql.db.

22-A-7. La table INFORMATION_SCHEMA TABLE_PRIVILEGES

La table TABLE_PRIVILEGES affiche les informations sur les droits des tables. Ces informations proviennent de mysql.tables_priv.

Nom standard

Nom SHOW

Remarques

GRANTOR

 

omis

GRANTEE

 

i.e. 'utilisateur'@'hote'

TABLE_CATALOG

 

NULL

TABLE_SCHEMA

   

TABLE_NAME

   

PRIVILEGE_TYPE

   

IS_GRANTABLE

   

WITH_HIERARCHY

 

omit

Les requêtes suivantes ne sont pas équivalentes :

 
Sélectionnez
SELECT ... FROM INFORMATION_SCHEMA.TABLE_PRIVILEGES

SHOW GRANTS ...

PRIVILEGE_TYPE peut contenir l'une des valeurs suivantes : SELECT, INSERT, UPDATE, REFERENCES, ALTER, INDEX, DROP et CREATE VIEW.

22-A-8. La table INFORMATION_SCHEMA COLUMN_PRIVILEGES

La table COLUMN_PRIVILEGES fournit les informations sur les droits reliés aux colonnes. Ces informations proviennent de la table de droits mysql.columns_priv.

Nom standard

Nom SHOW

Remarques

GRANTOR

 

omis

GRANTEE

 

e.g. 'utilisateur'@'hote'

TABLE_CATALOG

 

NULL

TABLE_SCHEMA

   

TABLE_NAME

   

COLUMN_NAME

   

PRIVILEGE_TYPE

   

IS_GRANTABLE

   

Notes :

  • dans le résultat de SHOW FULL COLUMNS, les droits sont toujours affichés dans un champ, en minuscules, comme select, insert, update, references. Dans COLUMN_PRIVILEGES, il y a une ligne par droit, et la valeur est en majuscules ;
  • PRIVILEGE_TYPE peut contenir une et une seule de ces valeurs : SELECT, INSERT, UPDATE, REFERENCES ;
  • si l'utilisateur a le droit de GRANT OPTION, le droit IS_GRANTABLE doit valoir YES. Sinon, IS_GRANTABLE doit valoir NO. Le résultat ne présente pas GRANT OPTION comme un droit séparé.

Les commandes suivantes ne sont pas équivalentes :

 
Sélectionnez
SELECT ... FROM INFORMATION_SCHEMA.COLUMN_PRIVILEGES

SHOW GRANTS ...

22-A-9. La table INFORMATION_SCHEMA CHARACTER_SETS

La table CHARACTER_SETS fournit des informations sur les jeux de caractères disponibles.

Nom standard

Nom SHOW

Remarques

CHARACTER_SET_CATALOG

 

omis

CHARACTER_SET_SCHEMA

 

omis

CHARACTER_SET_NAME

Charset

 

CHARACTER_REPERTOIRE

 

omis

FORM_OF_USE

 

omis

NUMBER_OF_CHARACTERS

 

omis

DEFAULT_COLLATE_CATALOG

 

omis

DEFAULT_COLLATE_SCHEMA

 

omis

DEFAULT_COLLATE_NAME

Default collation

 

DESCRIPION

Description

Extension MySQL

MAXLEN

Maxlen

Extension MySQL

Notes :

  • nous avons ajouté deux colonnes non standards que sont Description et Maxlen, dans la commande SHOW CHARACTER SET.

Les commandes suivantes sont équivalentes :

 
Sélectionnez
SELECT * FROM INFORMATION_SCHEMA.CHARACTER_SETS
  [WHERE name LIKE 'wild']

SHOW CHARACTER SET
  [LIKE 'wild']

22-A-10. La table INFORMATION_SCHEMA COLLATIONS

La table COLLATIONS fournit des informations sur les collations de chaque jeu de caractères.

Nom standard

Nom SHOW

Remarques

COLLATION_CATALOG

 

omis

COLLATION_SCHEMA

 

omis

COLLATION_NAME

Collation

 

PAD_ATTRIBUTE

 

omis

COLLATION_TYPE

 

omis

COLLATION_DEFINITION

 

omis

COLLATION_DICTIONARY

 

omis

CHARACTER_SET_NAME

 

omis ; extension de MySQL

ID

 

omis ; extension de MySQL

IS_DEFAULT

 

omis ; extension de MySQL

IS_COMPILED

 

omis ; extension de MySQL

SORTLEN

 

omis ; extension de MySQL

Notes :

  • nous avons ajouté cinq colonnes non standards qui correspondent au Charset, Id, Default, Compiled et Sortlen dans le résultat de SHOW COLLATION.

Les commandes suivantes sont équivalentes :

 
Sélectionnez
SELECT COLLATION_NAME FROM INFORMATION_SCHEMA.COLLATIONS
  [WHERE collation_name LIKE 'wild']

SHOW COLLATION
  [LIKE 'wild']

22-A-11. La table INFORMATION_SCHEMA COLLATION_CHARACTER_SET_APPLICABILITY

La table COLLATION_CHARACTER_SET_APPLICABILITY indique les jeux de caractères et les collations associées. Les colonnes sont équivalentes aux deux premières colonnes du résultat de la commande SHOW COLLATION.

Nom standard

Nom SHOW

Remarques

COLLATION_CATALOG

 

omis

COLLATION_SCHEMA

 

omis

COLLATION_NAME

Collation

 

CHARACTER_SET_CATALOG

 

omis

CHARACTER_SET_SCHEMA

 

omis

CHARACTER_SET_NAME

Charset

 

22-A-12. La table INFORMATION_SCHEMA TABLE_CONSTRAINTS

La table TABLE_CONSTRAINTS décrit les tables qui ont des contraintes.

Nom standard

Nom SHOW

Remarques

CONSTRAINT_CATALOG

 

NULL

CONSTRAINT_SCHEMA

   

CONSTRAINT_NAME

   

TABLE_CATALOG

 

omis

TABLE_SCHEMA

   

TABLE_NAME

   

CONSTRAINT_TYPE

   

IS_DEFERRABLE

 

omis

INITIALLY_DEFERRED

 

omis

Notes :

  • la valeur CONSTRAINT_TYPE peut être UNIQUE, PRIMARY KEY ou FOREIGN KEY ;
  • les informations de UNIQUE et PRIMARY KEY sont les mêmes que celles que vous obtenez dans le champ Key_name du résultat de SHOW INDEX où le champ Non_unique vaut 0 ;
  • la colonne CONSTRAINT_TYPE peut contenir l'une de ces valeurs : UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK. C'est une colonne de type CHAR et non pas ENUM. La valeur de CHECK n'est pas valable jusqu'à ce que nous supportions CHECK.

22-A-13. La table INFORMATION_SCHEMA KEY_COLUMN_USAGE

La table KEY_COLUMN_USAGE décrit les contraintes sur les colonnes.

Nom standard

Nom SHOW

Remarques

CONSTRAINT_CATALOG

 

NULL

CONSTRAINT_SCHEMA

   

CONSTRAINT_NAME

   

TABLE_CATALOG

   

TABLE_SCHEMA

   

TABLE_NAME

   

COLUMN_NAME

   

ORDINAL_POSITION

   

POSITION_IN_UNIQUE_CONSTRAINT

   

Notes :

  • si la contrainte est une clé étrangère, alors c'est la colonne de la clé étrangère, et non pas la colonne que la clé étrangère référence ;
  • la valeur de ORDINAL_POSITION est la position de la colonne dans la contrainte, et non pas la position de la colonne dans la table. Les positions des colonnes commencent à 1 ;
  • la valeur de POSITION_IN_UNIQUE_CONSTRAINT est NULL pour les contraintes uniques et les clés primaires. Pour les contraintes de clé étrangère, c'est la position ordinale dans la clé de la table qui est référencée.
    Par exemple, supposez que vous ayez les deux tables t1 et t3, avec les définitions suivantes :
 
Sélectionnez
CREATE TABLE t1
(
    s1 INT,
    s2 INT,
    s3 INT,
    PRIMARY KEY(s3)
) ENGINE=InnoDB;

CREATE TABLE t3
(
    s1 INT,
    s2 INT,
    s3 INT,
    KEY(s1),
    CONSTRAINT CO FOREIGN KEY (s2) REFERENCES t1(s3)
) ENGINE=InnoDB;

Pour ces deux tables, la table KEY_COLUMN_USAGE a deux lignes :

  • une ligne avec CONSTRAINT_NAME='PRIMARY', TABLE_NAME='t1', COLUMN_NAME='s3', ORDINAL_POSITION=1, POSITION_IN_UNIQUE_CONSTRAINT=NULL ;
  • une ligne avec CONSTRAINT_NAME='CO', TABLE_NAME='t3', COLUMN_NAME='s2', ORDINAL_POSITION=1, POSITION_IN_UNIQUE_CONSTRAINT=1.

22-A-14. La table INFORMATION_SCHEMA ROUTINES

La table ROUTINES fournit des informations sur les procédures stockées (sur les procédures et les fonctions). La table ROUTINES n'inclut pas les fonctions utilisateurs (dites UDF) actuellement.

La colonne appelée « mysql.proc name » indique la colonne de la table mysql.proc qui correspond à la colonne de la table INFORMATION_SCHEMA.ROUTINES, si elle existe.

Nom standard

Nom mysql.proc

Remarques

SPECIFIC_CATALOG

 

omis

SPECIFIC_SCHEMA

db

omis

SPECIFIC_NAME

specific_name

 

ROUTINE_CATALOG

 

NULL

ROUTINE_SCHEMA

db

 

ROUTINE_NAME

name

 

MODULE_CATALOG

 

omis

MODULE_SCHEMA

 

omis

MODULE_NAME

 

omis

USER_DEFINED_TYPE_CATALOG

 

omis

USER_DEFINED_TYPE_SCHEMA

 

omis

USER_DEFINED_TYPE_NAME

 

omis

ROUTINE_TYPE

type

{PROCEDURE|FUNCTION}

DTD_IDENTIFIER

 

(data type descriptor)

ROUTINE_BODY

 

SQL

ROUTINE_DEFINITION

body

 

EXTERNAL_NAME

 

NULL

EXTERNAL_LANGUAGE

language

NULL

PARAMETER_STYLE

 

SQL

IS_DETERMINISTIC

is_deterministic

 

SQL_DATA_ACCESS

sql_data_access

 

IS_NULL_CALL

 

omis

SQL_PATH

 

NULL

SCHEMA_LEVEL_ROUTINE

 

omis

MAX_DYNAMIC_RESULT_SETS

 

omis

IS_USER_DEFINED_CAST

 

omis

IS_IMPLICITLY_INVOCABLE

 

omis

SECURITY_TYPE

security_type

 

TO_SQL_SPECIFIC_CATALOG

 

omis

TO_SQL_SPECIFIC_SCHEMA

 

omis

TO_SQL_SPECIFIC_NAME

 

omis

AS_LOCATOR

 

omis

CREATED

created

 

LAST_ALTERED

modified

 

NEW_SAVEPOINT_LEVEL

 

omis

IS_UDT_DEPENDENT

 

omis

RESULT_CAST_FROM_DTD_IDENTIFIER

 

omis

RESULT_CAST_AS_LOCATOR

 

omis

SQL_MODE

sql_mode

extension MySQL

ROUTINE_COMMENT

comment

extension MySQL

DEFINER

definer

extension MySQL

Notes :

  • MySQL calcule EXTERNAL_LANGUAGE comme suit :

    • si mysql.proc.language='SQL', alors EXTERNAL_LANGUAGE vaut NULL ;
    • sinon, EXTERNAL_LANGUAGE prend la valeur de mysql.proc.language. Cependant, nous n'avons pas de langage externe pour le moment, ce qui fait que cette valeur est toujours NULL.

22-A-15. La table INFORMATION_SCHEMA VIEWS

La table VIEWS fournit des informations sur les vues dans les bases.

Nom standard

SHOW

Remarques

TABLE_CATALOG

 

NULL

TABLE_SCHEMA

   

TABLE_NAME

   

VIEW_DEFINITION

   

CHECK_OPTION

   

IS_UPDATABLE

   

INSERTABLE_INTO

 

omis

Notes :

  • il existe un nouveau droit, SHOW VIEW, sans lequel vous ne pourrez pas voir la table VIEWS ;
  • la colonne VIEW_DEFINITION contient l'essentiel de ce que vous voyez dans le champ Create Table que la commande SHOW CREATE VIEW produit. Omettez les mots avant SELECT et omettez les mots après WITH CHECK OPTION. Par exemple, si la commande initiale était :

     
    Sélectionnez
    CREATE VIEW v AS
      SELECT s2,s1 FROM t
      WHERE s1 > 5
      ORDER BY s1
      WITH CHECK OPTION;

    alors la définition de la vue serait:

     
    Sélectionnez
    SELECT s2,s1 FROM t WHERE s1 > 5 ORDER BY s1
  • la colonne CHECK_OPTION contient toujours la valeur NONE ;

  • la colonne IS_UPDATABLE vaut YES si la vue est modifiable, et NO dans le cas contraire.

22-A-16. Autres tables INFORMATION_SCHEMA

Nous allons ajouter d'autres tables dans la base INFORMATION_SCHEMA prochainement. Notamment, nous avons identifié le besoin de tables telles que INFORMATION_SCHEMA.PARAMETERS, INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS et INFORMATION_SCHEMA.TRIGGERS.

22-B. Extensions à la commande SHOW

Plusieurs extensions de la commande SHOW accompagnent l'implémentation de la base INFORMATION_SCHEMA :

  • SHOW peut être utilisé pour lire des informations sur la structure de la base INFORMATION_SCHEMA elle-même ;
  • plusieurs commandes SHOW acceptent une clause WHERE qui fournit plus de souplesse pour spécifier les lignes à afficher.

Ces extensions sont disponibles depuis MySQL 5.0.3.

INFORMATION_SCHEMA est une base de données d'informations, ce qui fait que son nom est inclus dans le résultat de SHOW DATABASES. Similairement, SHOW TABLES peut servir avec INFORMATION_SCHEMA pour lire la liste des tables disponibles :

 
Sélectionnez
mysql> SHOW TABLES FROM INFORMATION_SCHEMA;
+---------------------------------------+
| Tables_in_information_schema          |
+---------------------------------------+
| SCHEMATA                              |
| TABLES                                |
| COLUMNS                               |
| CHARACTER_SETS                        |
| COLLATIONS                            |
| COLLATION_CHARACTER_SET_APPLICABILITY |
| ROUTINES                              |
| STATISTICS                            |
| VIEWS                                 |
| USER_PRIVILEGES                       |
| SCHEMA_PRIVILEGES                     |
| TABLE_PRIVILEGES                      |
| COLUMN_PRIVILEGES                     |
| TABLE_CONSTRAINTS                     |
| KEY_COLUMN_USAGE                      |
+---------------------------------------+

SHOW COLUMNS et DESCRIBE peuvent afficher des informations à propos des colonnes des tables INFORMATION_SCHEMA.

Plusieurs commandes SHOW ont été étendues avec la clause WHERE :

 
Sélectionnez
SHOW CHARACTER SET
SHOW COLLATION
SHOW COLUMNS
SHOW DATABASES
SHOW FUNCTION STATUS
SHOW KEYS
SHOW OPEN TABLES
SHOW PROCEDURE STATUS
SHOW STATUS
SHOW TABLE STATUS
SHOW TABLES
SHOW VARIABLES

La clause WHERE, lorsqu'elle est disponible, utilise le nom des colonnes de l'affichage de la commande SHOW. Par exemple, la commande SHOW COLLATION produit ces colonnes :

 
Sélectionnez
mysql> SHOW CHARACTER SET;
+----------+-----------------------------+---------------------+--------+
| Charset  | Description                 | Default collation   | Maxlen |
+----------+-----------------------------+---------------------+--------+
| big5     | Big5 Traditional Chinese    | big5_chinese_ci     |      2 |
| dec8     | DEC West European           | dec8_swedish_ci     |      1 |
| cp850    | DOS West European           | cp850_general_ci    |      1 |
| hp8      | HP West European            | hp8_english_ci      |      1 |
| koi8r    | KOI8-R Relcom Russian       | koi8r_general_ci    |      1 |
| latin1   | ISO 8859-1 West European    | latin1_swedish_ci   |      1 |
| latin2   | ISO 8859-2 Central European | latin2_general_ci   |      1 |

...

Pour utiliser la clause WHERE avec la commande SHOW CHARACTER SET, il faut utiliser les noms de ces colonnes. Par exemple, la commande suivante affiche les informations sur les jeux de caractères dont la collation par défaut contient la chaîne "japanese" :

 
Sélectionnez
mysql> SHOW CHARACTER SET WHERE `Default collation` LIKE '%japanese%';
+---------+---------------------------+---------------------+--------+
| Charset | Description               | Default collation   | Maxlen |
+---------+---------------------------+---------------------+--------+
| ujis    | EUC-JP Japanese           | ujis_japanese_ci    |      3 |
| sjis    | Shift-JIS Japanese        | sjis_japanese_ci    |      2 |
| cp932   | SJIS for Windows Japanese | cp932_japanese_ci   |      2 |
| eucjpms | UJIS for Windows Japanese | eucjpms_japanese_ci |      3 |
+---------+---------------------------+---------------------+--------+

Cette commande affiche la liste des jeux de caractères multi-octets :

 
Sélectionnez
mysql> SHOW CHARACTER SET WHERE Maxlen > 1;
+---------+---------------------------+---------------------+--------+
| Charset | Description               | Default collation   | Maxlen |
+---------+---------------------------+---------------------+--------+
| big5    | Big5 Traditional Chinese  | big5_chinese_ci     |      2 |
| ujis    | EUC-JP Japanese           | ujis_japanese_ci    |      3 |
| sjis    | Shift-JIS Japanese        | sjis_japanese_ci    |      2 |
| euckr   | EUC-KR Korean             | euckr_korean_ci     |      2 |
| gb2312  | GB2312 Simplified Chinese | gb2312_chinese_ci   |      2 |
| gbk     | GBK Simplified Chinese    | gbk_chinese_ci      |      2 |
| utf8    | UTF-8 Unicode             | utf8_general_ci     |      3 |
| ucs2    | UCS-2 Unicode             | ucs2_general_ci     |      2 |
| cp932   | SJIS for Windows Japanese | cp932_japanese_ci   |      2 |
| eucjpms | UJIS for Windows Japanese | eucjpms_japanese_ci |      3 |
+---------+---------------------------+---------------------+--------+

précédentsommairesuivant