問題:
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 新しいテーブルのレコードをフィルタリングします。