Masalah:
Anda ingin membuat tabel baru dengan data yang disalin dari tabel lain.
Contoh:
Basis data kami memiliki tabel bernama product
dengan data pada kolom berikut:id
(kunci utama), name
, category
, dan price
.
id | nama | kategori | harga |
---|---|---|---|
105 | mawar | bunga | 5,70 |
108 | meja | mebel | 120.00 |
115 | tulip | bunga | 6,50 |
123 | bunga matahari | bunga | 7,50 |
145 | gitar | musik | 300.00 |
155 | anggrek | bunga | 9,50 |
158 | seruling | musik | 156.00 |
Di database, mari buat tabel baru bernama florist
yang akan menyimpan kolom berikut:id
, name
, dan price
. Kolom ini berasal dari tabel product
tapi hanya dari kategori bunga .
Penting untuk dicatat bahwa kita sedang membuat tabel baru. Tabel florist
tidak ada dalam database ini.
Struktur CREATE TABLE AS SELECT
Untuk membuat tabel baru dari tabel lain, Anda dapat menggunakan CREATE TABLE AS SELECT
. Konstruksi ini adalah SQL standar. Perhatikan kode SQL di bawah ini:
Solusi 1:
CREATE TABLE florist AS SELECT * FROM product WHERE category = ’flower’;
Berikut hasil querynya:
id | nama | kategori | harga |
---|---|---|---|
105 | mawar | bunga | 5,70 |
115 | tulip | bunga | 6,50 |
123 | bunga matahari | bunga | 7,50 |
155 | anggrek | bunga | 9,50 |
Menggunakan CREATE TABLE
, Anda bisa membuat tabel baru dengan menyalin data dari tabel lain. Dalam hal ini, pertama-tama kita menggunakan CREATE TABLE
klausa dengan nama tabel baru (dalam contoh kita:florist
), selanjutnya kita tulis AS
dan SELECT
kueri dengan nama kolom (dalam contoh kami:*
), lalu kita tulis FROM
diikuti dengan nama tabel tempat data dikumpulkan (dalam contoh kami:product
). Kemudian, Anda dapat menggunakan klausa SQL apa pun:WHERE
, GROUP BY
, HAVING
, dll.
Tabel baru florist
akan berisi definisi kolom dari product
tabel (id
, name
, category
, dan price
). Jumlah baris dibatasi dengan menggunakan klausa WHERE, memfilter catatan untuk hanya mengambil data dari kategori bunga .
Struktur SELECT INTO
Solusi lain adalah dengan menggunakan SELECT INTO
. Sintaks ini adalah SQL non-standar, tetapi didukung oleh banyak database populer.
Solusi 2:
SELECT id, name, price INTO florist FROM product WHERE category=’flower’;
Ini hasilnya:
id | nama | harga |
---|---|---|
105 | mawar | 5,70 |
115 | tulip | 6,50 |
123 | bunga matahari | 7,50 |
155 | anggrek | 9,50 |
Diskusi:
Jika Anda ingin membuat tabel baru berdasarkan struktur dan data dari tabel lain, Anda dapat menggunakan SELECT INTO
ayat. Pertama, tulis SELECT
klausa diikuti oleh daftar kolom (dalam contoh kita:id
, name
, dan price
) dari tabel yang ada (dalam contoh kami:product
).
Perhatikan bahwa ada lebih banyak kolom di tabel product
. Kami hanya memilih kolom yang kami minati.
Selanjutnya, gunakan kata kunci INTO
dengan nama tabel baru yang ingin Anda buat (dalam contoh kami:florist
). Kemudian, tulis kata kunci FROM dengan nama tabel yang ada (dalam contoh kita:product
).
Jika Anda ingin memilih baris yang difilter dari tabel, gunakan WHERE
ayat. Setelah WHERE
, tulis ketentuan untuk memfilter data (dalam contoh kami:WHERE category=’flower’
).
Dalam contoh ini, kami membuat tabel baru florist
yang memiliki kolom lebih sedikit dari tabel product
(perbedaannya adalah kategori kolom). Tabel baru ini juga memiliki lebih sedikit baris – hanya baris dengan kategori bunga .
Tentu saja, jika Anda ingin membuat tabel menggunakan semua kolom di tabel lain, Anda dapat menggunakan *
alih-alih mencantumkan kolom setelah SELECT
. Lihat contoh di bawah ini:
Solusi 2:
SELECT * INTO florist FROM product WHERE category=’flower’;
Ini hasilnya:
id | nama | kategori | harga |
---|---|---|---|
105 | mawar | bunga | 5,70 |
115 | tulip | bunga | 6,50 |
123 | bunga matahari | bunga | 7,50 |
155 | anggrek | bunga | 9,50 |
Menggunakan SELECT INTO
adalah cara mudah untuk membuat tabel baru berdasarkan tabel yang ada di database.