Как создать таблицу со всеми именами таблиц в моей БД и для каждого из них количество столбцов в таблице - PullRequest
0 голосов
/ 21 сентября 2019

Я новичок в SQL-разработчике, поэтому мало что знаю об этом.Я пытаюсь получить (от выбора) таблицу с именами всех таблиц в моей БД с количеством столбцов.Я пытался сделать это, но я могу только посчитать количество столбцов для каждой таблицы в отдельности.Я не могу получить название каждой таблицы.Другая проблема, с которой я столкнулся в своем коде, заключается в том, что при попытке поиска в ALL_TABLES отображаются все таблицы, к которым у меня есть доступ, а не только те, которые мне нужны в БД.

Try1:

SELECT COUNT(COLUMN_NAME) 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE 
TABLE_CATALOG = 'database_name' AND TABLE_SCHEMA = 'dbo'
AND TABLE_NAME = 'table_name'

Ответы [ 2 ]

2 голосов
/ 21 сентября 2019

Это должно сделать работу за вас:

SELECT OWNER, TABLE_NAME, COUNT(*) AS COLUMN_COUNT
  FROM ALL_TAB_COLUMNS
  GROUP BY OWNER, TABLE_NAME
  ORDER BY OWNER, TABLE_NAME

Вы также можете использовать USER_TAB_COLUMNS или DBA_TAB_COLUMNS представления, если у вас есть к ним доступ.

sqlfiddleздесь

1 голос
/ 21 сентября 2019

Я бы посоветовал учесть user_tables в вашем запросе, чтобы удалить из таблицы имена переработанных имен.

Также обратите внимание, что user_ представления не содержат столбец OWNER.Он присутствует в представлениях all_ и dba_.

select t.TABLE_NAME, COUNT(1) AS COLUMN_COUNT
from user_tab_cols tc
     join user_tables t
     on tc.table_name = t.table_name
where t.dropped = 'NO'
GROUP BY t.TABLE_NAME

Cheers !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...