Pelajari cara menggunakan perintah SQL UPDATE untuk memperbarui rekaman dalam tabel database.
Sebagai pengembang, Anda harus merasa nyaman bekerja dengan database relasional. SQL (atau Structured Query Language) adalah bahasa ramah pemula yang intuitif untuk dipelajari dan memiliki sintaks yang sederhana. SQL memungkinkan Anda membuat objek database dan mengkueri tabel database relasional.
Anda dapat menjalankan kueri SQL untuk membuat, membaca, memperbarui, dan menghapus catatan dalam tabel database. Anda mungkin sudah tidak asing lagi bahwa operasi ini secara kolektif disebut operasi CRUD.
Untuk memperbarui record yang disimpan dalam tabel database, Anda dapat menjalankan perintah UPDATE di SQL.
Dalam tutorial ini, Anda akan belajar:
- Sintaks perintah UPDATE
- Cara memperbarui rekaman berdasarkan kondisi tertentu atau beberapa kondisi yang dirangkai bersama menggunakan operator logika
- Peringatan umum yang harus diperhatikan saat menjalankan perintah SQL UPDATE
Daftar isi
Sintaks Perintah SQL UPDATE
Sintaks dari perintah SQL UPDATE adalah:
UPDATE table_name SET column = new_value WHERE condition;
Kueri di atas memperbarui kolom untuk semua rekaman yang kondisinya benar.
Untuk memperbarui banyak kolom (atau bidang), gunakan perintah SQL UPDATE seperti:
UPDATE table_name SET column_1 = new_value_1, column_2 = new_value_2, ..., column_k = new_value_k WHERE condition;
Ingat bahwa dalam database relasional:
- Tabel mewakili entitas.
- Baris-baris tabel adalah catatan dan mewakili turunan dari entitas.
- Kolom juga disebut bidang atau atribut. Dalam tutorial ini, kita akan menggunakan kolom dan bidang secara bergantian.
Contoh Penggunaan Perintah SQL UPDATE
Sekarang mari kita ambil beberapa contoh.
Prasyarat
Sebelum Anda memulai pengkodean:
- Tutorial ini menggunakan SQLite. Jadi, Anda harus memiliki SQLite dan Peramban Basis Data SQLite (disarankan) untuk ikut kode. Perhatikan bahwa Anda juga dapat menggunakan MySQL atau PostgreSQL.
- Jika Anda ingin mereplikasi contoh, Anda memerlukan Python dan Paket pemalsuan Python demikian juga.
Membuat Tabel Database dengan Catatan
Jika Anda ingin membuat kode untuk tutorial ini, Anda dapat menjalankan cuplikan kode berikut untuk membuat dan menghubungkan ke database pelanggan customer_db.db. Perhatikan bahwa kami menggunakan perpustakaan Faker Python untuk menghasilkan data sintetis untuk dimasukkan ke dalam tabel pelanggan:
# main.py import sqlite3 from faker import Faker import random # connect to the db conn = sqlite3.connect('customer_db.db') cur = conn.cur() # create a database table cur.execute('''CREATE TABLE customers ( customerID INTEGER PRIMARY KEY, name TEXT, city TEXT, email TEXT, num_orders INTEGER, discount INTEGER DEFAULT 2)''') # create a Faker object fake = Faker() Faker.seed(42) for _ in range(15): name = fake.name() city = fake.city() d = fake.domain_name() email = f"{name[:2]}.{city[:2]}@{d}" num_orders = random.choice(range(200)) db_cursor.execute('INSERT INTO customers (name, city, email, num_orders) VALUES (?,?,?,?)', (name,city,email,num_orders)) # commit the transaction conn.commit() cur.close() conn.close()
š Agar kode ini berfungsi tanpa kesalahan, pastikan Anda memiliki Python 3.7 (atau versi yang lebih baru) dan Pemalsu diinstal di lingkungan pengembangan Anda. Anda dapat menginstal paket Faker Python menggunakan pip:
pip install faker
Jika Anda sudah memiliki database yang bisa Anda sambungkan dan tabel database yang bisa Anda kueri, Anda juga bisa menggunakannya sesuai pilihan.
Menjalankan Kueri SQL Pertama Kita
Tabel pelanggan memiliki bidang-bidang berikut:
- customerID: CustomerID adalah kunci utama yang membantu kami mengidentifikasi catatan secara unik dalam tabel database.
- nama: Nama pelanggan
- kota: Kota tempat mereka berada.
- email: alamat email mereka.
- num_orders: Jumlah pesanan yang telah mereka lakukan.
- diskon: Persentase diskon, bilangan bulat dengan nilai default 2. Karena bidang diskon memiliki nilai default, kita tidak perlu memasukkan nilai saat mengisi tabel database.
š Anda dapat menjalankan kueri dan melihat hasilnya menggunakan klien baris perintah SQLite. Atau Anda dapat menggunakan browser basis data SQLite.
Saya akan mempresentasikan output dari SQLite DB Browser karena mudah untuk ditafsirkan.
Jalankan kueri berikut untuk mendapatkan semua rekaman di tabel pelanggan:
SELECT * FROM customers;
Dalam praktiknya, Anda harus menghindari penggunaan SELECT * kecuali jika diperlukan. Tapi untuk contoh ini, kita akan menggunakannya karena kita hanya memiliki 15 record dan tidak banyak field.
Memperbarui Catatan Berdasarkan Kondisi Tunggal
Sekarang kita tahu seperti apa tabel kita, mari jalankan beberapa kueri UPDATE untuk memperbarui catatan berdasarkan kondisi yang diperlukan.
š Catatan: Setelah menjalankan pernyataan UPDATE, kami akan menjalankan SELECT * FROM pelanggan untuk melihat catatan yang diperbarui.
Memperbarui Bidang Tunggal
Pertama, mari perbarui kolom kota pada catatan dengan customerID=7:
UPDATE customers SET city='Codeshire' WHERE customerID=7;
Mari pilih semua kolom dan catatan dari tabel pelanggan:
SELECT * FROM customers;
Kami melihat bidang kota Danielle Ford (customerID=7) telah diperbarui.
Memperbarui Beberapa Bidang
Pada contoh sebelumnya, kita hanya memperbarui satu bidang, yaitu kota catatan yang sesuai dengan ID pelanggan 7. Namun kita juga dapat memperbarui beberapa bidang menggunakan sintaks yang telah kita pelajari.
Di sini kami memperbarui kota dan kolom email yang sesuai dengan ID pelanggan 1:
UPDATE customers SET city='East Carlisle',email="[emailĀ protected]" WHERE customerID=1;
Selanjutnya, kami menjalankan:
SELECT * FROM customers;
Dan inilah hasilnya:
Memperbarui Beberapa Catatan
Karena kami menggunakan customerID yang merupakan kunci utama yang secara unik mengidentifikasi catatan pelanggan, kueri yang telah kami jalankan sejauh ini hanya memperbarui salah satu catatan.
Namun, jika kondisinya benar untuk lebih dari satu record dalam tabel, maka menjalankan perintah pembaruan SQL akan memperbarui semua record yang sesuai.
Ambil kueri ini misalnya:
UPDATE customers SET discount=10 WHERE num_orders > 170;
Sekarang jalankan kueri ini:
SELECT * FROM customers;
Inilah hasilnya:
Menjalankan perintah pembaruan SQL di atas mengubah tiga catatan. Mereka semua memiliki num_orders lebih besar dari 170 dan sekarang memiliki nilai diskon 10.
Memperbarui Rekaman Berdasarkan Beberapa Kondisi
Sejauh ini klausa WHERE memiliki kondisi sederhana, tetapi kriteria pemfilteran biasanya memiliki beberapa kondisi yang dirangkai bersama oleh operator logika.
Untuk memahami ini, mari kita setel diskon menjadi 5 berdasarkan dua syarat:
- kota SEPERTI ‘Baru%’: kondisi ini memeriksa dan menyertakan rekaman tersebut di mana bidang kota dimulai dengan Baru, dan
- num_orders > 100 filter berdasarkan jumlah pesanan untuk menyertakan hanya catatan yang jumlah pesanannya lebih besar dari 100.
Pernyataan UPDATE terlihat seperti ini:
UPDATE customers SET DISCOUNT=5 WHERE city LIKE 'New%' AND num_orders>100;
Perhatikan bahwa kita sekarang memiliki dua kondisi dalam klausa WHEREādirangkai bersama oleh operator logika AND. Dan hanya catatan yang kedua kondisinya benar yang diperbarui.
Selanjutnya jalankan kueri ini dan amati hasilnya:
SELECT * FROM customers;
Seperti yang terlihat pada keluaran, bidang diskon untuk catatan yang kedua kondisi di atas berlaku diperbarui:
Peringatan Umum Saat Menggunakan Perintah SQL UPDATE
Dalam semua pernyataan UPDATE yang dijalankan sejauh ini, kami menyertakan klausa WHERE.
Misalnya, Anda ingin memperbarui diskon menjadi 25 untuk pelanggan tertentu. Dan dalam kueri pembaruan Anda, Anda lupa menyertakan klausa WHERE dengan customerID untuk memfilter:
UPDATE customers SET DISCOUNT=25;
Sekarang jalankan:
SELECT * FROM customers;
Anda akan melihat bahwa semua catatan dalam tabel diperbarui. Ini mungkin bukan perilaku yang Anda inginkan.
ā Jadi, ingatlah untuk menyertakan klausa WHERE saat Anda ingin memperbarui subkumpulan rekaman berdasarkan suatu kondisi. Jika Anda ingin memperbarui bidang tertentu untuk semua rekaman, Anda dapat menghilangkan klausa WHERE.
Dalam contoh ini, katakanlah Anda akan mengadakan obral Black Friday, dan Anda ingin menawarkan diskon sebesar 25% kepada semua pelanggan Anda. Kemudian menjalankan kueri di atas akan masuk akal.
Kesimpulan
Berikut ringkasan dari apa yang telah Anda pelajari:
- Saat Anda ingin memperbarui catatan dalam tabel database, Anda bisa menggunakan perintah SQL UPDATE.
- Pernyataan SQL UPDATE biasanya menyertakan klausa WHERE dengan kondisi yang menentukan subset record (baris tabel) yang akan diperbarui.
- Menghilangkan klausa WHERE dalam pernyataan UPDATE memperbarui semua record. Jadi, Anda harus berhati-hati untuk tidak menghilangkan klausa WHERE jika memperbarui semua baris tabel bukanlah perilaku yang diinginkan.
Selanjutnya, lihat lembar contekan SQL ini untuk referensi cepat.