Я работаю над приложением, которое может работать с несколькими серверами баз данных, такими как «MySQL» и «MS SQL Server».
Я хочу получить имена таблиц конкретной базы данных, используя общий запрос, который должен подходить для всех типов баз данных. Я пробовал следующее:
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'
Но он дает имена таблиц всех баз данных конкретного сервера, но я хочу получить имена таблиц только выбранной базы данных. Как я могу ограничить этот запрос, чтобы получить таблицы конкретной базы данных?
sql
sql-server
Аван
источник
источник
Ответы:
Вероятно, из-за того, как разные базы данных sql работают со схемами.
Попробуйте следующее
Для SQL Server:
Для MySQL:
Для Oracle я думаю, что эквивалент будет использовать
DBA_TABLES
.источник
USE dbName GO
для SQL-сервера. Если вы не используете БД , результат не будет отображаться, даже если в этой БД есть таблицы.USE dbName GO
префикса на Server 2014.Украдено отсюда :
источник
Следующий запрос выберет все
Tables
в базе данных с именемDBName
:источник
Мы можем обойтись без того, чтобы
GO
вместо вас можно было использовать точку с запятой;
.источник
Просто поместите
DATABASE NAME
передINFORMATION_SCHEMA.TABLES
:источник
В mysql используйте:
После выбора БД с помощью:
источник
Я не видел этот ответ, но эй, это то, что я делаю:
источник
Для Mysql вы можете сделать просто. ПОКАЗАТЬ СТОЛЫ;
источник
источник
источник
sp_MSforeachtable
?Если вы работаете с несколькими схемами на сервере MS SQL, то ВЫБОР TABLE_NAME без одновременного выбора TABLE_SCHEMA может иметь ограниченную выгоду, поэтому я предположил, что при использовании MS SQL Server нас интересуют таблицы, принадлежащие известной схеме.
Я проверил приведенный выше запрос с SQL Server Management Studio, используя мою базу данных SQL Server, и с MySQL Workbench, используя базу данных MySQL, и в обоих случаях он дает имена таблиц.
Запрос объединяет два разных запроса Майкла Бэйлона в один, который затем может выполняться для любого типа базы данных. Первая часть предложения WHERE работает с базами данных MySQL, а вторая часть (после OR) - с базами данных MS SQL Server. Это некрасиво и логически немного некорректно, поскольку предполагает отсутствие нежелательной схемы с таким же именем, как у базы данных. Это может помочь кому-то, кто ищет один запрос, который может выполняться на любом сервере базы данных.
источник
ОБНОВЛЕНИЕ ПОСЛЕДНЕЙ ВЕРСИИ MSSQL-СЕРВЕРА (17.7)
Или
SELECT *
для получения всех столбцов.источник
Чтобы выбрать запрос к базе данных ниже:
Сейчас
Теперь вы можете увидеть созданные таблицы ниже в консоли.
PFA.
источник
Да оракул это:
То есть, если вы хотите, чтобы объекты принадлежали только зарегистрированному пользователю, в
user/schema
противном случае вы можете использоватьall_tables
илиdba_tables
который включает системные таблицы.источник
Основываясь на ответе Майкла Бэйлона, мне нужен был список, который также содержал информацию о схеме, и именно так я изменил его запрос.
источник
В нашей базе данных Oracle (PL / SQL) ниже приведен код, работающий для получения списка всех существующих таблиц в нашей БД.
и
оба работают. давайте попробуем найти ваше.
источник
Просто получите всю информацию о imptanat с этим ниже SQL в Mysql
источник