it-swarm-es.tech

Seleccione datos de "mostrar tablas" consulta de MySQL

¿Es posible seleccionar desde show tables en MySQL?

SELECT * FROM (SHOW TABLES) AS `my_tables`

Algo a lo largo de estas líneas, aunque lo anterior no funciona (en 5.0.51a, al menos).

50
BioTronic

Creo que quieres SELECT * FROM INFORMATION_SCHEMA.TABLES

Consulte http://dev.mysql.com/doc/refman/5.0/en/tables-table.html

39
Andrew

No que yo sepa, a menos que seleccione de INFORMATION_SCHEMA, como otros han mencionado.

Sin embargo, el comando SHOW es bastante flexible, por ejemplo:

SHOW tables like '%s%'
20
Lucas Oman

Para contar:

SELECT COUNT(*) as total FROM (SELECT TABLE_NAME as tab, TABLES.* FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='database_name' GROUP BY tab) tables;

Listar:

SELECT TABLE_NAME as table, TABLES.* FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='database_name' GROUP BY table;
11
Ivan Ferrer

¿Has mirado en la consulta de INFORMATION_SCHEMA.Tables? Como en

SELECT ic.Table_Name,
    ic.Column_Name,
    ic.data_Type,
    IFNULL(Character_Maximum_Length,'') AS `Max`,
    ic.Numeric_precision as `Precision`,
    ic.numeric_scale as Scale,
    ic.Character_Maximum_Length as VarCharSize,
    ic.is_nullable as Nulls, 
    ic.ordinal_position as OrdinalPos, 
    ic.column_default as ColDefault, 
    ku.ordinal_position as PK,
    kcu.constraint_name,
    kcu.ordinal_position,
    tc.constraint_type
FROM INFORMATION_SCHEMA.COLUMNS ic
    left outer join INFORMATION_SCHEMA.key_column_usage ku
        on ku.table_name = ic.table_name
        and ku.column_name = ic.column_name
    left outer join information_schema.key_column_usage kcu
        on kcu.column_name = ic.column_name
        and kcu.table_name = ic.table_name
    left outer join information_schema.table_constraints tc
        on kcu.constraint_name = tc.constraint_name
order by ic.table_name, ic.ordinal_position;
4
BigJim

No puede poner declaraciones SHOW dentro de una subconsulta como en su ejemplo. La única declaración que puede ir en una subconsulta es SELECT.

Como han indicado otras respuestas, puede consultar el INFORMATION_SCHEMA directamente con SELECT y obtener mucha más flexibilidad de esa manera.

Las declaraciones SHOW de MySQL son solo consultas internas contra las tablas INFORMATION_SCHEMA.

El usuario @physicalattraction ha publicado este comentario en la mayoría de las otras respuestas:

Esto le proporciona (meta) información sobre las tablas, no el contenido de la tabla, como pretendía el OP. - atracción física

Por el contrario, la pregunta del OP hace no dice que quieren seleccionar los datos en todas las tablas. Dicen que desean seleccionar del resultado de SHOW TABLES, que es solo una lista de nombres de tablas.

Si el OP desea seleccionar todos los datos de todas las tablas, entonces la respuesta es no, no puede hacerlo con una consulta. Cada consulta debe nombrar sus tablas explícitamente. No puede hacer que un nombre de tabla sea una variable o el resultado de otra parte de la misma consulta. Además, todas las filas de un resultado de consulta dado deben tener las mismas columnas.

Entonces, la única manera de seleccionar todos los datos de todas las tablas sería ejecutar SHOW TABLES y luego, para cada tabla nombrada en ese resultado, ejecute otra consulta.

4
Bill Karwin

Es posible que esté más cerca de lo que cree: SHOW TABLES ya se comporta de manera muy similar a SELECT:

$pdo = new PDO("mysql:Host=$Host;dbname=$dbname",$user,$pass);
foreach ($pdo->query("SHOW TABLES") as $row) {
    print "Table $row[Tables_in_$dbname]\n";
}
3
Bob Stein
SELECT column_comment FROM information_schema.columns WHERE table_name = 'myTable' AND column_name = 'myColumnName'

Esto devolverá el comentario en: myTable.myColumnName

3
Brian

Creo que lo que quieres es la vista de esquema de información de MySQL: http://dev.mysql.com/doc/refman/5.0/en/tables-table.html

3
Matt Rogish
SELECT * FROM INFORMATION_SCHEMA.TABLES

Eso debería ser un buen comienzo. Para más información, consulte INFORMATION_SCHEMA Tablas .

3
Sören Kuklau

en MySQL 5.1 puedes probar

show tables like 'user%';

salida:

mysql> show tables like 'user%';

+----------------------------+

| Tables_in_test (user%) |

+----------------------------+

| user                       |

| user_password              |

+----------------------------+

2 rows in set (0.00 sec)
2
MT467

Sí, SELECT de table_schema podría ser muy útil para la administración del sistema. Si tiene muchos servidores, bases de datos, tablas ... a veces necesita DROPAR o ACTUALIZAR el conjunto de elementos. Por ejemplo, para crear una consulta para DROP todas las tablas con el nombre de prefijo "wp_old _...":

SELECT concat('DROP TABLE ', table_name, ';') FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema = '*name_of_your_database*'
AND table_name LIKE 'wp_old_%';
2
Srdjan

Puede crear un procedimiento almacenado y colocar los nombres de las tablas en un cursor, y luego recorrer los nombres de las tablas para mostrar los datos.

Comenzando con el procedimiento almacenado: http://www.mysqltutorial.org/getting-started-with-mysql-stored-procedures.aspx

Creando un cursor: http://www.mysqltutorial.org/mysql-cursor/

Por ejemplo,

CREATE PROCEDURE `ShowFromTables`()
BEGIN

DECLARE v_finished INTEGER DEFAULT 0;
DECLARE c_table varchar(100) DEFAULT "";

DECLARE table_cursor CURSOR FOR 
SELECT table_name FROM information_schema.tables WHERE table_name like 'wp_1%';

DECLARE CONTINUE HANDLER 
    FOR NOT FOUND SET v_finished = 1;

OPEN table_cursor;

get_data: LOOP

FETCH table_cursor INTO c_table;

IF v_finished = 1 THEN 
LEAVE get_data;
END IF;

SET @s=CONCAT("SELECT * FROM ",c_table,";");

PREPARE stmt FROM @s;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

END LOOP get_data;

CLOSE table_cursor;

END

Luego llame al procedimiento almacenado:

CALL ShowFromTables();
1
Bridget Arrington

No entiendo por qué quiere usar SELECT * FROM como parte de la declaración.

12.5.5.30. MOSTRAR TABLAS Sintaxis

1
Derek B. Bell