Join Table di MySQL

setelah mengisi praktikum basisdata kemarin, saya berjanji untuk membuat materi ini… baiklah ini nih.
saya ambil langsung terjemahan dari MySQL 5.0 reference, biar cepet.. hehe…
post ini menjelaskan tentang
(cross join, inner join, right join, left join, natural join, join using)
yang berlaku di MySQL 5

pada suatu kasus, terdapat tabel sederhana pengguna dengan struktur dan data sebagai berikut
tabel pengguna

CREATE TABLE `pengguna` (
`id_pengguna` int(11) NOT NULL auto_increment,
`nama` varchar(20) NOT NULL,
PRIMARY KEY  (`id_pengguna`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

tabel pengguna_lengkap

CREATE TABLE `pengguna_lengkap` (
`id_pengguna` int(11) NOT NULL,
`alamat` varchar(50) NOT NULL,
`telepon` varchar(15) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

data:

INSERT INTO `pengguna` (`id_pengguna`, `nama`) VALUES
(1, 'khalifavi'),
(2, 'silvershade'),
(3, 'kaelina');
INSERT INTO `pengguna_lengkap` (`id_pengguna`, `alamat`, `telepon`) VALUES
(1, 'cigiringsing', '081910435544'),
(2, 'cijambe', '022 7815913'),
(4, 'tubagus ismail', '022 91724325');

dari data tersebut, dapat kita lihat bahwa pada tabel pengguna, tidak terdapat record dengan id 4, dan begitu pula pada tabel pengguna_lengkap tidak terdapat record dengan id 3.
apabila dilakukan join biasa maka beberapa record tidak akan tampil seperti yang kita mau

SELECT *
FROM pengguna p, pengguna_lengkap pk
WHERE p.id_pengguna = pk.id_pengguna;

hanya akan menampilkan

id_pengguna nama id_pengguna alamat telepon
1 khalifavi 1 cigiringsing 081910435544
2 silvershade 2 cijambe 022 7815913

2 rows in set (0.01 sec)

lalu dimana yang memiliki id_pengguna 3 dan 4?, untuk itulah ada beberapa join khusus…

untuk menampilkan semua yang terdapat di tabel pengguna namun tidak terdapat di tabel pengguna_lengkap kita bisa menggunakan LEFT JOIN

SELECT *
FROM pengguna p LEFT JOIN pengguna_lengkap pk
ON p.id_pengguna = pk.id_pengguna;

maka akan menghasilkan

id_pengguna nama id_pengguna alamat telepon
1 khalifavi 1 cigiringsing 081910435544
2 silvershade 2 cijambe 022 7815913
3 kaelina NULL NULL NULL

3 rows in set (0.01 sec)

pada penggunaan LEFT JOIN ini, record yang ada di kedua tabel atau hanya di tabel kiri akan selalu ditampilkan, dan akan menghasilkan nilai NULL pada tabel di kanan

begitu pula sebaliknya dengan RIGHT JOIN query ini

SELECT *
FROM pengguna p RIGHT JOIN pengguna_lengkap pk
ON p.id_pengguna = pk.id_pengguna;

akan menghasilkan

id_pengguna nama id_pengguna alamat telepon
1 khalifavi 1 cigiringsing 081910435544
2 silvershade 2 cijambe 022 7815913
NULL NULL 4 tubagus ismail 022 91724325

3 rows in set (0.02 sec)

digunakan untuk menampilkan record yang ada di kedua tabel atau hanya terdapat di tabel kanan

Note: penggunaan SELECT * pada LEFT atau RIGHT join akan menampilkan column yang redundansi. jadi?? kita lanjut…kan

namun mari kita bandingkan dengan penggunaan NATURAL JOIN

SELECT *
FROM pengguna p NATURAL JOIN pengguna_lengkap pk;
id_pengguna nama alamat telepon
1 khalifavi cigiringsing 081910435544
2 silvershade cijambe 022 7815913

2 rows in set (0.00 sec)
hey, ini sama dengan query pertama

SELECT *
FROM pengguna p, pengguna_lengkap pk
WHERE p.id_pengguna = pk.id_pengguna;
id_pengguna nama id_pengguna alamat telepon
1 khalifavi 1 cigiringsing 081910435544
2 silvershade 2 cijambe 022 7815913

2 rows in set (0.01 sec)
jadi bisa dikatakan bahwa ini penyederhanaan query pertama, namun menghapus column yang redundansi, hmmm, solusi yang bagus juga…

Note: hasil NATURAL JOIN sama dengan JOIN … USING

SELECT *
FROM pengguna p NATURAL JOIN pengguna_lengkap pk;

akan menghasilkan output yang sama dengan penggunaan JOIN … USING ini

SELECT *
FROM pengguna p JOIN pengguna_lengkap pk USING (id_pengguna);

ok, sekarang kita kombinasikan NATURAL JOIN dengan RIGHT JOIN

SELECT *
FROM pengguna p NATURAL RIGHT JOIN pengguna_lengkap pk;
id_pengguna nama alamat telepon
1 khalifavi cigiringsing 081910435544
2 silvershade cijambe 022 7815913
4 NULL tubagus ismail 022 91724325

3 rows in set (0.00 sec)
hmmm, untuk yang ini silahkan bandingkan sendiri…

dan mari kita coba INNER JOIN

SELECT *
FROM pengguna p INNER JOIN pengguna_lengkap pk
ON p.id_pengguna = pk.id_pengguna;
id_pengguna nama id_pengguna alamat telepon
1 khalifavi 1 cigiringsing 081910435544
2 silvershade 2 cijambe 022 7815913

2 rows in set (0.00 sec)
yang satu ini benar-benar mirip dengan query pertama, dan tanpa perbedaan sama sekali…

Note: di MySQL, INNER JOIN dan CROSS JOIN ini serupa (dapat saling menggantikan). namun di SQL Standar ini tidak serupa, INNER JOIN dapat menggunakan ON, tapi tidak dengan CROSS JOIN.

Semakin Banyak Virus di Komputerku (Poin-poin Serangan Virus di Windows)

Hei Dataku!!!

Hmmm, mungkin itu yang kebanyakan orang katakan setelah terkena virus(di Windows)… OK, malah itu mungkin bukan virus, tetapi worm atau trojan. Pembahasan ini mungkin suatu saat menjadi kurang up-to-date, jadi silahkan ingatkan saya untuk terus memperbaharui artikel ini.

Sejak kemunculan brontok di depan publik, virus-virus (baca: worm) lain bermunculan dengan maksud serupa, tentunya membawa masing-masing misi, dimulai dari politik, iseng, balas dendam, jatuh cinta, bahkan putus cinta. Sudahlah, terserah mau disebut apa, yang pasti proses berjalannya virus tersebut tidak diketahui pengguna, mengganggu jalannya program lain, atau mungkin merusak dokumen kita. Saya juga kurang begitu paham maksud mereka, yang pasti para korban jelas merasa terganggu.

Untuk itu, saya akan coba membahas sedikit tentang ‘lubang’ yang (sering) dipakai untuk Malware menjaga eksistensi dirinya.

Direktori:C:\Documents and Settings\All Users\Start Menu\Programs\Startup\
direktori ini biasa digunakan untuk startup aplikasi sejalan dengan startup windows, file yang aktif bisa berupa executable(shortcut, *.pif, *.exe, *.com, *.bat, *.cmd, dan lain-lain), atau mungkin file dokumen(jika yang disimpan file *.txt, maka akan otomatis membuka dokumen tersebut di notepad)

Direktori:C:\Documents and Settings\Nama_User_Pengguna\Start Menu\Programs\Startup\
direktori ini berguna sama dengan yang diatas, tapi khusus untuk pengguna yang bersangkutan.

Registry:\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\
disini terdapat daftar aplikasi yang dijalankan saat windows start-up (untuk semua pengguna)

Registry:\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\
sama dengan pada local_machine, tapi yang ini hanya berlaku pada pengguna yang bersangkutan.

Registry:\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\ ::Shell(String)
ini digunakan untuk menampilkan custom interface (tampilan windows), yang isi default-nya adalah “explorer.exe”, tapi jika sudah ditambah dengan data yang lain, misalnya “explorer.exe apacoba.exe”, kemungkinan “apacoba.exe” adalah merupakan sebuah virus.., waspadalah!!. Ada aplikasi custom interface yang benar-benar menggantikan peran explorer, yaitu talisman, program ini mengubah semua tampilan di desktop anda. jadi jangan khawatir apabila setelah talisman anda uninstall, desktop anda menjadi kosong, anda tinggal menjalankan task manager(ctrl+alt+del//ctrl+shit+esc), dan jalankan regedit, dan perbaiki key tersebut kembali menjadi “explorer.exe”.

Services: Hey, yang ini agak sulit dibahas, biar saya simpan dulu..
sekarang, virus-virus mulai meng-infeksikan dirinya ke dalam services windows, dengan interval sekian dia berjalan secara otomatis dan akan muncul setelah kita hapus,,, tapi tenang, pembahasannya biar saya simpan untuk artikel berikutnya…

Lain-lain:
selain dari lubang-lubang diatas, biasanya virus menamakan dirinya mirip dengan services windows yang berjalan, misalnya svchost.exe, dan atau disimpan di direktori penting windows semacam “C:\windows” atau di “C:\program files”, jadi kita harus teliti

Catatan:
tadi sore saya membantu seorang teteh yang komputernya terserang trojan IRC *saya lupa namanya, tapi katanya mau balas dendam yang berhubungan dengan IRC trojan lain, kalau tidak salah IRCbot, apalah*, jadi teringat saat saya masih melakukan studi tentang virus(koleksi, remake!)

google gears tidak akan mempercepat koneksi sampai…?

beberapa waktu lalu saya dapat saran dari seorang kawan, “paké google gears fah, biar koneksinya jadi cepet”, karena saya penasaran, langsung saja saya install aplikasi gratis dari google tersebut, selama ini memang google tidak pernah mengecewakan saya.

Google Gears adalah software dari google yang di-klaim dapat meningkatkan performa web application, khususnya yang menggunakan javascript *dikutip dari webnya*

namun setelah beberapa hari, ternyata saya sadari bahwa gears tidak mempercepat koneksi, khususnya ke wordpress saya, ya disini,, https://khalifavi.wordpress.com ,

saya teringat pada halaman dashboard admin wordpress, terdapat kata “Turbo” yang bisa kita gunakan untuk mengaktifkan google gears ini,, dan terbuktilah, setelah saya klik, muncul beberapa konfirmasi yang menyatakan bahwa gears ini tidak baik apabila digunakan di komputer umum, karena penasaran, saya lewati saja, Gunakan Gears!!

hingga tampil

konfirmasi menunggu file untuk disesuaikan, mungkin sedang mendownload file yang diperlukan...
konfirmasi menunggu file untuk disesuaikan, mungkin sedang mendownload file yang diperlukan...

setelah proses ini selesai, barulah terasa peningkatan performa pada wordpress…

Google Gears yang saya tahu dapat digunakan pada beberapa alamat web, diantaranya

1. WordPress

2. Apa lagi ya,, saya lupa, tapi saya pernah melihatnya di situs lain 😀

%d blogger menyukai ini: