Получить список таблиц 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

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но никогда не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания и подтверждаете, что прочитали и поняли нашу политику конфиденциальности и кодекс поведения.