0

「roxy」という名前の動物を持つ人物の名前を取得する SQL クエリを作成することは可能ですか? もしそうなら、クエリの書き方を教えてください。私は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 に答える