Общее количество полей во всех таблицах базы данных

#mysql #sql #database

#mysql #sql #База данных

Вопрос:

У меня огромная база данных с сотнями таблиц, и я хочу узнать общее количество полей (столбцов), определенных во всех таблицах.

Есть ли sql-запрос, который может дать мне это? Если нет, то каков был бы наилучший способ?

Ответ №1:

Это то, чего вы хотите?

 select count(*)
from information_schema.columns
where table_schema = 'your_schema'
  

Вы можете запустить его следующим образом, чтобы увидеть, разумно ли это:

 select table_name, column_name
from information_schema.columns
where table_schema = 'your_schema'
order by 1, 2
  

Ответ №2:

Попробуйте это (при входе в вашу текущую схему):

 select count(*) from information_schema.columns where table_schema = DATABASE();
  

Ответ №3:

Я новичок в mysql, но если table information_schema.columns — это таблица с информацией о table_name и column_name, то вы можете использовать следующий запрос

 select table_name, count( distinct column_name ) column_number_used
from information_schema.columns 
where table_schema = 'your_schema' 
group by table_name
  

это должно дать имена всех таблиц с соответствующим номером столбца, используемым в этой таблице..

Ответ №4:

Попробуйте это:

 SELECT COUNT(*) 
FROM INFORMATION_SCHEMA.COLUMNS
  

Ответ №5:

Вы можете получить нужные вам запросы из этого проекта с открытым исходным кодом под названием anywhereindb. Конечный результат этого проекта выходит за рамки того, что вам нужно, но вы можете заглянуть в код и извлечь ту часть, где он вычисляет все части таблиц.

Ответ №6:

Приведенный ниже пример может работать и изменять запросы в соответствии с вашими требованиями.

 Use [Your_DB_Name]

/* Count Total Number Of Tables */
SELECT COUNT(*) AS 'Total Tables' FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'

/* Count Total Number Of Views */
SELECT COUNT(*)  AS 'Total Views'  FROM INFORMATION_SCHEMA.VIEWS

/* Count Total Number Of Stored Procedures */
SELECT COUNT(*)  AS 'Total SPs'  FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'PROCEDURE'

/* Count Total Number Of UDF(User Defined Functions) */
SELECT COUNT(*)  AS 'Total Functions' FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_TYPE = 'FUNCTION'
  

Пример:

введите описание изображения здесь