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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

[FAQ] [MySQL 4.1.9] nombre de tables d'une base


Sujet :

Langage SQL

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 27
    Par défaut [FAQ] [MySQL 4.1.9] nombre de tables d'une base
    bonjour, je développe un programme Java utilisant des requêtes SQL et je bloque devant un problème : comment compter le nombre de tables d'une bdd ?

    j'ai beau avoir cherché ici et sur le net, je trouve juste comment compter les données dans une table, mais jamais les tables dans une base.

    Si quelqu'un peut me débloquer, merci d'avance



    j'utilise phpMyAdmin 2.6.1 ; MySQL 4.1.9 ; eclipse ; EasyPHP1-8 ; mysql-connector-java-3.1.12

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT COUNT(*) FROM INFORMATION_SCHEMA.Tables
    Sous réserve que ton moteur, que tu ne nous indiques pas, contrairement aux règles de ce forum, supporte cette vue appartenant à la norme !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 27
    Par défaut
    j'utilise phpMyAdmin 2.6.1 ; MySQL 4.1.9 ; eclipse ; EasyPHP1-8 ; mysql-connector-java-3.1.12

    si j'entre ce que tu m'as mis, il me répond :
    #1146 - La table 'information_schema.tables' n'existe pas
    ma bdd s'apelle projet2006 , si j'entre
    [FONT=monospace]SELECT COUNT(*) FROM projet2006.INFORMATION_SCHEMA.Tables[/FONT]
    il me répond
    #1064 - Erreur de syntaxe pr�s de '.Tables' � la ligne 1

  4. #4
    Xo
    Xo est déconnecté
    Membre Expert
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 27
    Par défaut
    oui je suis allé voir la FAQ mais ça ne répond pas a ma question vu qu'ils parlent d'opérations sur une table précise, mais moi à l'origine je ne suis pas censé savoir quelles tables existent ou non.

    ton 2è lien est plus intéressant, mais je ne vois pas trop comment utiliser la syntaxe, et si je recopie leurs exemples j'ai des erreur de sytaxe.
    par exemple si je tape
    SELECT TC.CONSTRAINT_NAME
    FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC
    il me répond
    #1146 - La table 'information_schema.table_constraints' n'existe pas

  6. #6
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    salut,

    je ne sais pas si on peut le faire directement avant la 5.0

    j'utiliserais la commande 'show tables' pour récupérer le nomdes tables et à l'aide d'une boucle je compterais ces tables

    Apres peut étre qu'il y a mieux

    Bon courage

    Michel

  7. #7
    Membre Expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Par défaut
    La documentation de la version 4.1 l'annonce.
    Data Dictionary (Information Schema): The introduction of the INFORMATION_SCHEMA database in MySQL 5.0 provided a standards-compliant means for accessing the MySQL Server's metadata; that is, data about the databases (schemas) on the server and the objects which they contain.
    Le dictionnaire de données n'est présent qu'à partir de la version 5.0.

    Je viens de faire pas mal de recherches à ce sujet. Je n'ai rien trouvé. J'ai regardé dans les sources de phpMyAdmin afin de comprendre comment il m'affiche le nombre de tables dans la liste déroulante du menu gauche.

    Dans le fichier common.lib.php, il existe une fonction PMA_getTableCount
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    /**
     * returns count of tables in given db
     *
     * @param   string  $db database to count tables for
     * @return  integer count of tables in $db
     */
    function PMA_getTableCount($db)
    {
        $tables = PMA_DBI_try_query(
            'SHOW TABLES FROM ' . PMA_backquote($db) . ';',
            null, PMA_DBI_QUERY_STORE);
        if ($tables) {
            $num_tables = PMA_DBI_num_rows($tables);
            PMA_DBI_free_result($tables);
        } else {
            $num_tables = 0;
        }
     
        return $num_tables;
    }
    En clair, la méthode de Cybher est un peu bourrine . Donc lancez bien la requête show tables from `mabase`comme il l'indique. Ensuite, préférez une simple fonction php (ou java) à une boucle. Les développeurs de phpmyadmin récupèrent le nombre de lignes retournées par la requête grâce à une simple fonction. Je suis sûr qu'une telle fonction existe en Java.
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

Discussions similaires

  1. [MySQL] Connaître le nombre de tables d'une base mysql
    Par DevServlet dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 17/09/2010, 22h20
  2. nombre de tables dans une base
    Par 080983 dans le forum SQL
    Réponses: 11
    Dernier message: 22/08/2007, 23h02
  3. [MySQL] compter nombre de table dans une base
    Par stephan55 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 16/06/2006, 18h31
  4. Réponses: 3
    Dernier message: 30/05/2006, 19h09
  5. [MySQL] lister toutes les tables d'une base
    Par Tr@nkill dans le forum Langage SQL
    Réponses: 8
    Dernier message: 14/04/2006, 14h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo