問題:
別のテーブルからコピーしたデータを使用して新しいテーブルを作成します。
例:
データベースには、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を使用する データベース内の既存のテーブルに基づいて新しいテーブルを作成する簡単な方法です。