2015-08-11 5 views
0

Итак, после того, как я задал этот простой вопрос, я бы не нашел ответа нигде. У меня есть только базовые знания базы данных, и мне нужен запрос в Oracle для правильного выбора строки с именем таблицы и первичным ключом. В большинстве примеров я нашел все строки поиска на основе номера строки или rowID (это то же самое, что и первичный ключ?).Выберите имя таблицы запроса и имя первичного ключа в Oracle?

Любая помощь в этом была бы принята с благодарностью.

+0

Не могли бы вы опубликовать то, что вы пробовали, некоторые данные и т. Д.??! – Cleb

ответ

2

У вас есть столбец первичного ключа и значение, которое вы хотите запросить? Где и что именно вы искали? Это очень простой ЗЕЬЕСТ в любой реляционной базе данных:

SELECT * 
FROM table_name 
WHERE primary_key_column = primary_key_value 

Если, конечно, я не понял вопроса.

1

Первичный ключ - это уникальный идентификатор строки в таблице. Каждая строка будет иметь первичный ключ, отличный от всех других строк. Этот ключ может быть одним значением, например rowID, или может быть составным значением (несколько столбцов, используемых в качестве первичного ключа, потому что не может быть необходимости в дополнительном столбце только для хранения rowID).

@ tilley31 выше показывает отличный пример того, как искать определенную строку в таблице. Если первичный ключ был составным;

SELECT * 
FROM table_name 
WHERE primary_key_column1 = primary_key_value1 
AND primary_key_column2 = primary_key_value2 
0

ROWID является псевдостолбец, который возвращает адрес строки, и, как правило, уникальна, исключение, где более одной таблицы хранится в одном кластере, то эти таблицы строк могут совместно использовать один и тот же ROWID. ROWID неявно задается оракулом для строк.

Первичный ключ уникально идентифицирует строку на уровне таблицы и создается пользователем, создавшим таблицу.

Получение ROWID из ряда

SELECT ROWID,FIELDNAME FROM ABC; 

Получение первичного ключа таблицы

SELECT * FROM USER_CONSTRAINTS WHERE TABLE_NAME='YOUR_TABLENAME' 
AND CONSTRAINT_TYPE='P'; 
0

Я предполагаю, что Вы намерены динамически выбирать таблицы и где положения в запросе (?) Если это то, что вы хотите сделать, ответьте: Нет. Это невозможно только через запрос. Вы можете достичь этого через pl/sql. и если вы должны иметь это в качестве запроса рекомендуется использовать табличную функцию, как показано ниже -

SELECT * FROM TABLE (FUNC ('TABLE_NAME', 'WHERE_CONDITION'))

проверить эту ссылку: https://oracle-base.com/articles/misc/pipelined-table-functions

Опять же, это требует наличия предустановленных выходных столбцов (COLUMN1, COLUMN2 и т. Д.). Вы не сможете выбрать точные имена столбцов из таблицы.

В целом это будет грязно.

Смежные вопросы