在Oracle中选择给定表名和主键的行查询?

时间:2015-08-11 18:03:52

标签: sql database oracle

因此在谷歌搜索这个简单的问题后,我无法在任何地方找到答案。我只有非常基本的数据库知识,我需要在Oracle中进行查询,以便在给定表名和主键的情况下正确选择一行。大多数示例我发现所有行都基于行号或行ID(与主键相同?)。

对此的任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:2)

您是否拥有主键列和要查询的值?你在哪里或者究竟在搜索什么?这是任何关系数据库中非常基本的SELECT语句:

SELECT *
FROM table_name
WHERE primary_key_column = primary_key_value

当然,除非我不明白这个问题。

答案 1 :(得分:1)

主键是表中行的唯一标识符。每行都有一个与所有其他行不同的主键。此键可以是一个值,例如rowID,也可以是复合值(多个列用作主键,因为可能不需要额外的列来存储rowID)。

上面的

@ tilley31显示了如何搜索表中特定行的一个很好的示例。如果主键是复合的;

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

答案 2 :(得分:0)

ROWID是一个伪列,它返回行的地址并且通常是唯一的,例外情况是在同一个集群中存储多个表,然后这些表行可以共享同一个rowid。 oracle隐式地将ROWID赋予行。

主键唯一标识表级别的行,并由创建表的用户创建。

获取行的ROWID

SELECT ROWID,FIELDNAME FROM ABC;

获取表格的主要密钥

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

答案 3 :(得分:0)

我猜你有意在查询中动态选择table和where子句(?) 如果这是你想要做的,那么答案是否定的。仅通过查询不可能。你可以通过pl / sql实现它。如果您必须将此作为查询,请考虑使用下面的表函数 -

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

点击此链接:https://oracle-base.com/articles/misc/pipelined-table-functions

同样,这需要您预设输出列(COLUMN1,COLUMN2等)。您将无法从表中选择确切的列名称。

总的来说,这将是混乱的。

相关问题