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.