从information_schema,MySQL获取所有表

时间:2013-10-18 12:30:25

标签: mysql sql

我只是不明白一件事。当我输入:

SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE';

我明白了:

+----------------------------------------------+
| table_name                                   |
+----------------------------------------------+
| columns_priv                                 |
| db                                           |
| event                                        |
| func                                         |
| general_log                                  |
| help_category                                |
| help_keyword                                 |
| help_relation                                |
| help_topic                                   |
| host                                         |
| ndb_binlog_index                             |
| plugin                                       |
| proc                                         |
| procs_priv                                   |
| proxies_priv                                 |
| servers                                      |
| slow_log                                     |
| tables_priv                                  |
| time_zone                                    |
| time_zone_leap_second                        |
| time_zone_name                               |
| time_zone_transition                         |
| time_zone_transition_type                    |
| user                                         |
| cond_instances                               |
| events_waits_current                         |
| events_waits_history                         |
| events_waits_history_long                    |
| events_waits_summary_by_instance             |
| events_waits_summary_by_thread_by_event_name |
| events_waits_summary_global_by_event_name    |
| file_instances                               |
| file_summary_by_event_name                   |
| file_summary_by_instance                     |
| mutex_instances                              |
| performance_timers                           |
| rwlock_instances                             |
| setup_consumers                              |
| setup_instruments                            |
| setup_timers                                 |
| threads                                      |
+----------------------------------------------+
41 rows in set (0.23 sec)

但选择似乎根本不起作用:

mysql> select * from db;
ERROR 1109 (42S02): Unknown table 'db' in information_schema
mysql>

怎么可能?我的意思是,SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE';表明有一个名为'db'的表......

其次,当我输入:SELECT table_name FROM INFORMATION_SCHEMA.TABLES;时,它会给我:

+----------------------------------------------+
| table_name                                   |
+----------------------------------------------+
| CHARACTER_SETS                               |
| COLLATIONS                                   |
| COLLATION_CHARACTER_SET_APPLICABILITY        |
| COLUMNS                                      |
| COLUMN_PRIVILEGES                            |
| ENGINES                                      |
| EVENTS                                       |
| FILES                                        |
| GLOBAL_STATUS                                |
| GLOBAL_VARIABLES                             |
| KEY_COLUMN_USAGE                             |
| PARAMETERS                                   |
| PARTITIONS                                   |
| PLUGINS                                      |
| PROCESSLIST                                  |
| PROFILING                                    |
| REFERENTIAL_CONSTRAINTS                      |
| ROUTINES                                     |
| SCHEMATA                                     |
| SCHEMA_PRIVILEGES                            |
| SESSION_STATUS                               |
| SESSION_VARIABLES                            |
| STATISTICS                                   |
| TABLES                                       |
| TABLESPACES                                  |
| TABLE_CONSTRAINTS                            |
| TABLE_PRIVILEGES                             |
| TRIGGERS                                     |
| USER_PRIVILEGES                              |
| VIEWS                                        |
| INNODB_BUFFER_PAGE                           |
| INNODB_TRX                                   |
| INNODB_BUFFER_POOL_STATS                     |
| INNODB_LOCK_WAITS                            |
| INNODB_CMPMEM                                |
| INNODB_CMP                                   |
| INNODB_LOCKS                                 |
| INNODB_CMPMEM_RESET                          |
| INNODB_CMP_RESET                             |
| INNODB_BUFFER_PAGE_LRU                       |
| columns_priv                                 |
| db                                           |
| event                                        |
| func                                         |
| general_log                                  |
| help_category                                |
| help_keyword                                 |
| help_relation                                |
| help_topic                                   |
| host                                         |
| ndb_binlog_index                             |
| plugin                                       |
| proc                                         |
| procs_priv                                   |
| proxies_priv                                 |
| servers                                      |
| slow_log                                     |
| tables_priv                                  |
| time_zone                                    |
| time_zone_leap_second                        |
| time_zone_name                               |
| time_zone_transition                         |
| time_zone_transition_type                    |
| user                                         |
| cond_instances                               |
| events_waits_current                         |
| events_waits_history                         |
| events_waits_history_long                    |
| events_waits_summary_by_instance             |
| events_waits_summary_by_thread_by_event_name |
| events_waits_summary_global_by_event_name    |
| file_instances                               |
| file_summary_by_event_name                   |
| file_summary_by_instance                     |
| mutex_instances                              |
| performance_timers                           |
| rwlock_instances                             |
| setup_consumers                              |
| setup_instruments                            |
| setup_timers                                 |
| threads                                      |
+----------------------------------------------+
81 rows in set (0.00 sec)

我能做:mysql> select * from events;我得到了一些结果。这是为什么?为什么我只能选择大写字母?而且,我如何选择仅以大写字母表示的information_schema表格?干杯

如果重要:我以root身份登录到我的数据库。

2 个答案:

答案 0 :(得分:3)

您只选择table_name,但是table_schema:

MariaDB [(none)]> SELECT table_name, table_schema FROM INFORMATION_SCHEMA.TABLES WHERE 

    TABLE_TYPE = 'BASE TABLE';
    +----------------------------------------------+--------------------+
    | table_name                                   | table_schema       |
    +----------------------------------------------+--------------------+
    | columns_priv                                 | mysql              |
    | db                                           | mysql              |
    | event                                        | mysql              |
    | func                                         | mysql              |
    | general_log                                  | mysql              |
    | help_category                                | mysql              |
    | help_keyword                                 | mysql              |
    | help_relation                                | mysql              |
    | help_topic                                   | mysql              |
    | host                                         | mysql              |
    | ndb_binlog_index                             | mysql              |
    | plugin                                       | mysql              |
    | proc                                         | mysql              |
    | procs_priv                                   | mysql              |
    | proxies_priv                                 | mysql              |
    | servers                                      | mysql              |
    | slow_log                                     | mysql              |
    | tables_priv                                  | mysql              |
    | time_zone                                    | mysql              |
    | time_zone_leap_second                        | mysql              |
    | time_zone_name                               | mysql              |
    | time_zone_transition                         | mysql              |
    | time_zone_transition_type                    | mysql              |
    | user                                         | mysql              |
    | cond_instances                               | performance_schema |
    | events_waits_current                         | performance_schema |
    | events_waits_history                         | performance_schema |
    | events_waits_history_long                    | performance_schema |
    | events_waits_summary_by_instance             | performance_schema |
    | events_waits_summary_by_thread_by_event_name | performance_schema |
    | events_waits_summary_global_by_event_name    | performance_schema |
    | file_instances                               | performance_schema |
    | file_summary_by_event_name                   | performance_schema |
    | file_summary_by_instance                     | performance_schema |
    | mutex_instances                              | performance_schema |
    | performance_timers                           | performance_schema |
    | rwlock_instances                             | performance_schema |
    | setup_consumers                              | performance_schema |
    | setup_instruments                            | performance_schema |
    | setup_timers                                 | performance_schema |
    | threads                                      | performance_schema |
    +----------------------------------------------+--------------------+

你得到:

MariaDB [(none)]> select * from mysql.db;
Empty set (0.00 sec)

答案 1 :(得分:2)

'information_schema'只有服务信息。它有关于表'db'存在的信息,但它表'不是'information_schema'数据库 - 某处,而不是'information_schema'。

有关需要在TABLE_SCHEMA字段中保存的表的数据库的信息