在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? */
要获取所有表的名称,请使用:
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
插入、更新和删除操作如下:
$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;
下面这个问题对我有用。这可以显示数据库,表,列名,数据类型和列数。
**select table_schema Schema_Name ,table_name TableName,column_name ColumnName,ordinal_position "Position",column_type DataType,COUNT(1) ColumnCount
FROM information_schema.columns
GROUP by table_schema,table_name,column_name,ordinal_position, column_type;**