Masalah:
Anda ingin membuat tabel baru dalam database dengan data yang ditentukan oleh kueri SQL.
Contoh:
Kami ingin membuat tabel gamer
berdasarkan kueri SQL. Dalam kueri ini, kami memilih data dari tabel lain bernama championship
disajikan di bawah ini.
id | gamer | skor | tanggal_kejuaraan |
---|---|---|---|
1 | alice | 14 | 10-08-2020 |
2 | pengawas | 10 | 28-09-2020 |
3 | pria bahagia | 0 | 10-08-2020 |
4 | lukas | 6 | 10-08-2020 |
5 | oli | 12 | 10-08-2020 |
6 | penggemar hebat | 7 | 12-09-2020 |
Di database, mari buat tabel baru bernama gamer
yang akan menyimpan data di semua kolom yang ditentukan dalam tabel championship
(id
, gamer
, score
, dan championship_date
).
Solusi 1:
CREATE TABLE gamer AS SELECT * FROM championship;
Diskusi:
Jika Anda ingin membuat tabel baru, langkah pertama adalah menggunakan CREATE TABLE
klausa dan nama tabel baru (dalam contoh kami:gamer
). Kemudian, gunakan AS
kata kunci dan berikan SELECT
pernyataan yang memilih data untuk tabel baru. Dalam contoh kami, kami memilih semua kolom dari tabel championship
dengan menggunakan tanda bintang (*). Kumpulan hasil menampilkan semua rekor dalam tabel championship
.
Namun, jika Anda ingin membuat tabel dengan hanya subset record, Anda dapat menentukan kueri yang dipilih seperti pada contoh di bawah ini.
Solusi 2:
CREATE TABLE gamer AS SELECT gamer, score, championship_date FROM championship WHERE championship_date <= 2020-08-10;
Berikut adalah kumpulan hasil:
gamer | skor | tanggal_kejuaraan |
---|---|---|
alice | 14 | 10-08-2020 |
pria bahagia | 0 | 10-08-2020 |
lukas | 6 | 10-08-2020 |
oli | 12 | 10-08-2020 |
SELECT
kueri hanya mengambil catatan dengan championship_date
tanggal sama dengan atau lebih lama dari 10-08-2020 (WHERE championship_date <= 2020-08-10
). Tabel baru menyimpan lebih sedikit kolom daripada contoh sebelumnya (SELECT gamer, score, championship_date
) tanpa kolom id
.
Solusi serupa untuk masalah ini adalah dengan menggunakan SELECT INTO
klausa untuk membuat tabel baru dan menyalin data dari tabel lain. Perhatikan kodenya:
Solusi 3:
SELECT gamer, score, championship_date INTO gamer FROM championship WHERE championship_date <= 2020-08-10;
Tabel yang dihasilkan adalah sama. Perhatikan bahwa konstruksi ini tidak ada dalam standar SQL. Dalam perintah SQL ini, pertama kita tulis SELECT
, lalu daftar kolom, selanjutnya kata kunci INTO
, dan terakhir nama tabel baru yang ingin kita buat. Selanjutnya, Anda dapat menambahkan WHERE
dan klausa SQL lainnya seperti GROUP BY
atau HAVING
untuk memfilter record untuk tabel baru.