Получение имен колонок из таблицы в Oracle: гайд
Быстрый ответ
Для вывода имен столбцов таблицы в Oracle используйте следующий запрос:
SELECT column_name
FROM user_tab_columns
WHERE table_name = 'ВАША_ТАБЛИЦА';
Не забывайте прописывать 'ВАША_ТАБЛИЦА'
в верхнем регистре, подставляя в это место настоящее имя нужной вам таблицы. Данный запрос вернёт вам названия столбцов в текущей схеме. Если же вам нужно обратиться к таблицам из других схем, воспользуйтесь all_tab_columns
или dba_tab_columns
, при условии, что у вас есть соответствующие права доступа.
Погружение в USER_TAB_COLUMNS
Представление USER_TAB_COLUMNS
хранит информацию о столбцах таблиц, принадлежащих вам. Это что-то вроде каталога таблиц вашей схемы. Для просмотра этих метаданных воспользуйтесь следующим запросом:
SELECT column_name
FROM user_tab_columns
WHERE table_name = 'УКАЖИТЕ_ИМЯ_ТАБЛИЦЫ';
Oracle требует, чтобы имена таблиц были записаны в верхнем регистре.
Работа с различными схемами
Если вы хотите изучить столбцы в таблицах, принадлежащих различным схемам, добавьте в запрос условие по владельцу:
SELECT column_name
FROM all_tab_columns
WHERE table_name = 'УКАЖИТЕ_ИМЯ_ТАБЛИЦЫ' AND owner = 'УКАЖИТЕ_ИМЯ_ВЛАДЕЛЬЦА';
Таким образом, вы сможете получить информацию о структуре таблиц из других схем, но без возможности их модифицировать.
SQL*Plus и привилегия команды DESCRIBE
У тех, кто работает в SQL*Plus от Oracle, есть возможность использования команды DESC
, которая позволяет быстро ознакомиться со структурой таблицы:
DESC Ваша_Таблица;
Создание процедуры для динамического вывода имен столбцов
Вызов имен столбцов можно автоматизировать путём создания соответствующей процедуры на PL/SQL:
CREATE OR REPLACE PROCEDURE get_column_names(p_table_name VARCHAR2)
IS
BEGIN
FOR c IN (
SELECT column_name
FROM all_tab_columns
WHERE table_name = UPPER(p_table_name)
) LOOP
DBMS_OUTPUT.PUT_LINE('Имя столбца: ' || c.column_name);
END LOOP;
END get_column_names;
Эта процедура выведет на экран имена столбцов указанной вами таблицы.
Порядок представления результата
Результата запроса можно отсортировать в нужном вам порядке с помощью ORDER BY
:
SELECT column_name
FROM user_tab_columns
WHERE table_name = 'ИМЯ_ТАБЛИЦЫ'
ORDER BY column_id;
Визуализация
Процесс работы с именами столбцов можно упростить, представив его как поиск сокровищ на карте:
Карта сокровищ (🗺️): "Ваша таблица"
Место "Х" (❌): "Имена столбцов, которые вы ищете"
Ваш компас (🧭):
SELECT COLUMN_NAME
FROM ALL_TAB_COLUMNS
WHERE TABLE_NAME = 'НАЗВАНИЕ_ТАБЛИЦЫ' AND OWNER = 'ИМЯ_СХЕМЫ';
Найденное сокровище (💎): Ценный список имен столбцов!
// Использование этого запроса – это как использовать компас, указывающий путь к сокровищу, раскрывающему ценные данные о столбцах.
Полезные материалы
- USER_TAB_COLUMNS – Официальная документация Oracle — информация о словаре данных
USER_TAB_COLUMNS
. - ALL_TAB_COLUMNS – Официальная документация Oracle — подробности о словаре данных
ALL_TAB_COLUMNS
, содержащем информацию о столбцах всех для пользователя доступных таблиц. - Ask TOM — ресурс Ask TOM компании Oracle, где можно найти готовые решения и примеры лучшей практики.
- SQL Server – использование ulong в качестве первичного ключа – Database Administrators Stack Exchange — обсуждение использования ulong в качестве первичного ключа.
- Примеры запросов к представлениям словаря данных – Официальная документация Oracle — примеры запросов к представлениям словаря данных Oracle.