コンポジット・プライマリ・キーの一部のみを使用してoracleのデータ・レコードを取得できますか?Oracleプライマリ・キー
例PK =のCol1 + Col2に+ COL3
SELECT *
FROM table
WHERE Col1 = 'SomeDate'
コンポジット・プライマリ・キーの一部のみを使用してoracleのデータ・レコードを取得できますか?Oracleプライマリ・キー
例PK =のCol1 + Col2に+ COL3
SELECT *
FROM table
WHERE Col1 = 'SomeDate'
あなたは、そのクエリを提起することができますが、その列に一意制約がない限り、それはあなたの単一のレコードを与えないかもしれません。あなたがそうしたとしても、複合主キーを持つ理由はわかりません。
確かに、複合主キーであるため、クエリは一意または空の結果を返すことは保証されません。 Col1 + Col2 + Col3の1つのユニークな組み合わせであることが保証されています。 Jodyが1つの列に追加の一意制約を指定していない限り、同じCol1を持つ多くの列が存在する可能性があります。
はい、できます。それは完全に正常です。あなたは多対多のテーブルでこれを常に行います。
ここには複合主キーが含まれています。いくつかのテストデータと
create table student_grade(
course_id varchar2(6) not null
,student_id varchar2(12) not null
,grade number not null
,primary key(student_id, course_id)
);
...:キーの部分に選択
COURSE STUDENT_ID GRADE
------ ------------ ----------
DB101 Ronnis 70
DB102 Ronnis 70
DB103 Ronnis 70
DB101 user627093 70
は完全に正常になります。
しかしselect *
from student_grade
where course_id = 'DB101';
COURSE STUDENT_ID GRADE
------ ------------ ----------
DB101 Ronnis 70
DB101 user627093 70
は、あなたが決しては、単一のレコードを返すために、キーのサブセットのクエリに依拠することができることに注意してください。遅かれ早かれそのクエリは複数の行を返し、それに依存するロジックはすべて破棄されます。
複合主キーがあることは意味があります。コンポジットキーの一部でクエリを実行したいと思って、私は予想される結果が不思議です。 –
あなたの洞察に感謝します。私はあなた方全員に同意する傾向があります。 – user627093