mysql 查询怎么获取数据库下所有表的信息?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 查询怎么获取数据库下所有表的信息?相关的知识,希望对你有一定的参考价值。

例如 我有一个数据库叫cx 下面有N个表 cx_1 cx_2 cx_3 等等等等...... 里面都有一个title字段 我现在想一个sql语句查询cx下这N个表中所有ishot_key = 1(审核通过)的信息 该如何去写?
select title from (这里的表名怎么写) where ishot_key = 1;

show tables即为显示当前数据库中所有的表。又如:

mysql> use mysql
Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| event |
| func |
| general_log |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| innodb_index_stats |
| innodb_table_stats |
| ndb_binlog_index |
| plugin |
| proc |
| procs_priv |
| proxies_priv |
| servers |
| slave_master_info |
| slave_relay_log_info |
| slave_worker_info |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
28 rows in set (0.05 sec)

这个是显示“mysql”这个数据库中的所有的表,一共有28张。
参考技术A

如果说你不知道有多少个 cx_1,,cx_100这种的表的话,

貌似直接SQL语句试了一下没法查的好像,

我建议是

结合php代码,先查询出该库所有的表,(或者满足cx_这种格式的表),

然后循环查询出数据,

大概像下面这样,

//数据库参数
$params = array(
    'host' => 'localhost',
    'user' => 'root',
    'pwd' => '',
    'db' => 'test',
);    
$conn = mysql_connect($params['host'], $params['user'], $params['pwd']);
mysql_select_db($params['db'], $conn);
mysql_query("set names 'UTF-8'");
$sql = "show tables"; //查询表语句
$res = mysql_query($sql);
$result = array();
while($row = mysql_fetch_array($res))
    $key = "Tables_in_" . $params['db'];
    //所有的TABLE_NAME存进数组
    //如果只需要 CX_这种格式,可以再匹配下
    $result[] = $row[$key];

foreach ($result as $v) 
    //$v是表名
    $sql = '';
    //执行代码

追问

$key = "Tables_in_" . $params['db']; 这句什么意思?

追答

你在数据库命令行下运行这条命令, show tables; 出来的会是表的列表,
但用PHP查询,会是这样的结构
array(
0 => array(

'Tables_in_test' => 'abc'

),

)
这里的test,就是你当前查询的数据库名,
你自己试着打印下就知道了,

本回答被提问者和网友采纳
参考技术B 创建一个数据库之后,数据库里面默认情况下是空空如也,一张表都没有的。
代码如下:
mysql> show tables;
Empty set (0.00 sec)

提示是一个空的记录集,表示里面没有任何记录。
这个show tables即为显示当前数据库中所有的表。又如:

mysql> use mysql
Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| event |
| func |
| general_log |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| innodb_index_stats |
| innodb_table_stats |
| ndb_binlog_index |
| plugin |
| proc |
| procs_priv |
| proxies_priv |
| servers |
| slave_master_info |
| slave_relay_log_info |
| slave_worker_info |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
28 rows in set (0.05 sec)

这个是显示“mysql”这个数据库中的所有的表,一共有28张。
参考技术C 可以使用union来查询的,

SELECT a AS b FROM t) UNION (SELECT ...)
参考技术D select title from (select table_name from 'cx') as 'tbname') where ishot_key = 1;试下行不行

在Oracle数据库中如何查询某一个表空间下的某张表里面的数据;怎么查询某个表空间下的所有表的信息

获取表名就行了,类似于MySql里面的show tables,还有怎么查询说有的表空间的信息啊

SELECT TABLESPACE_NAME,TABLE_NAME FROM DBA_TABLES WHERE TABLESPACE_NAME='XXXX';
其中XXXX为你要查的表空间名字,这样就能查处指定表空间下的所有表,希望能帮到你
参考技术A 查看当前用户的缺省表空间

select username,default_tablespace from user_users

查看当前用户的角色

select * from user_role_privs

查看当前用户的系统权限和表级权限

select * from user_sys_privs

select * from user_tab_privs

查看用户下所有的表

select * from user_tables追问

如果我想查看表空间info下的所有表应该怎么写了??????

追答

用拥有info表空间权限的登录
然后select * from user_tables

追问

我用的是管理员得权限登录,怎么来筛选表空间啊,用Java来操作的,弄不好啊

追答

select * from sys.dba_tablespaces WHERE tablespace_name='你要查找的表空间名'

本回答被提问者采纳
参考技术B 查询指定表空间下表的物理存储大小
select
Owner,
Segment_name,
Bytes/1024/1024||'M' "Size"
From
Dba_segments
Where
Segment_type='TABLE' and
Tablespace_name like 'info%'
Order by
Bytes desc

查询指定表空间下表的名称
select
Segment_name
From
Dba_segments
Where
Segment_type='TABLE' and
Tablespace_name like 'info%'

以上是关于mysql 查询怎么获取数据库下所有表的信息?的主要内容,如果未能解决你的问题,请参考以下文章

java 获取mysql 某个数据库中所有表及表的列的信息

查询mysql所有表数据字段信息

查询mysql所有表数据字段信息

如何在sqlserver中获取表的所有列信息

Python 获取MySql某个表所有字段名

有没有办法获取数据集中所有表的信息(架构详细信息)? (大查询)