Как я могу получить имена столбцов из таблицы в Oracle? - PullRequest
168 голосов
/ 17 января 2009

Мне нужно запросить базу данных, чтобы получить имена столбцов , чтобы не путать их с данными в таблице. Например, если у меня есть таблица с именем EVENT_LOG, которая содержит eventID, eventType, eventDesc и eventTime, то я бы хотел получить эти имена полей из запроса и ничего больше.

Я нашел, как это сделать в:

Но мне нужно знать: как это можно сделать в Oracle ?

Ответы [ 25 ]

169 голосов
/ 17 января 2009

Вы можете запросить таблицу USER_TAB_COLUMNS для метаданных столбца таблицы.

SELECT table_name, column_name, data_type, data_length
FROM USER_TAB_COLUMNS
WHERE table_name = 'MYTABLE'
67 голосов
/ 17 января 2009

В SQL Server ...

SELECT [name] AS [Column Name]
FROM syscolumns
WHERE id = (SELECT id FROM sysobjects WHERE type = 'V' AND [Name] = 'Your table name')

Type = 'V' для представлений Тип = 'U' для таблиц

38 голосов
/ 17 января 2009

Вы можете сделать это:

describe EVENT_LOG

или

desc EVENT_LOG

Примечание: применимо, только если вы знаете имя таблицы и специально для Oracle.

25 голосов
/ 23 августа 2012

Для SQL Server 2008 мы можем использовать information_schema.columns для получения информации о столбцах

SELECT *
FROM   information_schema.columns
WHERE  table_name = 'Table_Name'
ORDER  BY ordinal_position  
18 голосов
/ 26 апреля 2013

Для SQLite я считаю, что вы можете использовать что-то вроде следующего:

PRAGMA table_info(table-name);

Объяснение из sqlite.org:

Эта прагма возвращает одну строку для каждого столбца в именованной таблице. Столбцы в наборе результатов включают имя столбца, тип данных, может ли столбец иметь значение NULL и значение по умолчанию для столбца. Столбец «pk» в наборе результатов равен нулю для столбцов, которые не являются частью первичного ключа, и является индексом столбца в первичном ключе для столбцов, которые являются частью первичного ключа.

См. Также: Sqlite.org Pragma Информация о таблице

12 голосов
/ 17 января 2009

Эта информация хранится в системной таблице ALL_TAB_COLUMNS:

SQL> select column_name from all_tab_columns where table_name = 'DUAL';

DUMMY

Или вы можете DESCRIBE таблицу, если вы используете SQL * PLUS:

SQL> desc dual
Name                               Null?    Type
----------------------------------------------------- -------- ---------------------- -------------
DUMMY                               VARCHAR2(1)
8 голосов
/ 17 января 2009

Другие ответы в достаточной степени отвечают на вопрос, но я подумал, что поделюсь некоторой дополнительной информацией. Другие описывают синтаксис «DESCRIBE table» для получения информации о таблице. Если вы хотите получить информацию в том же формате, но без использования DESCRIBE, вы можете сделать:

SELECT column_name as COLUMN_NAME, nullable || '       ' as BE_NULL,
  SUBSTR(data_type || '(' || data_length || ')', 0, 10) as TYPE
 FROM all_tab_columns WHERE table_name = 'TABLENAME';

Возможно, это не имеет большого значения, но я написал это раньше, и, кажется, оно подходит.

3 голосов
/ 01 марта 2013
describe YOUR_TABLE;

В вашем случае:

describe EVENT_LOG;
3 голосов
/ 21 января 2013

Для MySQL используйте

SELECT column_name 
FROM information_schema.columns 
WHERE 
table_schema = 'Schema' AND table_name = 'Table_Name'
3 голосов
/ 06 октября 2012
select column_name,* from information_schema.columns
 where table_name = 'YourTableName'
order by ordinal_position
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...