首页 文章

使用MySQL中的SELECT语句获取表名

提问于
浏览
191

在MySQL中,我知道我可以在数据库中列出表:

SHOW TABLES

但是,我想将这些表名插入另一个表中,例如:

INSERT INTO metadata(table_name) SHOW TABLES /* does not work */

有没有办法使用标准的SELECT语句获取表名,如:

INSERT INTO metadata(table_name) SELECT name FROM table_names /* what should table_names be? */

11 回答

  • 248

    我想你可以从INFORMATION_SCHEMA TABLES获得你想要的数据 .

    你可以在这里找到更多信息:http://dev.mysql.com/doc/refman/5.0/en/tables-table.html

  • -3
    SELECT table_name 
    FROM information_schema.tables 
    WHERE table_schema = 'DATABASE'
    
  • 3

    尝试:

    select * from information_schema.tables
    

    见:http://dev.mysql.com/doc/refman/5.0/en/information-schema.html

  • 0

    如果我们有多个数据库并且我们需要为特定数据库选择所有表,我们可以使用 TABLE_SCHEMA 将数据库名称定义为:

    select table_name from information_schema.tables where TABLE_SCHEMA='dbname';

  • 139

    除了使用INFORMATION_SCHEMA表之外,要使用SHOW TABLES插入表中,您将使用以下内容

    <?php
     $sql = "SHOW TABLES FROM $dbname";
     $result = mysql_query($sql);
     $arrayCount = 0
     while ($row = mysql_fetch_row($result)) {
      $tableNames[$arrayCount] = $row[0];
      $arrayCount++; //only do this to make sure it starts at index 0
     }
     foreach ($tableNames as &$name {
      $query = "INSERT INTO metadata (table_name) VALUES ('".$name."')";
      mysql_query($query);
     }
    ?>
    
  • 17

    看一下数据库 information_schema 中的表 TABLES . 它包含有关其他数据库中的表的信息 . 但是如果你有权访问它 .

  • 3

    要获取所有表的名称,请使用:

    SELECT table_name FROM information_schema.tables;
    

    要从特定数据库获取表的名称,请使用:

    SELECT table_name FROM information_schema.tables where table_schema='your_database_name';
    

    现在,要回答原始问题,请使用以下查询:

    INSERT INTO table_name
        SELECT table_name FROM information_schema.tables
            WHERE table_schema = 'your_database_name';
    

    有关详细信息,请参阅:http://dev.mysql.com/doc/refman/5.0/en/information-schema.html

  • 0

    MySQL INFORMATION_SCHEMA.TABLES 表包含有关两个表(不是临时表但是永久表)和视图的数据 . 列 TABLE_TYPE 定义这是表还是视图的记录(对于表 TABLE_TYPE='BASE TABLE' 和对于视图 TABLE_TYPE='VIEW' ) . 因此,如果您想从模式(数据库)表中查看,则只有以下查询:

    SELECT *
    FROM information_schema.tables
    WHERE table_type='BASE TABLE'
    AND table_schema='myschema'
    
  • 8

    还有另一种更简单的方法来获取表名

    SHOW TABLES FROM <database_name>
    
  • 11

    我认为指出如果你想选择包含特定单词的表格可以很方便,你可以使用 SELECT (而不是 SHOW )轻松完成 . 下面的查询很容易将搜索范围缩小到包含"keyword"的表格

    SELECT *
    FROM information_schema.tables
    WHERE table_name like "%keyword%"
    
  • 6

    要插入,更新和删除,请执行以下操作:

    $teste = array('LOW_PRIORITY', 'DELAYED', 'HIGH_PRIORITY', 'IGNORE', 'INTO', 'INSERT', 'UPDATE', 'DELETE', 'QUICK', 'FROM');
    $teste1 = array("\t", "\n", "\r", "\0", "\x0B");
    $strsql = trim(str_ireplace($teste1, ' ', str_ireplace($teste, '', $strsql)));
    $nomeTabela = substr($strsql, 0, strpos($strsql, ' '));
    
    print($nomeTabela);
    exit;
    

相关问题