¿Es posible seleccionar desde show tables
en MySQL?Seleccionar datos de "Mostrar tablas" Consulta de MySQL
SELECT * FROM (SHOW TABLES) AS `my_tables`
Algo en esta línea, aunque lo anterior no funciona (en 5.0.51a, al menos).
¿Es posible seleccionar desde show tables
en MySQL?Seleccionar datos de "Mostrar tablas" Consulta de MySQL
SELECT * FROM (SHOW TABLES) AS `my_tables`
Algo en esta línea, aunque lo anterior no funciona (en 5.0.51a, al menos).
¿Has consultado en consultar INFORMATION_SCHEMA.Tables? Al igual que 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;
Creo que quieres SELECT * FROM INFORMATION_SCHEMA.TABLES
Ver http://dev.mysql.com/doc/refman/5.0/en/tables-table.html
Esto le brinda (meta) información acerca de las tablas, no el contenido de la tabla, como lo pretendía el OP. – physicalattraction
Esto le da nombres de tablas en minúsculas en Windows, mientras que 'SHOW TABLES' muestra la carcasa como se especifica. – AndreKR
Creo que lo que quiere es la opinión de MySQL INFORMATION_SCHEMA (s): http://dev.mysql.com/doc/refman/5.0/en/tables-table.html
Esto le proporciona información (meta) sobre las tablas, no sobre el contenido de la tabla, como lo pretendía el OP. – physicalattraction
SELECT * FROM INFORMATION_SCHEMA.TABLES
que debe ser una buen comienzo. Para obtener más información, consulte INFORMATION_SCHEMA Tables.
Esto le brinda información (meta) sobre las tablas, no sobre el contenido de la tabla, como lo pretendía el OP. – physicalattraction
No entiendo por qué quiere usar SELECT * FROM
como parte de la declaración.
El OP quiere extraer datos de las Tablas devueltas por SHOW TABLES, no tiene información sobre las Tablas. – physicalattraction
No, que yo sepa, a menos que seleccione a partir INFORMATION_SCHEMA
, como otros han mencionado.
Sin embargo, el comando SHOW
es bastante flexible y Ej:
SHOW tables like '%s%'
Esto le brinda información (meta) sobre las tablas, no sobre el contenido de la tabla, como lo pretendía el PO. – physicalattraction
SELECT column_comment FROM information_schema.columns WHERE table_name = 'myTable' AND column_name = 'myColumnName'
Esto devolverá el comentario sobre: myTable.myColumnName
Esto le brinda (meta) información acerca de las tablas, no el contenido de la tabla, como lo pretendía el OP. – physicalattraction
Sí, Seleccionar del esquema_tabla podría ser muy útil para administracion del sistema. Si tienes muchos servidores, bases de datos, tablas ... a veces necesitas DROP o UPDATE montón de elementos. Por ejemplo, para crear la consulta para la caída de todas las tablas con el prefijo del nombre "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_%';
Esto le brinda (meta) información acerca de las tablas, no el contenido de la tabla, como lo pretendía el OP. – physicalattraction
en MySQL 5.1 se puede tratar
show tables like 'user%';
de salida:
mysql> show tables like 'user%';
+----------------------------+
| Tables_in_test (user%) |
+----------------------------+
| user |
| user_password |
+----------------------------+
2 rows in set (0.00 sec)
Esto le brinda información (meta) sobre las tablas, no sobre el contenido de la tabla, como lo pretendía el PO. – physicalattraction
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 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.
@physicalattraction usuario ha publicado este comentario en la mayoría de otras respuestas:
Esto le da (meta) información sobre las tablas, no el contenido de la tabla, ya que la intención OP. - physicalattraction
Por el contrario, la pregunta de la OP hace no dicen que quieren para seleccionar los datos en todas las mesas. Dicen que quieren seleccionar el 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 de forma explícita. 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.
Así que la única forma de seleccionar todos los datos de todas las tablas sería ejecutar SHOW TABLES
y luego, para cada tabla nombrada en ese resultado, ejecutar otra consulta.
Usted puede estar más cerca de lo que cree — VER tablas ya se comporta muy parecido 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";
}
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;
a la lista:
SELECT TABLE_NAME as table, TABLES.* FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='database_name' GROUP BY table;
¡Bienvenido a StackOverflow! Aquí, usamos el inglés como nuestro idioma principal. Por favor, asegúrese de que sus publicaciones estén en inglés. –
Puede crea un procedimiento almacenado y coloca los nombres de la tabla en un cursor, luego recorre los nombres de la tabla para mostrar los datos.
Introducción a procedimiento almacenado: http://www.mysqltutorial.org/getting-started-with-mysql-stored-procedures.aspx
Creación de 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 llamar al procedimiento almacenado:
CALL ShowFromTables();
Esta g le proporciona (meta) información sobre las tablas, no sobre el contenido de la tabla, como lo pretendía el PO. – physicalattraction