問題:
別のテーブルからコピーしたデータを使用して新しいテーブルを作成します。
例:
データベースには、product
次の列にデータがあります:id
(主キー)、name
、category
、およびprice
。
id | |||
---|---|---|---|
105 | バラ | 花 | 5.70 |
108 | デスク | 家具 | 120.00 |
115 | チューリップ | 花 | 6.50 |
123 | ひまわり | 花 | 7.50 |
145 | ギター | 音楽 | 300.00 |
155 | 蘭 | 花 | 9.50 |
158 | フルート | 音楽 | 156.00 |
データベースに、florist
次の列が格納されます:id
、name
、およびprice
。これらの列は、テーブルproduct
ただし、花のカテゴリからのみ 。
新しいテーブルを作成していることに注意することが重要です。テーブルflorist
このデータベースには存在しません。
CREATE TABLEASSELECT構造
別のテーブルから新しいテーブルを作成するには、CREATE TABLE AS SELECT
を使用できます。 。この構造は標準SQLです。以下のSQLコードを見てください:
ソリューション1:
CREATE TABLE florist AS SELECT * FROM product WHERE category = ’flower’;
クエリの結果は次のとおりです。
id | |||
---|---|---|---|
105 | バラ | 花 | 5.70 |
115 | チューリップ | 花 | 6.50 |
123 | ひまわり | 花 | 7.50 |
155 | 蘭 | 花 | 9.50 |
CREATE TABLE
の使用 、別のテーブルからデータをコピーして、新しいテーブルを作成できます。この場合、最初にCREATE TABLE
を使用します 新しいテーブルの名前を持つ句(この例では、florist
)、次にAS
と記述します およびSELECT
列の名前を使用してクエリを実行します(この例では、*
)、次にFROM
と記述します。 その後に、データが収集されるテーブルの名前が続きます(この例ではproduct
)。次に、任意のSQL句を使用できます:WHERE
、GROUP BY
、HAVING
、など。
新しいテーブルflorist
product
テーブル(id
、name
、category
、およびprice
)。行数は、WHERE句を使用して制限され、レコードをフィルタリングして、カテゴリflowerからのみデータを取得します。 。
SELECTINTO構造
別の解決策は、SELECT INTO
を使用することです 。この構文は非標準のSQLですが、多くの一般的なデータベースでサポートされています。
ソリューション2:
SELECT id, name, price INTO florist FROM product WHERE category=’flower’;
結果は次のとおりです。
id | ||
---|---|---|
105 | バラ | 5.70 |
115 | チューリップ | 6.50 |
123 | ひまわり | 7.50 |
155 | 蘭 | 9.50 |
ディスカッション:
別のテーブルの構造とデータに基づいて新しいテーブルを作成する場合は、SELECT INTO
を使用できます。 句。まず、SELECT
を記述します 句の後に列のリストが続きます(この例では、id
、name
、およびprice
)既存のテーブルから(この例ではproduct
。
テーブルproduct
。関心のある列のみを選択しました。
次に、キーワードINTO
を使用します 作成する新しいテーブルの名前を使用します(この例では、florist
)。次に、既存のテーブルの名前(この例ではproduct
。
テーブルからフィルタリングされた行を選択する場合は、WHERE
を使用します 句。 WHERE
の後 、データをフィルタリングするための条件を記述します(この例では、WHERE category=’flower’
。
この例では、新しいテーブルflorist
テーブルproduct
(違いは列のカテゴリです)。この新しいテーブルの行数も少なくなり、カテゴリがflowerの行のみになります。 。
もちろん、他のテーブルのすべての列を使用してテーブルを作成する場合は、*
を使用できます。 SELECT
の後に列をリストする代わりに 。以下の例を参照してください:
ソリューション2:
SELECT * INTO florist FROM product WHERE category=’flower’;
結果は次のとおりです。
id | |||
---|---|---|---|
105 | バラ | 花 | 5.70 |
115 | チューリップ | 花 | 6.50 |
123 | ひまわり | 花 | 7.50 |
155 | 蘭 | 花 | 9.50 |
SELECT INTO
を使用する データベース内の既存のテーブルに基づいて新しいテーブルを作成する簡単な方法です。