sql >> データベース >  >> RDS >> Database

SQLで別のテーブルから1つのテーブルを作成する方法

    問題:

    別のテーブルからコピーしたデータを使用して新しいテーブルを作成します。

    例:

    データベースには、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を使用する データベース内の既存のテーブルに基づいて新しいテーブルを作成する簡単な方法です。


    1. SQLServerでサポートされているバージョンマトリックス

    2. Androidアプリのリリース後にSQLiteデータベースに新しい列を追加するにはどうすればよいですか?

    3. リモートマシンでダンプを復元する

    4. コマンドラインからMySQLデータベース、ユーザー、およびテーブルを管理する方法