ここでは、基本的な関係代数演算子について言及しています。
それを見ると、プロジェクトでできることはすべてselectでできます。
私が見逃した違いや特定のニュアンスがあるかどうかはわかりません。
選択操作:この操作は、predicate
と呼ばれる特定のロジックを指定するテーブル(リレーション)から行を選択するために使用されます。 。述語は、ユーザーが選択した行を選択するためのユーザー定義の条件です。
プロジェクトの操作:ユーザーがテーブルのすべての属性(リレーション)を選択するのではなく、いくつかの属性の値を選択することに関心がある場合は、 PROJECT
操作に進みます。
詳細を参照してください: 関係代数とその演算
[〜#〜] project [〜#〜]は列を削除しますが、[〜#〜] select [〜#〜]は行を削除します。
リレーショナル代数では、「選択」と「投影」は異なる操作ですが、SQL SELECTはこれらの操作を単一のステートメントに結合します。
Selectは、 'predicate'セクション(WHERE句)の条件が真であるリレーション(テーブル)のタプル(行)を取得します。
プロジェクトは、指定された属性(列)を取得します。
次のSQL SELECTクエリ:
select field1,field2 from table1 where field1 = 'Value';
関係代数の射影演算と選択演算の両方の組み合わせです。
プロジェクトは声明ではありません。これは、選択ステートメントの機能です。 Selectステートメントには3つの機能があります。それらは、選択、投影、結合です。 Selection-itは、指定されたクエリで満たされた行を取得します。 Projection-itは、指定されたクエリで満たされる列を選択します。 Join-itは2つ以上のテーブルを結合します
Project
はテーブルの列に作用し、Select
は行に作用します。一方、Project
は、すべての列データを選択するのではなく、特定のプロパティを持つ列を選択するために使用されます
選択操作は、選択条件を満たすリレーションからタプルのサブセットを選択するために使用されます。選択操作は、条件を満たすタプルを除外します。選択操作は、タプルの2つのセットへの水平分割として視覚化できます。タプルは条件を選択しないで、選択条件を満たしたリレーションから属性を選択するために使用されるシグマ(R)射影演算子を使用します。条件を満たしたタプルのみを除外します。投影操作は、2つの部分に垂直に分割されるように視覚化できます-条件が満たされたものが選択されます他の破棄discarded(R)属性リストは属性の数です
関係代数のプロジェクト演算子(π)とSQLのSELECTキーワードの違いは、結果のテーブル/セットに同じタプルが複数ある場合、πはそれらの1つだけを返し、SQL SELECTは返すことです。すべて。
selectは結果テーブルのカーディナリティを変更するだけですが、プロジェクトは関連度とカーディナリティの両方を変更します。
何らかの条件でリレーションから行を抽出を選択し、プロジェクトは何らかの条件付きまたはなしでリレーションから特定の数の属性/列を抽出します。
違いは、プロジェクトが列に影響し、選択が行に影響するリレーショナル代数にあります。ただし、クエリ構文では、selectはWordです。プロジェクトなどのクエリはありません。 usersという名前のテーブルに数十万のレコード(行)があり、テーブルに6つのフィールド(userID、Fname、Lname、age、pword、salary)があると仮定します。機密データ(userID、pword、およびsalary)へのアクセスを制限し、アクセスするデータの量も制限するとします。 mysql maria DBでは、次のようにビューを作成します(Fname、Lnameを選択し、ユーザー制限100から年齢を選択してビューuser1を作成します)。このクエリは選択とプロジェクトの両方です