我想在我的数据库中显示所有数据而不为每个表写select
- 我该怎么做?
我不想这样做:
select * from Customer
select * from Employee
select .............
我正在使用TSQL和MSSQL Server。
答案 0 :(得分:17)
DECLARE @sqlText VARCHAR(MAX)
SET @sqlText = ''
SELECT @sqlText = @sqlText + ' SELECT * FROM ' + QUOTENAME(name) + CHAR(13) FROM sys.tables
EXEC(@sqlText)
答案 1 :(得分:2)
对于mysql:
运行 SELECT information_schema.TABLES.TABLE_NAME FROM information_schema.TABLES where table_schema ='db_name'
创建一个循环,为第一个查询中的每个表运行select查询。
答案 2 :(得分:1)
使用数据库管理工具在没有架构的情况下转储数据库。
答案 3 :(得分:0)
你的问题对我很有限。你用的是什么语言?这样做的目的是什么? 因此,这是一个多部分答案。
首先,为了查看MySql数据库中的所有数据,phpMyAdmin非常适合这项工作 - 这个工具几乎可以保证大多数SQL人员都很感激。
对于问题的第二部分:我假设您想要动态地执行此操作,或者每次都有太多的表来编写查询。我会假设动态的,因为我过去创建了数据库,随着它的增长自动添加表。 PHP中的这个解决方案是我刚刚为您编写的,它应该在表中显示所有内容。 编辑:此代码有问题 - 显示所有数据,但我的表格格式错误。 - 编辑:已修复。
<?php
listAll("table_name");
function listAll($db) {
mysql_connect("localhost","root","");
mysql_select_db($db);
$tables = mysql_query("SHOW TABLES FROM $db");
while (list($tableName)=mysql_fetch_array($tables)) {
$result = mysql_query("DESCRIBE $tableName");
$rows = array();
while (list($row)=mysql_fetch_array($result)) {
$rows[] = $row;
}
$count = count($rows);
if ($count>0) {
echo '<p><strong>',htmlentities($tableName),'</strong><br /><table border="1"><tr>';
foreach ($rows as &$value) {
echo '<td><strong>',htmlentities($value),'</strong></td>';
}
echo '</tr>';
$result = mysql_query("SELECT * FROM $tableName");
while ($row=mysql_fetch_array($result)) {
echo '<tr>';
for ($i=0;$i<(count($row)/2);$i++) {
echo '<td>',htmlentities($row[$i]),'</td>';
}
echo '</tr>';
}
echo '</table></p>';
}
}
return FALSE;
}
?>
希望代码片段适合你,就像它对我有用一样!
答案 4 :(得分:0)
将表名标头添加到Vishal Gajjar的脚本中:
DECLARE @sqlText VARCHAR(MAX)
SET @sqlText = ''
SELECT @sqlText = @sqlText + 'select '''+QUOTENAME(name)+'''; SELECT * FROM ' + QUOTENAME(name) + CHAR(13) FROM sys.tables
EXEC(@sqlText)