sql >> Database teknologi >  >> RDS >> Mysql

Hent alle tabelnavne, kolonnenavne og kolonneværdier fra specifc database

For at få tabelnavn og kolonnenavne kan du bruge:

SELECT CONCAT(`table_name`, '-', GROUP_CONCAT(`column_name` ORDER BY Ordinal_position SEPARATOR ':')) AS resultFROM information_schema.columns-- WHERE `table_name` =?GROUP BY `table_name`;  

SqlFiddleDemo

Output:

╔══════════════╗║ resultat ║╠═════════════════╗║ resultat ║╠═════════════════╗║ resultat -id:col2 ║║ tab2-id:col3 ║╚══════════════╝

For at få prøvepost for hver kolonne skal du bruge dynamic-sql:

SET @sql ='';SELECT @sql :=CONCAT(@sql, '(SELECT ''', `table_name`, ''' AS tab_name, ''', `column_name`, '' ' AS column_name, ', 'ordinal_position', ' AS ordinal_pos, ', 'column_name', ' AS sample ' 'FROM ', 'table_name' , ' LIMIT 1) UNION ALL ') FROM information_schema.columnsWHERE `table_name` LIKE 'tab_ ';SET @sql :=SUBSTRING(@sql, 1, LENGTH(@sql) - 11);SET @final_sql ='SELECT CONCAT(`tab_name`, ''-'', GROUP_CONCAT(CONCAT(`column_name`, ' ':'', sample ) ORDER BY ordinal_pos)) AS result FROM (  ) AS sub GROUP BY tab_name';SET @final_sql =REPLACE(@final_sql, '', @sql);forbered s fra @ final_sql;udfør s;afallokér forberede s; 

SqlFiddleDemo2 SqlFiddleDemo3

Output:

╔═════════════════════════════════════════════════════════║═══════ ══════════════════╣║ tab0-id:1, col:a ║║ tab1-id:10, col2:2 ║║:2, col2:2 ║║ 2016-01-26 ║╚══════════════════════════kode


  1. Primær nøgle med flere kolonner i MySQL 5

  2. MySql kombinerer LIMIT og ORDER BY

  3. Indsatte, slettede tabeller (magiske tabeller) i MySQL

  4. Hvordan finder jeg alle børns ID'er rekursivt?