Setelah pembahasan INSERT dengan beberapa kombinasinya pada artikel sebelumnya, dalam kesempatan ini saya mencoba untuk menjelaskan fungsi UPDATE, dengan tujuan agar rekan-rekan penggemar SQL yang kebetulan mampir di blog saya ini mungkin dapat memanfaatkannya.
Perintah UPDATE yang akan saya terangkan di sini bukan lagi perintah UPDATE standard, tapi sudah dalam tahap lanjutan. Karena akan saya kombinasikan dengan beberapa perintah lain dengan tujuan pengelolaan data lebih cepat dan efisien berdasarkan pengalaman-pengalaman yang sudah saya dapatkan dan mudah-mudahan dapat di kembangkan lebih lanjut.
Seperti yang telah kita ketahui, perintah UPDATE berfungsi untuk mengubah isi data yang ada di table. Perintah dasarnya sebagai berikut :
UPDATE tb_a SET field1 = ‘xxxxx’, field2 = ‘xxxxx’ WHERE keyfield = value
Perintah diatas merupakan perintah UPDATE yang paling mendasar sekali, dan sudah saya bahas pada artikel-artikel saya sebelumnya.
Kasus 1 :
Kita mempunyai 2 (dua) tabel seperti di bawah ini :
tb_salesman
kode_sales | nama_sales | golongan |
---|---|---|
1001 | Budi |
A
|
1002 | Udin |
B
|
1003 | Ifan |
A
|
1004 | Dino |
C
|
1005 | Gito |
B
|
1006 | Danu |
A
|
1007 | Gita |
A
|
tb_transaksi
no_transak | nilai | kode_sales | bonus |
---|---|---|---|
F1001
|
2.000.000
|
1001
|
50.000
|
F1002
|
1.000.000
|
1003
|
50.000
|
F1003
|
3.000.000
|
1002
|
50.000
|
F1004
|
6.000.000
|
1007
|
50.000
|
F1005
|
7.000.000
|
1004
|
50.000
|
F1006
|
3.000.000
|
1005
|
50.000
|
F1007
|
4.000.000
|
1006
|
50.000
|
Dalam contoh ini kita misalkan ada perubahan nilai bonus pada tb_transaksi yang sudah terlanjur diberi nilai 50.000, kita menginkan salesman yang mempunyai golongan A bonusnya diberikan 75.000. Langkah-langkah yang perlu dilakukan :
Langkah I : Cari perintah Query pada tb_salesman yang menyaring untuk golongan A saja.
SELECT* FROM tb_salesman a INNER JOIN tb_transaksi b ON a.kode_sales = b.kode_sales WHERE golongan = ‘A’
Setelah Anda sudah yakin data hasil Query yang dihasilkan sudah benar langkah selanjutnya
Langkah II : adalah merubah data di tb_transaksi pada field bonus dengan nilai 75.000 untuk salesman yang bergolongan A tadi. Perintahnya sebagai berikut ;
UPDATE tb_transaksi SET bonus = 75.000 FROM tb_salesman a INNER JOIN tb_transaksi b ON a.kode_sales = b.kode_sales WHERE golongan = ‘A’
Perintah dari FROM….., tinggal kita Copy Paste saja dari Langkah pertama tadi.
Hasil dari tb_transaksi menjadi :
no_transak | nilai | kode_sales | bonus |
---|---|---|---|
F1001
|
2.000.000
|
1001
|
75.000
|
F1002
|
1.000.000
|
1003
|
75.000
|
F1003
|
3.000.000
|
1002
|
50.000
|
F1004
|
6.000.000
|
1007
|
75.000
|
F1005
|
7.000.000
|
1004
|
50.000
|
F1006
|
3.000.000
|
1005
|
50.000
|
F1007
|
4.000.000
|
1006
|
75.000
|
Contoh 2 :
Kasus berikutnya, seandainya tiba-tiba ada penambahan field ‘golongan’ untuk tb_transaksi pada Contoh 1. Padahal data-data pada transaksi sudah banyak sekali, dan field ‘golongan’ ini harus diisi semua berdasakan data-data yang ada pada tb_sales.
Jadi table tb_transaksi strukturnya berubah menjadi seperti berikut :
no_transak | nilai | kode_sales | bonus | golongan |
---|---|---|---|---|
F1001
|
2.000.000
|
1001
|
75.000
|
|
F1002
|
1.000.000
|
1003
|
75.000
|
|
F1003
|
3.000.000
|
1002
|
50.000
|
|
F1004
|
6.000.000
|
1007
|
75.000
|
|
F1005
|
7.000.000
|
1004
|
50.000
|
|
F1006
|
3.000.000
|
1005
|
50.000
|
|
F1007
|
4.000.000
|
1006
|
75.000
|
Langkah pertama dapat kita lakukan seperti pada contoh pertama, tetapi pada langkah kedua perintahnya seperti berikut :
UPDATE tb_transaksi SET golongan = a.golongan FROM tb_salesman a INNER JOIN tb_transaksi b ON a.kode_sales = b.kode_sales WHERE golongan = ‘A’
maka tabel yang dihasilkan :
no_transak | nilai | kode_sales | bonus | golongan |
---|---|---|---|---|
F1001
|
2.000.000
|
1001
|
75.000
|
A
|
F1002
|
1.000.000
|
1003
|
75.000
|
A
|
F1003
|
3.000.000
|
1002
|
50.000
|
B
|
F1004
|
6.000.000
|
1007
|
75.000
|
A
|
F1005
|
7.000.000
|
1004
|
50.000
|
C
|
F1006
|
3.000.000
|
1005
|
50.000
|
B
|
F1007
|
4.000.000
|
1006
|
75.000
|
A
|
Contoh-contoh di atas merupakan contoh yang saya sederhanakan, walaupun pada kenyataannya kita sering menemukan kasus-kasus yang lebih komplek, karena bisa ber-relasi lebih dari 2 tabel dan bisa berisi ribuan sampai jutaan record, akan tetapi solusinya tidak jauh-jauh dengan cara di atas.
Mudah-mudahan rekan-rekan penggemar SQL mengerti apa yang saya maksudkan dari yang sudah saya jelaskan di atas. Dengan memakai rumusan di atas kerja kita dalam mengelola Database tentu jadi lebih cepat dan menyenangkan.
Selamat mempelajari, berikutnya nanti akan saya lanjutkan berbincang-bincang mengenai DELETE… FROM.
Karena sekarang mata saya sudah ngantuk bye-bye ! see you next time………….
Note : Perintah di atas saya bikin dengan SQL Server.
Artikel lainnya
- Dasar-Dasar SQL 1
- Dasar-Dasar SQL 2
- Dasar-Dasar SQL 3
- Dasar-Dasar SQL 4
- Konsep Himpunan Dalam SQL
- Instalasi MySQL
- Koneksi Delphi ke SQL Server
- Full Join dan Cross Join dalam SQL
- Query Dalam Query
- Perintah EXISTS dalam SQL
- Perbedaan Perintah UNION dan UNION ALL dalam SQL
- Cara Membuat Store Procedure di SQL Server
- Perintah LIKE dalam SQL
- Create Trigger dalam SQL
- Penggunaan Perintah CASE Dalam SQL
- INSERT…… Perintah Lanjutan SQL
- update-from
- Delete….From…
Filed under: SQL, Tips & Tricks, SQL, UPDATE FROM
wah, ini dulu saya belajar SQL pusing sendiri.. hahaha
@arvi : masih dendam ya sama SQL ?
Mantaff sih mas buat nambah ilmu. Tp sepertinya ada yg kurang jelas tuh. Dikit aja ya w kritik, jgn mrh loh … 🙂
disitu => knp tabel sales, transaksi ada a atau b nya sgala sih? Klau awam psti bingung deh 😦
Trus pada contoh yg kedua knp mesti pke where Golongan = ‘A’ ?
Pdhl field itukan ada A atau B.
Hehe, demikian dikit kritikannya mas. Cma sharing doank kok. Gk kurang n gk lebih. Tks atas perhatiannya.
mas pada contoh pertama. b pd (transaksi b) ,a pada (a.kode_sales) , b pada (b.kode_sales) maksudnya apa?
SELECT* FROM tb_salesman a INNER JOIN tb_transaksi b ON a.kode_sales = b.kode_sales WHERE golongan = ‘A’;
UPDATE tb_transaksi SET bonus = 75.000 FROM tb_salesman a INNER JOIN tb_transaksi b ON a.kode_sales = b.kode_sales WHERE golongan = ‘A’
“a” nama alias dari pada tabel tb_salesman dan “b” nama alias dari tabel tb_transaksi.