0

是否可以编写 SQL 查询来检索名为“roxy”的动物的人的姓名?如果是这样,请告诉我如何编写查询。我不了解 Oracle,所以我对这个外键的引用感到困惑。

另外,我们不应该为 person_id 添加索引,否则它会在以后进行联合时产生速度问题?如何编写查询以添加该索引?还是参考也创建了索引?

  create table person (
    person_id   integer,
    name        varchar(50)
  );

  create table animal(
    owner_id    integer,
    name        varchar(50),
    foreign key (owner_id) references person (person_id)
  );
4

2 回答 2

2

Oracle 使用与 SQL Server 相同的连接语法。

select * from person p inner join animal a on p.person_id = a.owner_id

此外,您应该在表上设置主键,并在它们上放置索引。

当您希望从“左”表中获取所有元素时使用左连接,即使它们在连接表上没有匹配项。

在 oracle 上,您将创建一个主键,如下所示:

CREATE UNIQUE INDEX XPKperson ON person(person_id)
于 2013-10-10T18:42:34.290 回答
1

您可以使用以下查询,

SELECT p.name
FROM   person p,
       animal a
WHERE  p.person_id = a.owner_id
AND    a.name = 'roxy';

您应该在表上创建一个主键,因为它唯一地定义了一条记录。

创建索引的语法,

CREATE INDEX index_name ON TABLE_NAME(column_name);

请参阅此链接以了解有关创建索引的更多信息。

于 2013-10-10T18:51:40.540 回答