Panduan Lengkap untuk "Insert Into Select" di MySQL untuk Pemula

Hai teman-teman, para ahli basis data masa depan! Hari ini, kita akan memulai perjalanan menarik ke dunia MySQL, khususnya fokus pada pernyataan "Insert Into Select" yang kuat. Jangan khawatir jika Anda baru belajar pemrograman – saya akan menjadi panduan temananda, menjelaskan segala sesuatu secara langkah demi langkah. Jadi, ambil secangkir kopi, dan mari kita masuk ke dalamnya!

MySQL - Insert Into Select

Pernyataan MySQL Insert Into Select

Bayangkan Anda sedang mengatur rak bukunya. Anda punya seumpam buku baru ( mari kita sebut ini sebagai data sumber), dan Anda ingin menambahkannya ke rak yang sudah diatur (rak target kita). Itu sebenarnya apa yang dilakukan pernyataan "Insert Into Select" di MySQL – itu memungkinkan kita untuk menyalin data dari satu tabel dan memasukkannya ke tabel lain.

Penyintaks dasar tampak seperti ini:

INSERT INTO target_table (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM source_table
WHERE condition;

Bongkarlah ini:

  • INSERT INTO target_table: Ini adalah tempat kita akan memasukkan data baru.
  • (column1, column2, ...): Ini adalah kolom di tabel target kita yang akan kita isi.
  • SELECT ...: Ini adalah tempat kita mengambil data.
  • FROM source_table: Ini adalah tabel yang kita salin.
  • WHERE condition: Ini opsional, tapi ia memungkinkan kita untuk menyaring apa yang kita salin.

Memasukkan Data Dari Satu Tabel ke Tabel Lain

Sekarang, mari kita meluangkan tangan dengan beberapa kode nyata! Misal kita punya dua tabel: old_books dan new_arrivals. Kita ingin memindahkan semua buku fiksi fantasi dari old_books ke new_arrivals.

INSERT INTO new_arrivals (title, author, genre)
SELECT title, author, genre
FROM old_books
WHERE genre = 'Fantasy';

Dalam contoh ini:

  • Kita memasukkan ke new_arrivals, menentukan kolom yang akan kita isi.
  • Kita memilih kolom yang sama dari old_books.
  • Kita hanya memilih buku-buku dimana genre nya 'Fantasy'.

Query ini akan menyalin semua buku fiksi fantasi dari old_books ke new_arrivals. Itu seperti secara magis menteleportkan semua buku fiksi fantasi Anda ke rak baru!

Memasukkan Baris dengan LIMIT

kadang-kadang, kita tidak ingin memindahkan semua sekaligus. Mungkin kita sedang mencoba hal-hal, atau kita hanya punya ruang untuk beberapa buku. Itu di mana LIMIT sangat berguna.

INSERT INTO bestsellers (title, author, sales)
SELECT title, author, sales
FROM all_books
WHERE sales > 1000000
ORDER BY sales DESC
LIMIT 10;

Query ini:

  • Memasukkan ke tabel bestsellers.
  • Memilih dari all_books dimana penjualan lebih dari satu juta.
  • Mengurutkan mereka menurut penjualan dalam urutan turun.
  • Hanya mengambil 10 teratas.

Itu seperti memilih keju buatan – hanya 10 penjualan terbaik yang mencapai rak khusus kita!

Memasukkan Semua Kolom Dari Satu Tabel ke Tabel Lain

kadang-kadang, kita ingin menyalin segala sesuatu – setiap detail. Kita juga bisa melakukan itu! mari kita katakan kita sedang mengarsipkan seluruh data penjualan tahun 2022:

INSERT INTO sales_archive_2022
SELECT *
FROM current_sales
WHERE YEAR(sale_date) = 2022;

Apa yang terjadi adalah:

  • Kita tidak menentukan kolom dalam bagian INSERT INTO.
  • Kita menggunakan SELECT * untuk memilih semua kolom.
  • Kita menyaring hanya untuk mencakup penjualan tahun 2022.

Itu seperti mengambil snapshot dari seluruh rak buku Anda tahun 2022 dan merekreatinya tepat di lokasi baru.

INSERT INTO SELECT Menggunakan Program Klien

Sekarang, mari kita bicarakan bagaimana kita bisa melakukan ini di luar MySQL, menggunakan program klien. Saya akan memberikan contoh menggunakan Python, yang adalah bahasa populer untuk operasi basis data.

import mysql.connector

# Menghubungkan ke basis data
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="yourdatabase"
)

mycursor = mydb.cursor()

# Query INSERT INTO SELECT kita
sql = """
INSERT INTO new_arrivals (title, author, genre)
SELECT title, author, genre
FROM old_books
WHERE genre = 'Fantasy'
"""

# Menjalankan query
mycursor.execute(sql)

# Menyimpan perubahan
mydb.commit()

print(mycursor.rowcount, "rekord dimasukkan.")

Skrip ini:

  1. Menghubungkan ke basis data MySQL Anda.
  2. Membuat objek kursor untuk berinteraksi dengan basis data.
  3. Menentukan query INSERT INTO SELECT.
  4. Menjalankan query.
  5. Menyimpan perubahan (sangat penting!).
  6. Menampilkan berapa banyak rekord yang dimasukkan.

Itu seperti memiliki asisten robot yang dapat mengatur rak bukunya untuk Anda!

Kesimpulan

Dan itu adalah, teman-teman! Kita telah berpergian melalui negeri "Insert Into Select" di MySQL. Dari konsep dasar hingga aplikasi praktis, kita telah meliput semua. Ingat, latihan membuat sempurna, jadi jangan khawatir untuk mencoba query ini.

Berikut adalah tabel referensi ringkas dari metode yang kita diskusikan:

Metode Deskripsi Contoh
Basic Insert Into Select Menyalin data dari satu tabel ke tabel lain INSERT INTO target SELECT * FROM source
Memasukkan Kolom tertentu Menyalin hanya beberapa kolom INSERT INTO target (col1, col2) SELECT col1, col2 FROM source
Memasukkan dengan Kondisi Menyalin data yang memenuhi syarat tertentu INSERT INTO target SELECT * FROM source WHERE condition
Memasukkan dengan LIMIT Menyalin jumlah baris terbatas INSERT INTO target SELECT * FROM source LIMIT 10
Memasukkan Semua Kolom Menyalin semua kolom tanpa menentukan INSERT INTO target SELECT * FROM source
Menggunakan Program Klien Menjalankan Insert Into Select dari luar MySQL Lihat contoh Python di atas

Selamat mencari dan mayarak Anda selalu teratur dan efisien!

Credits: Image by storyset