Получить список таблиц sql: Получить список таблиц в пользовательских БД в SQL Server
Содержание
Просмотр списка таблиц в базе данных MySQL
04.10.20202020-10-04T23:21:26+03:002021-01-14T13:27:21+03:00
Linux
Комментариев нет
При управлении серверами баз данных MySQL одна из наиболее частых задач, которые вы выполняете, — это знакомство со средой. Это включает в себя перечисление баз данных, которые находятся на сервере, отображение таблиц базы данных или получение информации об учетных записях пользователей и их привилегиях .
В этой статье показано, как вывести список таблиц в базе данных MySQL или MariaDB через командную строку.
Содержание
Показать таблицы MySQL
Чтобы получить список таблиц в базе данных MySQL, используйте клиентский инструмент mysql
для подключения к серверу MySQL и выполните команду SHOW TABLES
.
Доступ к серверу MySQL:
mysql -u user -p
Из оболочки MySQL переключитесь на базу данных с помощью оператора USE
:
USE database_name;
Выполните следующую команду, чтобы получить список всех таблиц и представлений в текущей базе данных:
SHOW TABLES;
Результат будет выглядеть примерно так:
+----------------------------+ | Tables_in_database_name | +----------------------------+ | actions | | permissions | | permissions_roles | | permissions_users | | roles | | roles_users | | settings | | users | +----------------------------+ 8 rows in set (0. 00 sec)
Необязательный модификатор FULL
покажет тип таблицы как второй выходной столбец.
SHOW FULL TABLES;
Результат будет выглядеть примерно так:
+----------------------------+------------+ | Tables_in_database_name | Table_type | +----------------------------+------------+ | actions | VIEW | | permissions | BASE TABLE | | permissions_roles | BASE TABLE | | permissions_users | BASE TABLE | | roles | BASE TABLE | | roles_users | BASE TABLE | | settings | BASE TABLE | | users | BASE TABLE | +----------------------------+------------+ 8 rows in set (0.00 sec)
Чтобы получить список таблиц без переключения на базу данных, используйте предложение FROM
или IN
, за которым следует имя базы данных:
SHOW TABLES FROM database_name;
Предложение LIKE
можно использовать для фильтрации вывода команды SHOW TABLES
соответствии с определенным шаблоном.
SHOW TABLES LIKE pattern;
Например, следующий оператор вернет все базы данных, имена которых начинаются с ‘open’:
SHOW TABLES LIKE 'permissions%';
+-------------------------------------------+ | Tables_in_database_name (permissions%) | +-------------------------------------------+ | permissions | | permissions_roles | | permissions_users | +-------------------------------------------+ 3 rows in set (0.00 sec)
Знак процента ( %
) означает ноль, один или несколько символов.
Показать таблицы MySQL из командной строки
Чтобы получить информацию о таблицах из оболочки Linux, вы можете использовать команду mysql -e
или команду mysqlshow
которая отображает информацию о базах данных и таблицах.
Это особенно полезно, когда вы хотите работать со своими базами данных MySQL с помощью сценариев оболочки.
Выполните следующую команду на своем терминале, чтобы отобразить список всех баз данных:
mysql -u user -p -e 'SHOW TABLES FROM database_name;'
В результате отобразится список всех таблиц:
+----------------------------+ | Tables_in_database_name | +----------------------------+ | actions | | permissions | | permissions_roles | | permissions_users | | roles | | roles_users | | settings | | users | +----------------------------+
Вот пример использования команды mysqlshow
:
mysqlshow database_name
Вы можете отфильтровать вывод с помощью команды grep
.
Выводы
Чтобы получить информацию о таблицах в базе данных MySQL, используйте команду SHOW TABLES
.
Не стесняйтесь оставлять комментарии, если у вас есть вопросы.
SHOW Queries | ClickHouse Docs
SHOW CREATE TABLE
SHOW CREATE [TEMPORARY] [TABLE|DICTIONARY|VIEW] [db.]table|view [INTO OUTFILE filename] [FORMAT format]
Возвращает один столбец типа String
с именем statement, содержащий одно значение — запрос CREATE
, с помощью которого был создан указанный объект.
SHOW DATABASES
Выводит список всех баз данных.
SHOW DATABASES [LIKE | ILIKE | NOT LIKE '<pattern>'] [LIMIT <N>] [INTO OUTFILE filename] [FORMAT format]
Этот запрос идентичен запросу:
SELECT name FROM system.databases [WHERE name LIKE | ILIKE | NOT LIKE '<pattern>'] [LIMIT <N>] [INTO OUTFILE filename] [FORMAT format]
Примеры
Получение списка баз данных, имена которых содержат последовательность символов ‘de’:
SHOW DATABASES LIKE '%de%'
Результат:
┌─name────┐
│ default │
└─────────┘
Получение списка баз данных, имена которых содержат последовательность символов ‘de’ независимо от регистра:
SHOW DATABASES ILIKE '%DE%'
Результат:
┌─name────┐
│ default │
└─────────┘
Получение списка баз данных, имена которых не содержат последовательность символов ‘de’:
SHOW DATABASES NOT LIKE '%de%'
Результат:
┌─name───────────────────────────┐
│ _temporary_and_external_tables │
│ system │
│ test │
│ tutorial │
└────────────────────────────────┘
Получение первых двух строк из списка имен баз данных:
SHOW DATABASES LIMIT 2
Результат:
┌─name───────────────────────────┐
│ _temporary_and_external_tables │
│ default │
└────────────────────────────────┘
Смотрите также
- CREATE DATABASE
SHOW PROCESSLIST
SHOW PROCESSLIST [INTO OUTFILE filename] [FORMAT format]
Выводит содержимое таблицы system. processes, которая содержит список запросов, выполняющихся в данный момент времени, кроме самих запросов SHOW PROCESSLIST
.
Запрос SELECT * FROM system.processes
возвращает данные обо всех текущих запросах.
Полезный совет (выполните в консоли):
$ watch -n1 "clickhouse-client --query='SHOW PROCESSLIST'"
SHOW TABLES
Выводит список таблиц.
SHOW [TEMPORARY] TABLES [{FROM | IN} <db>] [LIKE | ILIKE | NOT LIKE '<pattern>'] [LIMIT <N>] [INTO OUTFILE <filename>] [FORMAT <format>]
Если условие FROM
не указано, запрос возвращает список таблиц из текущей базы данных.
Этот запрос идентичен запросу:
SELECT name FROM system.tables [WHERE name LIKE | ILIKE | NOT LIKE '<pattern>'] [LIMIT <N>] [INTO OUTFILE <filename>] [FORMAT <format>]
Примеры
Получение списка таблиц, имена которых содержат последовательность символов ‘user’:
SHOW TABLES FROM system LIKE '%user%'
Результат:
┌─name─────────────┐
│ user_directories │
│ users │
└──────────────────┘
Получение списка таблиц, имена которых содержат последовательность символов ‘user’ без учета регистра:
SHOW TABLES FROM system ILIKE '%USER%'
Результат:
┌─name─────────────┐
│ user_directories │
│ users │
└──────────────────┘
Получение списка таблиц, имена которых не содержат символ ‘s’:
SHOW TABLES FROM system NOT LIKE '%s%'
Результат:
┌─name─────────┐
│ metric_log │
│ metric_log_0 │
│ metric_log_1 │
└──────────────┘
Получение первых двух строк из списка таблиц:
SHOW TABLES FROM system LIMIT 2
Результат:
┌─name───────────────────────────┐
│ aggregate_function_combinators │
│ asynchronous_metric_log │
└────────────────────────────────┘
Смотрите также
- Create Tables
- SHOW CREATE TABLE
SHOW DICTIONARIES
Выводит список внешних словарей.
SHOW DICTIONARIES [FROM <db>] [LIKE '<pattern>'] [LIMIT <N>] [INTO OUTFILE <filename>] [FORMAT <format>]
Если секция FROM
не указана, запрос возвращает список словарей из текущей базы данных.
Аналогичный результат можно получить следующим запросом:
SELECT name FROM system.dictionaries WHERE database = <db> [AND name LIKE <pattern>] [LIMIT <N>] [INTO OUTFILE <filename>] [FORMAT <format>]
Example
Запрос выводит первые две стоки из списка таблиц в базе данных system
, имена которых содержат reg
.
SHOW DICTIONARIES FROM db LIKE '%reg%' LIMIT 2
┌─name─────────┐
│ regions │
│ region_names │
└──────────────┘
Выводит привилегии пользователя.
Синтаксис
SHOW GRANTS [FOR user]
Если пользователь не задан, запрос возвращает привилегии текущего пользователя.
Выводит параметры, использованные при создании пользователя.
SHOW CREATE USER
не возвращает пароль пользователя.
Синтаксис
SHOW CREATE USER [name1 [, name2 ...] | CURRENT_USER]
Выводит параметры, использованные при создании роли.
Синтаксис
SHOW CREATE ROLE name1 [, name2 ...]
Выводит параметры, использованные при создании политики доступа к строкам.
Синтаксис
SHOW CREATE [ROW] POLICY name ON [database1.]table1 [, [database2.]table2 ...]
Выводит параметры, использованные при создании квоты.
Синтаксис
SHOW CREATE QUOTA [name1 [, name2 ...] | CURRENT]
Выводит параметры, использованные при создании профиля настроек.
Синтаксис
SHOW CREATE [SETTINGS] PROFILE name1 [, name2 ...]
Выводит список пользовательских аккаунтов. Для просмотра параметров пользовательских аккаунтов, см. системную таблицу system.users.
Синтаксис
SHOW USERS
Выводит список ролей. Для просмотра параметров ролей, см. системные таблицы system.roles и system.role_grants.
Синтаксис
SHOW [CURRENT|ENABLED] ROLES
Выводит список профилей настроек. Для просмотра других параметров профилей настроек, см. системную таблицу settings_profiles.
Синтаксис
SHOW [SETTINGS] PROFILES
Выводит список политик доступа к строкам для указанной таблицы. Для просмотра других параметров, см. системную таблицу system.row_policies.
Синтаксис
SHOW [ROW] POLICIES [ON [db.]table]
Выводит список квот. Для просмотра параметров квот, см. системную таблицу system.quotas.
Синтаксис
SHOW QUOTAS
Выводит потребление квоты для всех пользователей или только для текущего пользователя. Для просмотра других параметров, см. системные таблицы system.quotas_usage и system.quota_usage.
Синтаксис
SHOW [CURRENT] QUOTA
Выводит список всех пользователей, ролей, профилей и пр. , а также все привилегии.
Синтаксис
SHOW ACCESS
Возвращает список кластеров. Все доступные кластеры перечислены в таблице system.clusters.
Синтаксис
SHOW CLUSTER '<name>'
SHOW CLUSTERS [LIKE|NOT LIKE '<pattern>'] [LIMIT <N>]
Примеры
Запрос:
SHOW CLUSTERS;
Результат:
┌─cluster──────────────────────────────────────┐
│ test_cluster_two_shards │
│ test_cluster_two_shards_internal_replication │
│ test_cluster_two_shards_localhost │
│ test_shard_localhost │
│ test_shard_localhost_secure │
│ test_unavailable_shard │
└──────────────────────────────────────────────┘
Запрос:
SHOW CLUSTERS LIKE 'test%' LIMIT 1;
Результат:
┌─cluster─────────────────┐
│ test_cluster_two_shards │
└─────────────────────────┘
Запрос:
SHOW CLUSTER 'test_shard_localhost' FORMAT Vertical;
Результат:
Row 1:
──────
cluster: test_shard_localhost
shard_num: 1
shard_weight: 1
replica_num: 1
host_name: localhost
host_address: 127. 0.0.1
port: 9000
is_local: 1
user: default
default_database:
errors_count: 0
estimated_recovery_time: 0
SHOW SETTINGS
Возвращает список системных настроек и их значений. Использует данные из таблицы system.settings.
Синтаксис
SHOW [CHANGED] SETTINGS LIKE|ILIKE <name>
Секции
При использовании LIKE|ILIKE
можно задавать шаблон для имени настройки. Этот шаблон может содержать символы подстановки, такие как %
или _
. При использовании LIKE
шаблон чувствителен к регистру, а при использовании ILIKE
— не чувствителен.
Если используется CHANGED
, запрос вернет только те настройки, значения которых были изменены, т.е. отличны от значений по умолчанию.
Примеры
Запрос с использованием LIKE
:
SHOW SETTINGS LIKE 'send_timeout';
Результат:
┌─name─────────┬─type────┬─value─┐
│ send_timeout │ Seconds │ 300 │
└──────────────┴─────────┴───────┘
Запрос с использованием ILIKE
:
SHOW SETTINGS ILIKE '%CONNECT_timeout%'
Результат:
┌─name────────────────────────────────────┬─type─────────┬─value─┐
│ connect_timeout │ Seconds │ 10 │
│ connect_timeout_with_failover_ms │ Milliseconds │ 50 │
│ connect_timeout_with_failover_secure_ms │ Milliseconds │ 100 │
└─────────────────────────────────────────┴──────────────┴───────┘
Запрос с использованием CHANGED
:
SHOW CHANGED SETTINGS ILIKE '%MEMORY%'
Результат:
┌─name─────────────┬─type───┬─value───────┐
│ max_memory_usage │ UInt64 │ 10000000000 │
└──────────────────┴────────┴─────────────┘
См. также
- Таблица system.settings
sql server — Получить все имена таблиц конкретной базы данных с помощью SQL-запроса?
спросил
Изменено
6 месяцев назад
Просмотрено
1,6 млн раз
Я работаю над приложением, которое может работать с несколькими серверами баз данных, такими как «MySQL» и «MS SQL Server».
Я хочу получить имена таблиц конкретной базы данных, используя общий запрос, который подходит для всех типов баз данных. Я пробовал следующее:
SELECT TABLE_NAME ИЗ INFORMATION_SCHEMA.TABLES ГДЕ TABLE_TYPE='БАЗОВАЯ ТАБЛИЦА'
Но он дает имена таблиц всех баз данных определенного сервера, но я хочу получить имена таблиц только выбранной базы данных. Как я могу ограничить этот запрос для получения таблиц определенной базы данных?
- sql
- sql-сервер
1
Вероятно, из-за того, как разные СУБД sql работают со схемами.
Попробуйте следующее
Для SQL Server:
SELECT TABLE_NAME ИЗ INFORMATION_SCHEMA.TABLES ГДЕ TABLE_TYPE = 'BASE TABLE' AND TABLE_CATALOG='dbName'
Для MySQL:
ВЫБЕРИТЕ ИМЯ ТАБЛИЦЫ ИЗ INFORMATION_SCHEMA.TABLES ГДЕ TABLE_TYPE = 'BASE TABLE' AND TABLE_SCHEMA = 'dbName'
Для Oracle эквивалентно использование DBA_TABLES
.
6
Украдено отсюда:
ИСПОЛЬЗУЙТЕ YOURDBNAME ИДТИ ВЫБИРАТЬ * ИЗ системных таблиц ИДТИ
4
Следующий запрос выберет все таблиц
в базе данных с именем DBName
:
USE DBName ИДТИ ВЫБИРАТЬ * ИЗ системных таблиц ИДТИ
2
Просто поместите ИМЯ БАЗЫ ДАННЫХ
перед INFORMATION_SCHEMA.TABLES
:
выберите table_name из YOUR_DATABASE.INFORMATION_SCHEMA.TABLES, где TABLE_TYPE = 'BASE TABLE'
ИСПОЛЬЗОВАТЬ ИмяБД; SELECT * FROM sys. Tables;
Мы можем обойтись без GO
вместо вас можно использовать точку с запятой ;
.
1
В mysql используйте:
SHOW TABLES;
После выбора БД с помощью:
ИСПОЛЬЗОВАТЬ имя_базы_данных
4
Если кто-то захочет перечислить все таблицы в конкретной базе данных без использования ключевого слова «use»:
SELECT TABLE_NAME FROM имя_базы_данных.INFORMATION_SCHEMA.TABLES
1
ВЫБОР
*
ОТ
информационная_схема.таблицы;
Я не видел этого ответа, но вот что я делаю:
SELECT name FROM databaseName.sys.Tables;
Чтобы выбрать запрос к базе данных ниже:
используйте DatabaseName
Сейчас
ВЫБРАТЬ * ИЗ INFORMATION_SCHEMA.TABLES
Теперь вы можете увидеть созданные таблицы ниже в консоли.
ПФА.
1
Для Mysql можно сделать просто. ШОУ СТОЛЫ;
выберите * из sys.tables упорядочить по schema_id --comments: упорядочить по schema_id, чтобы получить «таблицы» в «порядке обозревателя объектов» идти
1
В нашей базе данных Oracle (PL/SQL) приведенный ниже код работает для получения списка всех существующих таблиц в нашей базе данных.
выберите * на вкладке;
и
выберите table_name из вкладок;
оба работают. давайте попробуем найти ваш.
ВЫБЕРИТЕ ИМЯ ТАБЛИЦЫ ИЗ your_database_name.INFORMATION_SCHEMA.TABLES ЗАКАЗАТЬ ПО TABLE_NAME;
Exec sp_MSforeachtable «Выбрать»?
2
USE имя_базы_данных; ВЫБЕРИТЕ ИМЯ ТАБЛИЦЫ ИЗ INFORMATION_SCHEMA.TABLES ГДЕ (TABLE_SCHEMA = 'имя_базы_данных' ИЛИ TABLE_SCHEMA = 'имя_схемы') ЗАКАЗАТЬ ПО TABLE_NAME
Если вы работаете с несколькими схемами на сервере MS SQL, то SELECT-ing TABLE_NAME без одновременного выбора TABLE_SCHEMA может иметь ограниченную пользу, поэтому я предположил, что при использовании MS SQL нас интересуют таблицы, принадлежащие известной схеме. Сервер.
Я проверил приведенный выше запрос с SQL Server Management Studio, используя мою базу данных SQL Server, и с MySQL Workbench, используя базу данных MySQL, и в обоих случаях он дает имена таблиц.
Запрос объединяет два разных запроса Майкла Бэйлона в один, который затем может выполняться в базе данных любого типа. Первая часть предложения WHERE работает с базами данных MySQL, а вторая часть (после ИЛИ) работает с базами данных MS SQL Server. Это некрасиво и логически немного неверно, так как предполагает, что нет нежелательной схемы с тем же именем, что и у базы данных. Это может помочь тому, кто ищет один единственный запрос, который может выполняться на любом сервере базы данных.
ОБНОВЛЕНИЕ ДЛЯ ПОСЛЕДНЕЙ ВЕРСИИ MSSQL SERVER (17.7)
ВЫБЕРИТЕ имя ИЗ sys.Tables, ГДЕ type_desc = 'USER_TABLE'
Или SELECT *
для получения всех столбцов.
1
Да оракул:
выберите * из user_tables
То есть, если вам нужны только объекты, принадлежащие вошедшему в систему пользователю/схеме
, в противном случае вы можете использовать all_tables
или dba_tables
, которые включают системные таблицы.
2
Опираясь на ответ Майкла Бэйлона, мне нужен список, который также включает информацию о схеме, и вот как я изменил его запрос.
ВЫБРАТЬ TABLE_SCHEMA + '.' + TABLE_NAME как 'Schema.Table' ИЗ INFORMATION_SCHEMA.TABLES ГДЕ TABLE_TYPE = 'BASE TABLE' AND TABLE_CATALOG = 'dbName' ЗАКАЗАТЬ ПО TABLE_SCHEMA, TABLE_NAME
Просто получите всю важную информацию с помощью приведенного ниже SQL в Mysql
SELECT t.TABLE_NAME, t.ENGINE, t.TABLE_ROWS, t.AVG_ROW_LENGTH, t.INDEX_LENGTH ОТ INFORMATION_SCHEMA.TABLES как t, где t.TABLE_SCHEMA = 'ИМЯ ВАШЕЙ ТАБЛИЦЫ ЗДЕСЬ' заказ по t.TABLE_NAME ASC limit 10000;
ВЫБЕРИТЕ ИМЯ ТАБЛИЦЫ ИЗ INFORMATION_SCHEMA.TABLES ГДЕ ТАБЛИЦА_ТИП = 'БАЗОВАЯ ТАБЛИЦА' ЗАКАЗАТЬ ПО TABLE_NAME
1
для postgres это будет:
SELECT table_name ИЗ INFORMATION_SCHEMA.TABLES WHERE table_schema = 'your_schema' -- возможно общедоступный
sql — Получение списка таблиц и полей в каждой из баз данных
спросил
Изменено
7 месяцев назад
Просмотрено
303 тыс. раз
Я собираюсь создать базовую ORM (чисто для развлечения) и мне интересно, есть ли способ вернуть список таблиц в базе данных, а также поля для каждой таблицы?
Используя это, я хочу иметь возможность пройтись по набору результатов (в C#), а затем сказать для каждой таблицы в наборе результатов сделать это (например, использовать отражение, чтобы создать класс, который будет выполнять или содержать xyz).
Кроме того, какие есть хорошие онлайн-блоги по SQL Server? Я знаю, что этот вопрос на самом деле касается использования системных SP и баз данных в Sql Server, и я согласен с общими запросами, поэтому меня интересуют некоторые блоги, посвященные такого рода функциям.
Спасибо
- sql
- tsql
3
Это то, что вы ищете:
Использование ОБЪЕКТОВ КАТАЛОГА ВИДОВ
ВЫБРАТЬ T.name AS Table_Name , C.name AS имя_столбца, P.name AS Data_Type , C. max_length Размер AS, CAST(P.precision AS VARCHAR) + '/' + CAST(P.scale AS VARCHAR) AS Precision_Scale ИЗ sys.objects AS T ПРИСОЕДИНЯЙТЕСЬ к sys.columns КАК C ON T.object_id = C.object_id ПРИСОЕДИНЯЙТЕСЬ к sys.types КАК P ON C.system_type_id = P.system_type_id ГДЕ T.type_desc = 'USER_TABLE';
Использование ПРЕДСТАВЛЕНИЙ ИНФОРМАЦИОННОЙ СХЕМЫ
SELECT TABLE_SCHEMA , ТАБЛИЦА_ИМЯ , ИМЯ_СТОЛБЦА , ОРДИНАЛ_ПОЗИЦИЯ , COLUMN_DEFAULT , ТИП ДАННЫХ , CHARACTER_MAXIMUM_LENGTH, ЧИСЛОВАЯ_ТОЧНОСТЬ , NUMERIC_PRECISION_RADIX, NUMERIC_SCALE , DATETIME_PRECISION ИЗ INFORMATION_SCHEMA.COLUMNS;
Ссылка: Мой блог — http://dbalink.wordpress.com/2008/10/24/querying-the-object-catalog-and-information-schema-views/
7
Таблицы ::
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'
столбца ::
SELECT * FROM INFORMATION_SCHEMA. COLUMNS
или
SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='your_table_name'
3
Получить список всех таблиц и полей в базе данных:
Выбрать * Из INFORMATION_SCHEMA.COLUMNS Где TABLE_CATALOG как «DatabaseName»
Получить список всех полей в таблице:
Выбрать * Из INFORMATION_SCHEMA.COLUMNS Где TABLE_CATALOG как «DatabaseName», а TABLE_NAME как «TableName»
1
Я проверил несколько решений и обнаружил, что
Выбрать * Из INFORMATION_SCHEMA.COLUMNS
дает вам информацию о столбце для вашей ТЕКУЩЕЙ базы данных/базы данных по умолчанию.
Выбрать * Из <ИМЯ БД>.INFORMATION_SCHEMA.COLUMNS
, без < и >, дает вам информацию о столбце для базы данных DBNAME.
ВЫБЕРИТЕ * ИЗ INFORMATION_SCHEMA.COLUMNS
Другим вашим встроенным другом является системная sproc SP_HELP.
Пример использования
::
sp_help
Возвращает гораздо больше информации, чем вам действительно нужно, но не менее 90% ваших возможных требований будут удовлетворены.
Просто бросьте это туда — теперь легко скопировать / вставить в слово или документ Google:
PRINT '' УСТАНОВИТЬ NOCOUNT ON ОБЪЯВИТЬ @tableName VARCHAR(30) DECLARE tableCursor CURSOR LOCAL FAST_FORWARD ДЛЯ ВЫБРАТЬ T.name AS имя_таблицы ИЗ sys.objects AS T ГДЕ T.type_desc = 'USER_TABLE' ЗАКАЗАТЬ ПО T.name ОТКРЫТЬ таблицуКурсор FETCH NEXT FROM tableCursor INTO @tableName ПОКА @@FETCH_STATUS = 0 НАЧАТЬ ПЕЧАТЬ '' + @tableName + '
' ПЕЧАТЬ '<пред>' SELECT LEFT(C.name, 30) AS ColumnName, LEFT(ISC.DATA_TYPE, 10) КАК тип данных, C.max_length Размер AS, CAST(P.precision AS VARCHAR(4)) + '/' + CAST(P.scale AS VARCHAR(4)) AS PrecScale, CASE WHEN C.is_nullable = 1 THEN 'Null' ELSE 'No Null' END AS [Nullable], LEFT(ISNULL(ISC.COLUMN_DEFAULT, ' '), 5) КАК [По умолчанию], CASE WHEN C.is_identity = 1 THEN 'Identity' ELSE '' END AS [Identity] ИЗ sys.objects AS T ПРИСОЕДИНЯЙТЕСЬ к sys. columns КАК C ON T.object_id = C.object_id ПРИСОЕДИНЯЙТЕСЬ к sys.types КАК P ON C.system_type_id = P.system_type_id ПРИСОЕДИНЯЙТЕСЬ К INFORMATION_SCHEMA.COLUMNS КАК ISC НА T.name = ISC.TABLE_NAME AND C.name = ISC.COLUMN_NAME ГДЕ T.type_desc = 'USER_TABLE' И T.name = @tableName ЗАКАЗАТЬ ПО T.name, ISC.ORDINAL_POSITION ПЕЧАТЬ '
‘
FETCH NEXT FROM tableCursor INTO @tableName
КОНЕЦ
ЗАКРЫТЬ таблицуКурсор
DEALLOCATE таблицаКурсор
УСТАНОВИТЬ NOCOUNT ВЫКЛ.
ПЕЧАТЬ ‘‘
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
для получения всех
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.COLUMNS
для получения всех имен таблиц.
Попробуйте на sqlserver,
Это даст вам все таблицы, созданные пользователем:
select * from sysobjects where xtype='U'
Чтобы получить столбцы:
Выберите * из Information_Schema.Columns Where Table_Name = 'Insert Table Name Here'
Кроме того, я считаю http://www. sqlservercentral.com/ довольно хорошим ресурсом БД.
Это вернет имя базы данных, имя таблицы, имя столбца и тип данных столбца, указанный в параметре базы данных:
declare @database nvarchar(25) установить @базу данных = '' ВЫБЕРИТЕ cu.table_catalog, cu.VIEW_SCHEMA, cu.VIEW_NAME, cu.TABLE_NAME, cu.COLUMN_NAME,c.DATA_TYPE,c.character_maximum_length из INFORMATION_SCHEMA.VIEW_COLUMN_USAGE как у.е. ПРИСОЕДИНЯЙТЕСЬ к INFORMATION_SCHEMA.COLUMNS как c на cu.TABLE_SCHEMA = c.TABLE_SCHEMA и c.TABLE_CATALOG = cu.TABLE_CATALOG и c.TABLE_NAME = cu.TABLE_NAME и c.COLUMN_NAME = cu.COLUMN_NAME где cu.TABLE_CATALOG = @база данных заказать по cu.view_name,c.COLUMN_NAME
1
Для MYSQL:
Выберите * Из INFORMATION_SCHEMA.COLUMNS где TABLE_SCHEMA = "<имя_базы_данных>"
3
Я нашел простой способ получить информацию о таблицах и столбцах конкретной БД с помощью SQL Developer.
Выберите *FROM USER_TAB_COLUMNS
в Microsoft SQL Server вы можете использовать это:
объявлять @sql2 nvarchar(2000) установить @sql2 =' использовать ? if ( db_name(db_id()) не в (''master'',''tempdb'',''model'',''msdb'',''SSISDB'')) ) начинать выбирать db_name() как БД, SS. name как имя схемы, SO.name имя_таблицы, SC.name имя столбца, ST.имя тип, случай, когда ST.name в (''nvarchar'', ''nchar'') затем конвертировать (varchar (10), ( SC.max_length / 2 )) когда ST.name в (''char'', ''varchar'') затем конвертировать (varchar (10), SC.max_length) иначе ноль конец как длина, случай, когда SC.is_nullable = 0, затем «Нет», когда SC.is_nullable = 1, затем «Да», иначе null заканчивается как обнуляемый, isnull(SC.column_id,0) как col_number из sys.objects ТАК присоединиться к sys.schemas SS на SS.schema_id = SO.schema_id присоединиться к sys.columns SC на SO.object_id = SC.object_id левое соединение sys.types ST на SC.user_type_id = ST.user_type_id и SC.system_type_id = ST.system_type_id где SO.is_ms_shipped = 0 конец ' exec sp_msforeachdb @command1 = @sql2
показывает все таблицы и столбцы (и их определения) из всех пользовательских баз данных.
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя электронную почту и пароль
Опубликовать как гость
Электронная почта
Требуется, но никогда не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.