varias tablas resueltos ejercicios ejemplos consultas complejas basicas mysql

resueltos - Obtener nombres de tablas utilizando la instrucción SELECT en MySQL



consultas sql ejercicios resueltos (11)

Además de usar la tabla INFORMATION_SCHEMA, para usar SHOW TABLES para insertar en una tabla, usaría lo siguiente

<?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); } ?>

En MySQL, sé que puedo enumerar las tablas en una base de datos con:

SHOW TABLES

Sin embargo, quiero insertar estos nombres de tabla en otra tabla, por ejemplo:

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

¿Hay alguna manera de obtener los nombres de tabla utilizando una instrucción SELECT estándar, algo así como:

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



Creo que puede ser útil señalar que si desea seleccionar tablas que contengan palabras específicas, puede hacerlo fácilmente usando "SELECCIONAR" (en lugar de "MOSTRAR"). La consulta siguiente simplifica fácilmente la búsqueda en tablas que contienen "palabras clave"

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


Eche un vistazo a la tabla TABLES en la base de datos information_schema . Contiene información sobre las tablas en sus otras bases de datos. Pero si tienes un alojamiento compartido, probablemente no tengas acceso a él.


Hay otra manera más simple de obtener nombres de tablas

SHOW TABLES FROM <database_name>


La tabla MySQL INFORMATION_SCHEMA.TABLES contiene datos sobre ambas tablas (no temporales pero permanentes) y vistas. La columna TABLE_TYPE define si esto es registro para la tabla o la vista (para las tablas TABLE_TYPE = ''BASE TABLE'' y para las vistas TABLE_TYPE = ''VIEW''). Entonces, si quiere ver desde sus tablas de esquema (base de datos), solo está la siguiente consulta:

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


Para insertar, actualizar y eliminar, haga lo siguiente:

$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;


Para obtener el nombre de todas las tablas, use:

SELECT table_name FROM information_schema.tables;

Para obtener el nombre de las tablas de una base de datos específica, use:

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

Ahora, para responder la pregunta original, use esta consulta:

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

Para obtener más detalles, consulte: http://dev.mysql.com/doc/refman/5.0/en/information-schema.html



si tenemos múltiples bases de datos y necesitamos seleccionar todas las tablas para una base de datos en particular, podemos usar TABLE_SCHEMA para definir el nombre de la base de datos como:

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


SELECT table_name FROM information_schema.tables WHERE table_schema = DATABASE()