Получить список таблиц в пользовательских БД в SQL Server
Добрый день. Подскажите запрос на получение списка таблиц пользовательских (не системных) баз данных в SQL Server 2008.
Отслеживать
51.4k 86 86 золотых знаков 267 267 серебряных знаков 505 505 бронзовых знаков
задан 6 июл 2011 в 7:33
285 2 2 золотых знака 4 4 серебряных знака 17 17 бронзовых знаков
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Есть ещё вариант SELECT * FROM INFORMATION_SCHEMA.TABLES
Он более кроссплатформенный относительно СУБД, т.к. INFORMATION_SCHEMA является частью стандарта SQL, а sys.objects нет.
Хотя там есть не всё, многие вещи без представлений из схемы sys не получить.
Отслеживать
ответ дан 6 июл 2011 в 9:04
8,875 25 25 серебряных знаков 66 66 бронзовых знаков
Запомню, спасибо
6 июл 2011 в 10:52
//Выдает все базы данных на сервере
SELECT name FROM sys.databases
//Выдает все таблицы в Базе данных
SELECT * FROM sys.objects WHERE type in (N’U’)
Отслеживать
ответ дан 6 июл 2011 в 7:43
841 1 1 золотой знак 9 9 серебряных знаков 26 26 бронзовых знаков
Второй запрос возвращает список таблиц из СИСТЕМНОЙ базы master. Наверное я неправильно сформулировал вопрос: Нужно получать список таблиц из баз, которые созданы пользователем, т.е. создана база БАЗА1 с таблицами ТАБЛИЦА1, ТАБЛИЦА2 и т.д. Нужно получить список этих таблиц: ТАБЛИЦА1, ТАБЛИЦА2
6 июл 2011 в 8:07
Второй запрос выведет вам таблицы из базы данных, которую вы выберите. USE [MyDataBase] для выбора базы данных
Как вывести список всех таблиц MySQL и количество строк в каждой из них впри помощи PHP?
Надо вывести список всех таблиц и чтобы рядом стояло количество строк в это таблице.
Что я делаю не так?
Список пуст!
"; > else < while ($table = mysqli_fetch_array($result)) < $numread = mysqli_num_rows($link, "SELECT * FROM `$table[0]`"); echo "
таб $table[0]. Кол-во строк: $numread
"; > > ?>
- Вопрос задан более трёх лет назад
- 6144 просмотра
2 комментария
Простой 2 комментария

Konata Izumi @Konata69lol
Что выводит?
Какие-то ошибки?

Иван @FSystem88 Автор вопроса
Konata Izumi, выводит только список таблиц, а количество строк не выводит
Решения вопроса 1

Игорь Воротнёв @HeadOnFire
PHP, Laravel & WordPress Evangelist
SHOW TABLES FROM database_name прекрасно работает когда база не выбрана. Здесь мы показываем таблицы в базе, а не в $db_table. Исходя из вашего нейминга, вы просите таблицу показать ее таблицы, что абсурдно само по себе. Обращайтесь к базе. Или, если вы базу предварительно уже выбрали, то достаточно SHOW TABLES .
Далее, для SELECT * FROM table_name уже сначала нужно выбрать базу данных (которую вы опрашивали на предмет таблиц в первом запросе), или же обращаться к таблице в формате database_name.table_name.
Ну и, вместо того чтобы делать выборку всех строк со всеми колонками, спросите сразу SELECT COUNT(*) FROM database_name.table_name .
Еще проще и быстрее это сделать с помощью такого запроса:
SELECT table_name, table_rows FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'your_database_name';
Результат этого запроса:
+-----------------------+------------+ | table_name | table_rows | +-----------------------+------------+ | wp_terms | 10 | | wp_yoast_seo_meta | 61 | | wp_yoast_seo_links | 33 | | wp_commentmeta | 0 | | wp_term_taxonomy | 10 | | wp_ewwwio_queue | 352 | | wp_usermeta | 114 | | wp_options | 281 | | wp_users | 5 | | wp_term_relationships | 49 | | wp_ewwwio_images | 1048 | | wp_links | 0 | | wp_postmeta | 21408 | | wp_termmeta | 0 | | wp_comments | 0 | | wp_posts | 738 | +-----------------------+------------+
Единственное, что нужно учесть — если таблицы у вас InnoDB, то данные цифры будут более-менее точными, но не совсем. В силу механизмов оптимизации. Так что если нужно «приблизительно» понимать — используйте данный метод. Если нужно с точностью до одной строки — тогда COUNT.
Ну и еще можно сделать SHOW TABLE STATUS , находять в выбранной базе данных. Точность подсчета количества строк на InnoDB такая же, как и предыдущем методе, но зато здесь будет еще много полезной информации. Например — avg_row_length, data_length, index_length и другое.
Вывести список таблиц
Чтобы вывести список всех таблиц пользователей можно воспользоваться консольной утилитой « SQL Plus ». Что иронично. Для этого выполняем команду « cmd » в разделе «Пуск – Выполнить…». Далее появится черное окно в котором надо выполнить « sqlplus », потом ввести имя пользователя и пароль. И только после появления строки вида « SQL >» можно вводить SQL -код.
SELECT owners, table_name
FROM all_tables
ORDER BY 1, 2;
Просмотр списка баз данных на SQL Server
В этой статье описывается, как просмотреть список баз данных на экземпляре SQL Server с помощью SQL Server Management Studio или Transact-SQL.
Разрешения
Если участник, вызывающий sys.databases , не является владельцем базы данных, а база данных не является master или tempdb , то минимальными разрешениями, необходимыми для просмотра соответствующей строки, являются разрешения уровня сервера ALTER ANY DATABASE или VIEW ANY DATABASE или разрешение CREATE DATABASE в базе данных master . Узнать базу данных, к которой подключен участник, можно в представлении каталога sys.databases .
Использование среды SQL Server Management Studio
Просмотр списка баз данных в экземпляре SQL Server
- В обозревателе объектов подключитесь к экземпляру ядра СУБД SQL Server, а затем разверните этот экземпляр.
- Для просмотра списка всех баз данных в экземпляре разверните список Базы данных.
Использование Transact-SQL
Просмотр списка баз данных в экземпляре SQL Server
- Соединитесь с ядром СУБД .
- На стандартной панели выберите пункт Создать запрос.
- Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить. В этом примере возвращается список баз данных на экземпляре SQL Server. Список содержит имена баз данных, их идентификаторы и даты создания.
SELECT name, database_id, create_date FROM sys.databases; GO
Далее
- Представления каталога баз данных и файлов (Transact-SQL)
- sys.databases (Transact-SQL)