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

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

    問題:

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

    例:

    データベースには、product 次の列にデータがあります:id (主キー)、namecategory 、およびprice

    名前 カテゴリ 価格
    id
    105 バラ 5.70
    108 デスク 家具 120.00
    115 チューリップ 6.50
    123 ひまわり 7.50
    145 ギター 音楽 300.00
    155 9.50
    158 フルート 音楽 156.00

    データベースに、florist 次の列が格納されます:idname 、および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句を使用できます:WHEREGROUP BYHAVING 、など。

    新しいテーブルflorist product テーブル(idnamecategory 、および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を記述します 句の後に列のリストが続きます(この例では、idname 、および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データベース、ユーザー、およびテーブルを管理する方法