問題:
SQLクエリで定義されたデータを使用してデータベースに新しいテーブルを作成します。
例:
テーブルgamer
SQLクエリに基づいています。このクエリでは、championship
以下に示します。
id | Championship_date | ||
---|---|---|---|
1 | 14 | 2020-08-10 | |
2 | 10 | 2020-09-28 | |
3 | 0 | 2020-08-10 | |
4 | 6 | 2020-08-10 | |
5 | oli | 12 | 2020-08-10 |
6 | 7 | 2020-09-12 |
データベースに、gamer
これは、テーブルchampionship
(id
、gamer
、score
、およびchampionship_date
)。
ソリューション1:
CREATE TABLE gamer AS SELECT * FROM championship;
ディスカッション:
新しいテーブルを作成する場合、最初のステップはCREATE TABLE
を使用することです。 句と新しいテーブルの名前(この例では、gamer
)。次に、AS
を使用します キーワードを入力し、SELECT
を指定します 新しいテーブルのデータを選択するステートメント。この例では、テーブルchampionship
アスタリスク(*)を使用します。結果セットには、テーブルchampionship
。
ただし、レコードのサブセットのみを含むテーブルを作成する場合は、次の例のように、選択したクエリを指定できます。
ソリューション2:
CREATE TABLE gamer AS SELECT gamer, score, championship_date FROM championship WHERE championship_date <= 2020-08-10;
結果セットは次のとおりです。
Championship_date | ||
---|---|---|
alice | 14 | 2020-08-10 |
ハッピーマン | 0 | 2020-08-10 |
lukas | 6 | 2020-08-10 |
oli | 12 | 2020-08-10 |
SELECT
クエリは、championship_date
のレコードのみを取得します 2020-08-10以上の日付(WHERE championship_date <= 2020-08-10
)。新しいテーブルには、前の例よりも少ない列が格納されます(SELECT gamer, score, championship_date
)列id
なし 。
この問題に対する同様の解決策は、SELECT INTO
を使用することです。 新しいテーブルを作成し、別のテーブルからデータをコピーする句。コードを見てください:
ソリューション3:
SELECT gamer, score, championship_date INTO gamer FROM championship WHERE championship_date <= 2020-08-10;
結果のテーブルは同じです。この構造はSQL標準には存在しないことに注意してください。このSQLコマンドでは、最初にSELECT
と記述します。 、次に列のリスト、次にキーワードINTO
、最後に、作成する新しいテーブルの名前。次に、WHERE
を追加できます およびGROUP BY
などの他のSQL句 またはHAVING
新しいテーブルのレコードをフィルタリングします。