FAQ MySQLConsultez toutes les FAQ

Nombre d'auteurs : 16, nombre de questions : 155, dernière mise à jour : 22 avril 2014  Ajouter une question

 

Cette FAQ a été conçue à partir des questions fréquemment posées sur le forum MySQL de Developpez.com. Elle ne prétend pas à être exhaustive et peut contenir des erreurs occasionnelles. Si vous relevez une coquille, n'hésitez pas à nous le faire savoir.

Pour participer à cette FAQ, veuillez envoyer vos réponses sur le forum.


SommaireSyntaxe SQL et structure des donnéesTables (13)
précédent sommaire suivant
 

  • Grâce à la commande DESC <table> qui renvoie un enregistrement pour chaque champ avec son type, si NULL est autorisé, sa valeur par défaut...
  • Avec SHOW CREATE TABLE <table> qui renvoie un seul enregistrement contenant la requête complète de création de la table.
  • Pour une liste des index de la table, on peut utiliser SHOW INDEX FROM <table>.
  • A partir de MySQL 5.0, en se référant au dictionnaire de données INFORMATION_SCHEMA, plus conforme au standard (reportez-vous à ce tutoriel).

Mis à jour le 16 juin 2004 ced

Pour afficher des informations de description d'une colonne, vous pouvez utiliser la commande :

Code sql : Sélectionner tout
SHOW COLUMNS FROM nom_table LIKE 'nom_colonne';
Pour les versions MySQL >= 5.0.2, préférez une utilisation par une requête sur le catalogue de MySQL :

Code sql : Sélectionner tout
1
2
3
SELECT * 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'nom_table' AND COLUMN_NAME = 'nom_colonne'
Cette dernière requête vous donnera alors un grand nombre d'informations sur la colonne (type de la colonne, valeur par défaut, taille...).

Mis à jour le 16 juin 2004 ced

MySQL >= 5.0

Code sql : Sélectionner tout
1
2
SELECT count(table_name) FROM INFORMATION_SCHEMA.TABLES 
	WHERE table_schema = 'nom_de_la_base_de_donnee'
MySQL <= 4.1

Code sql : Sélectionner tout
SHOW TABLES FROM nom_de_la_base_de_donnee
Ensuite, plutôt que de boucler sur les résultats de la requête pour les compter, il suffit de faire appel aux fonctions de votre librairie (php - c - etc...) . Il existe dans tous les cas une fonction qui retourne le nombre d'éléments de la requête

  • PHP librairie standard : mysql_num_rows (PHP 3, PHP 4, PHP 5) -- Retourne le nombre de lignes d'un résultat MySQL
  • PHP librairie améliorée : mysqli_num_rows (PHP 5) -- Retourne le nombre de lignes dans un résultat
  • PHP librairie PDO : PDOStatement::rowCount (PHP 5) PDOStatement::rowCount -- Retourne le nombre de lignes affectées par le dernier appel à la fonction PDOStatement::execute()
  • API MySQL en C : mysql_stmt_num_rows() -- Retourne le nombre de lignes dans le jeu de résultat. my_ulonglong mysql_stmt_num_rows(MYSQL_STMT *stmt)

Mis à jour le 21 juin 2006 Alexandre T

Pour afficher toutes les tables non temporaires d'une base de données :

Code sql : Sélectionner tout
SHOW TABLE FROM nom_base
Pour les versions MySQL >= 5.0.2

Code sql : Sélectionner tout
1
2
3
4
SELECT table_name 
FROM INFORMATION_SCHEMA.TABLES 
WHERE table_schema = 'nom_base' 
AND table_type = 'BASE TABLE'
Cette seconde solution peut également donner des informations supplémentaires sur les tables de la base (comme le moteur utilisé, le nombre de ligne de chaque table...).

Mis à jour le 5 février 2008 ced xave

Pour vérifier l'existence d'une table dans une base, tapez la commande :

Code sql : Sélectionner tout
SHOW TABLES FROM nom_base LIKE 'nom_table';
Si vous êtes en MySQL 5.0.2 ou supérieur, vous pouvez également interroger le catalogue comme suit :

Code sql : Sélectionner tout
1
2
3
4
SELECT TABLE_NAME 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA = 'nom_base' 
AND TABLE_NAME = 'nom_table';
Vérifiez alors que la requête vous retourne bien une ligne.

Mis à jour le 1er juin 2008 ced

En utilisant la clause IF EXISTS.
Voici un exemple avec une fonction :

Code sql : Sélectionner tout
1
2
3
4
5
DROP FUNCTION IF EXISTS `nomFonction`; 
CREATE FUNCTION `nomFonction`(...) RETURNS INT 
BEGIN 
... 
END;

Mis à jour le 9 août 2008 Alain Defrance

Pour connaître le nombre de lignes contenues par une table, vous pouvez utiliser la requête suivante :

Code sql : Sélectionner tout
SELECT COUNT(*) FROM ma_table
Remarque : L'exécution de cette requête est très rapide, car le moteur de MySQL ne parcourt pas toute la table pour obtenir le résultat.

Mis à jour le 1er juin 2008 ced

Avec la commande

Code sql : Sélectionner tout
ALTER TABLE latable RENAME AS nouveau_nom
Ou encore (à partir de MySQL 3.23)

Code sql : Sélectionner tout
RENAME TABLE latable TO nouveau_nom

Mis à jour le 10 octobre 2004

Code sql : Sélectionner tout
1
2
ALTER TABLE latable ADD / MODIFY / DROP / RENAME lacolonne 
[nouvelle définition de la colonne]
http://dev.mysql.com/doc/mysql/fr/ALTER_TABLE.html

Mis à jour le 16 juin 2004

  • Contrainte de colonne : voir syntaxe précédente, avec un MODIFY précisant la nouvelle contrainte sur le champ.
  • Contrainte de table : idem, avec un ALTER TABLE ... ADD CONSTRAINT ...

Mis à jour le 16 juin 2004

Les champs suivants: TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT contrairement à CHAR et VARCHAR ne doivent pas être utilisés en spécifiant une taille.

Considérez pour simplifier qu'ils sont à taille variable, avec une taille maximum qui dépend de votre version et implémentation de MySQL.

Mis à jour le 16 juin 2004 Florian

Grâce à la commande

Code sql : Sélectionner tout
SHOW TABLE STATUS [FROM labase] LIKE 'latable'
Elle donne un certain nombre d'informations dont data_length, index_length, etc.

Pour les versions MySQL >= 5.0.2, vous pouvez également utiliser une requête sur le catalogue de MySQL :

Code sql : Sélectionner tout
1
2
3
SELECT table_name, data_length  
FROM INFORMATION_SCHEMA.TABLES 
WHERE table_name = 'latable'
La taille retournée par la colonne "data_length" est en octets.

Mis à jour le 16 juin 2004 ced

En utilisant create table sur la base de données dans laquelle créer la table.
Attention de bien avoir les droits nécessaires à la création de table sur la base de données.
Exemple:

Code sql : Sélectionner tout
CREATE TABLE nom_table (champs1 int, champs2 varchar (255), champs3 datetime);

Mis à jour le 5 février 2008 xave

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2017 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
Contacter le responsable de la rubrique MySQL