- 95% des demandes d'aide de nos clients sont traités en moins de 2 heures !
- Nous sommes toujours en pleine innovation !
- Nous améliorons sans cesse la qualité de nos services !
Chapitre 22. La base de données d'informations INFORMATION_SCHEMA
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.
Dans les prochaines sectinos, 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ésences 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
utf8 où N 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 : a l'heure actuelle, il
manque des colonnes et certaines autres sont sans objet. Nous
travaillons dessus, et nous mettrons à jour la documentation
lorsque ces modifications seront faites.
22.1.1. La table INFORMATION_SCHEMA SCHEMATA
Un schema 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 auront peut-être
quelque chose de fonctionne en MySQL 5.x. Pour le moment, il
vaut toujours NULL.
Les commandes suivantes sont équivalentes :
SELECT SCHEMA_NAME AS `Database`
FROM INFORMATION_SCHEMA.SCHEMATA
[WHERE SCHEMA_NAME LIKE 'wild']
SHOW DATABASES
[LIKE 'wild']
22.1.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'ambiguité.
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 :
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.1.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 suiavntes sont presque équivalentes :
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.1.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 retourn SQL
Server 2000 pour sp_statistics, mais nous
avons remplacé le nom QUALIFIER par
CATALOG et nous avons remplaclé le nom
OWNER par SCHEMA.
En fait, la table précédente est le résultat de
SHOW INDEX sont dérivés du même
parent. La correlation est très bonne.
Les commandes suivantes sont équivalentes :
SELECT * FROM INFORMATION_SCHEMA.STATISTICS
WHERE table_name = 'tbl_name'
[AND schema_name = 'db_name'
SHOW INDEX
FROM tbl_name
[FROM db_name]
22.1.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.1.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.1.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 :
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.1.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 be
NO. Le résultat ne présente pas
GRANT OPTION comme une droit séparé.
Les commandes suivantes ne sont pas
équivalents :
SELECT ... FROM INFORMATION_SCHEMA.COLUMN_PRIVILEGES
SHOW GRANTS ...
22.1.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é 2 colonnes non standard qui sont
Description et Maxlen,
dans la commande SHOW CHARACTER SET.
Les commandes suivantes sont équivalentes :
SELECT * FROM INFORMATION_SCHEMA.CHARACTER_SETS
[WHERE name LIKE 'wild']
SHOW CHARACTER SET
[LIKE 'wild']
22.1.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é 5 colonnes non standard qui correspondent
au Charset, Id,
Default, Compiled et
Sortlen dans le résultat de
SHOW COLLATION.
Les commandes suivantes sont équivalentes :
SELECT COLLATION_NAME FROM INFORMATION_SCHEMA.COLLATIONS
[WHERE collation_name LIKE 'wild']
SHOW COLLATION
[LIKE 'wild']
22.1.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.1.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
omit
TABLE_SCHEMA
TABLE_NAME
CONSTRAINT_TYPE
IS_DEFERRABLE
omit
INITIALLY_DEFERRED
omit
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.1.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 unique et clé
primaire. 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 :
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.1.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
momemnt, ce qui fait que cette valeur est toujours
NULL.
22.1.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
omit
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 :
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 est :
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.1.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.2. Extensions à la commande SHOW
Plusieurs extensions de la 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 dispnoibles :
SHOW COLUMNS and DESCRIBE
can display information about the columns in individual
INFORMATION_SCHEMA tables.
Plusieurs commandes SHOW ont été étendues
avec la clause WHERE :
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 :
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 ls collation par
défaut contient la chaîne "japanese" :
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 :
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 |
+---------+---------------------------+---------------------+--------+
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.