2009-06-18 4 views

답변

10
SELECT COUNT(DISTINCT `table_name`) FROM `information_schema`.`columns` WHERE `table_schema` = 'your_db_name' 

은 DB에있는 테이블 또는 뷰의 실제 개수를 반환합니다. 그 수가 0이면 테이블이 없습니다.

+0

또한 뷰의 수를 반환합니다. – longneck

+1

그 수가 0보다 큰 경우? 테이블이 없을 수도 있지만 전망이 있습니까? –

+0

@AlexKuznetsov 네,하지만 당신이 그것을 기반으로 테이블없이 볼 수 있다고 생각하지 않습니까? – MiffTheFox

12
select count(*) 
    from information_schema.tables 
where table_type = 'BASE TABLE' 
    and table_schema = 'your_database_name_here' 
+0

흠,이 SQL에는 잘못된 것이 있다고 생각합니다. 나는 MySQL을 사용하고 데이터베이스에 테이블이있는 0을 얻는다. – EdanB

+1

당신 말이 맞아요. 대신 'TABLE'은 'BASE TABLE'이어야합니다. – longneck

+0

그것은 나를 위해 잘 작동 : 하지만 거의 어떻게 결과를 썼다 먼저 전화를 발견 = -1을 반환 을 그럼 난 결과를 발견 한 후 cmd.ExecuteNonQuery = int.Parse (. cmd.ExecuteScalar의 toString()()) ; 테이블이 없으면 0을 반환합니다. –

0

"select * from information_schema.tables"는 대부분의 데이터베이스에서 테이블 목록을 제공합니다. MYSQL에서

6

:

use DATABASE; 
show tables; 
+0

또는'show tables from DATABASE; ' – dinvlad

1

당신이, 당신이 현재 데시벨이를 acheive하기 위해 시스템보기 중 하나를 사용하여 SQL Server 2005 또는 이상을 사용하는 경우 :

select Count(*) 
from sys.tables 
where [type] = 'U' 
1

SQLServer에 구현 : 오라클에서

USE database_name 
SELECT COUNT(*) from information_schema.tables 
WHERE table_type = 'base table' 
0

: 개수를 선택 (*) USER_TABLES

0

에서 나는 나에게 배쉬에서 사용하는 종료 코드를 줄 무언가가 필요했다. 이것은 @ longneck의 탄탄한 대답을 바탕으로합니다. 데이터베이스에 테이블이있는 경우 select 문은 contents 열을 "테이블 있음"으로 설정합니다. Grep는이 경우에 0을 성공적으로 반환 할 것이며 그렇지 않은 경우 0이 아닌 값을 반환합니다.

#!/bin/bash 
user=username 
pw=passwd 
db=database 
mysql -u ${user} -p"${pw}" -D ${db} --execute="SELECT CASE COUNT(*) WHEN '0' THEN 'empty database' ELSE 'has tables' END AS contents FROM information_schema.tables WHERE table_type = 'BASE TABLE' AND table_schema = '${db}';" | grep 'has tables' 
echo $? 
4

는 MySQL의에서 테이블없이 모든 데이터베이스의 목록을 얻으려면 :

use information_schema 

select schema_name from `schemata` s 
    left join `tables` t on s.schema_name = t.table_schema 
    where t.table_name is null 
; 

건배, 기독교

떠들썩한 파티에서
+0

빈 데이터베이스를 모두 가져 오려면 절대적인 방법입니다. 고마워요 @ 크리스티안! –

0

: 아마도

db_name='my_db' 
mysql -s --skip-column-names -e "SELECT COUNT(DISTINCT table_name) FROM information_schema.columns WHERE table_schema = '$db_name'" 
관련 문제