Join MultiplyOpen a Free ShopSign InHelp
MultiplyLogo
SEARCH

Pocoyo's Site [wHitE AnGeL]

HomeClock & BannerJul 16, 2007


Stop Bugil


Stop Bugil


Blog EntryJun 3, '09 3:35 AM
for everyone
Prita Mulyasari - suaraPembaca

akarta - Jangan sampai kejadian saya ini akan menimpa ke nyawa manusia lainnya. Terutama anak-anak, lansia, dan bayi. Bila anda berobat berhati-hatilah dengan kemewahan rumah sakit (RS) dan title international karena semakin mewah RS dan semakin pintar dokter maka semakin sering uji coba pasien, penjualan obat, dan suntikan.

Saya tidak mengatakan semua RS international seperti ini tapi saya mengalami kejadian ini di RS Omni International. Tepatnya tanggal 7 Agustus 2008 jam 20.30 WIB. Saya dengan kondisi panas tinggi dan pusing kepala datang ke RS OMNI Internasional dengan percaya bahwa RS tersebut berstandard International, yang tentunya pasti mempunyai ahli kedokteran dan manajemen yang bagus.

Saya diminta ke UGD dan mulai diperiksa suhu badan saya dan hasilnya 39 derajat. Setelah itu dilakukan pemeriksaan darah dan hasilnya adalah thrombosit saya 27.000 dengan kondisi normalnya adalah 200.000. Saya diinformasikan dan ditangani oleh dr Indah (umum) dan dinyatakan saya wajib rawat inap. dr I melakukan pemeriksaan lab ulang dengan sample darah saya yang sama dan hasilnya dinyatakan masih sama yaitu thrombosit 27.000.

dr I menanyakan dokter specialist mana yang akan saya gunakan. Tapi, saya meminta referensi darinya karena saya sama sekali buta dengan RS ini. Lalu referensi dr I adalah dr H. dr H memeriksa kondisi saya dan saya menanyakan saya sakit apa dan dijelaskan bahwa ini sudah positif demam berdarah.

Mulai malam itu saya diinfus dan diberi suntikan tanpa penjelasan atau izin pasien atau keluarga pasien suntikan tersebut untuk apa. Keesokan pagi, dr H visit saya dan menginformasikan bahwa ada revisi hasil lab semalam. Bukan 27.000 tapi 181.000 (hasil lab bisa dilakukan revisi?). Saya kaget tapi dr H terus memberikan instruksi ke suster perawat supaya diberikan berbagai macam suntikan yang saya tidak tahu dan tanpa izin pasien atau keluarga pasien.

Saya tanya kembali jadi saya sakit apa sebenarnya dan tetap masih sama dengan jawaban semalam bahwa saya kena demam berdarah. Saya sangat khawatir karena di rumah saya memiliki 2 anak yang masih batita. Jadi saya lebih memilih berpikir positif tentang RS dan dokter ini supaya saya cepat sembuh dan saya percaya saya ditangani oleh dokter profesional standard Internatonal.

Mulai Jumat terebut saya diberikan berbagai macam suntikan yang setiap suntik tidak ada keterangan apa pun dari suster perawat, dan setiap saya meminta keterangan tidak mendapatkan jawaban yang memuaskan. Lebih terkesan suster hanya menjalankan perintah dokter dan pasien harus menerimanya. Satu boks lemari pasien penuh dengan infus dan suntikan disertai banyak ampul.

Tangan kiri saya mulai membengkak. Saya minta dihentikan infus dan suntikan dan minta ketemu dengan dr H. Namun, dokter tidak datang sampai saya dipindahkan ke ruangan. Lama kelamaan suhu badan saya makin naik kembali ke 39 derajat dan datang dokter pengganti yang saya juga tidak tahu dokter apa. Setelah dicek dokter tersebut hanya mengatakan akan menunggu dr H saja.

Esoknya dr H datang sore hari dengan hanya menjelaskan ke suster untuk memberikan obat berupa suntikan lagi. Saya tanyakan ke dokter tersebut saya sakit apa sebenarnya dan dijelaskan saya kena virus udara. Saya tanyakan berarti bukan kena demam berdarah. Tapi, dr H tetap menjelaskan bahwa demam berdarah tetap virus udara. Saya dipasangkan kembali infus sebelah kanan dan kembali diberikan suntikan yang sakit sekali.

Malamnya saya diberikan suntikan 2 ampul sekaligus dan saya terserang sesak napas selama 15 menit dan diberikan oxygen. Dokter jaga datang namun hanya berkata menunggu dr H saja.

Jadi malam itu saya masih dalam kondisi infus. Padahal tangan kanan saya pun mengalami pembengkakan seperti tangan kiri saya. Saya minta dengan paksa untuk diberhentikan infusnya dan menolak dilakukan suntikan dan obat-obatan.

Esoknya saya dan keluarga menuntut dr H untuk ketemu dengan kami. Namun, janji selalu diulur-ulur dan baru datang malam hari. Suami dan kakak-kakak saya menuntut penjelasan dr H mengenai sakit saya, suntikan, hasil lab awal yang 27.000 menjadi revisi 181.000 dan serangan sesak napas yang dalam riwayat hidup saya belum pernah terjadi.  Kondisi saya makin parah dengan membengkaknya leher kiri dan mata kiri.

dr H tidak memberikan penjelasan dengan memuaskan. Dokter tersebut malah mulai memberikan instruksi ke suster untuk diberikan obat-obatan kembali dan menyuruh tidak digunakan infus kembali. Kami berdebat mengenai kondisi saya dan meminta dr H bertanggung jawab mengenai ini dari hasil lab yang pertama yang seharusnya saya bisa rawat jalan saja. dr H menyalahkan bagian lab dan tidak bisa memberikan keterangan yang memuaskan.

Keesokannya kondisi saya makin parah dengan leher kanan saya juga mulai membengkak dan panas kembali menjadi 39 derajat. Namun, saya tetap tidak mau dirawat di RS ini lagi dan mau pindah ke RS lain. Tapi, saya membutuhkan data medis yang lengkap dan lagi-lagi saya dipermainkan dengan diberikan data medis yang fiktif.

Dalam catatan medis diberikan keterangan bahwa bab (buang air besar) saya lancar padahal itu kesulitan saya semenjak dirawat di RS ini tapi tidak ada follow up-nya sama sekali. Lalu hasil lab yang diberikan adalah hasil thrombosit saya yang 181.000 bukan 27.000.

Saya ngotot untuk diberikan data medis hasil lab 27.000 namun sangat dikagetkan bahwa hasil lab 27.000 tersebut tidak dicetak dan yang tercetak adalah 181.000. Kepala lab saat itu adalah dr M dan setelah saya komplain dan marah-marah dokter tersebut mengatakan bahwa catatan hasil lab 27.000 tersebut ada di Manajemen Omni. Maka saya desak untuk bertemu langsung dengan Manajemen yang memegang hasil lab tersebut.

Saya mengajukan komplain tertulis ke Manajemen Omni dan diterima oleh Og(Customer Service Coordinator) dan saya minta tanda terima. Dalam tanda terima tersebut hanya ditulis saran bukan komplain. Saya benar-benar dipermainkan oleh Manajemen Omni dengan staff Og yang tidak ada service-nya sama sekali ke customer melainkan seperti mencemooh tindakan saya meminta tanda terima pengajuan komplain tertulis.

Dalam kondisi sakit saya dan suami saya ketemu dengan Manajemen. Atas nama Og (Customer Service Coordinator) dan dr G (Customer Service Manager) dan diminta memberikan keterangan kembali mengenai kejadian yang terjadi dengan saya.

Saya benar-benar habis kesabaran dan saya hanya meminta surat pernyataan dari lab RS ini mengenai hasil lab awal saya adalah 27.000 bukan 181.000. Makanya saya diwajibkan masuk ke RS ini padahal dengan kondisi thrombosit 181.000 saya masih bisa rawat jalan.

Tanggapan dr G yang katanya adalah penanggung jawab masalah komplain saya ini tidak profesional sama sekali. Tidak menanggapi komplain dengan baik. Dia mengelak bahwa lab telah memberikan hasil lab 27.000 sesuai dr M informasikan ke saya. Saya minta duduk bareng antara lab, Manajemen, dan dr H. Namun, tidak bisa dilakukan dengan alasan akan dirundingkan ke atas (Manajemen) dan berjanji akan memberikan surat tersebut jam 4 sore.

Setelah itu saya ke RS lain dan masuk ke perawatan dalam kondisi saya dimasukkan dalam ruangan isolasi karena virus saya ini menular. Menurut analisa ini adalah sakitnya anak-anak yaitu sakit gondongan namun sudah parah karena sudah membengkak. Kalau kena orang dewasa laki-laki bisa terjadi impoten dan perempuan ke pankreas dan kista.

Saya lemas mendengarnya dan benar-benar marah dengan RS Omni yang telah membohongi saya dengan analisa sakit demam berdarah dan sudah diberikan suntikan macam-macam dengan dosis tinggi sehingga mengalami sesak napas.  Saya tanyakan mengenai suntikan tersebut ke RS yang baru ini dan memang saya tidak kuat dengan suntikan dosis tinggi sehingga terjadi sesak napas.

Suami saya datang kembali ke RS Omni menagih surat hasil lab 27.000 tersebut namun malah dihadapkan ke perundingan yang tidak jelas dan meminta diberikan waktu besok pagi datang langsung ke rumah saya. Keesokan paginya saya tunggu kabar orang rumah sampai jam 12 siang belum ada orang yang datang dari Omni memberikan surat tersebut.

Saya telepon dr G sebagai penanggung jawab kompain dan diberikan keterangan bahwa kurirnya baru mau jalan ke rumah saya. Namun, sampai jam 4 sore saya tunggu dan ternyata belum ada juga yang datang ke rumah saya. Kembali saya telepon dr G dan dia mengatakan bahwa sudah dikirim dan ada tanda terima atas nama Rukiah.

Ini benar-benar kebohongan RS yang keterlaluan sekali. Di rumah saya tidak ada nama Rukiah. Saya minta disebutkan alamat jelas saya dan mencari datanya sulit sekali dan membutuhkan waktu yang lama. LOgkanya dalam tanda terima tentunya ada alamat jelas surat tertujunya ke mana kan? Makanya saya sebut Manajemen Omni pembohon besar semua. Hati-hati dengan permainan mereka yang mempermainkan nyawa orang.

Terutama dr G dan Og, tidak ada sopan santun dan etika mengenai pelayanan customer, tidak sesuai dengan standard international yang RS ini cantum.

Saya bilang ke dr G, akan datang ke Omni untuk mengambil surat tersebut dan ketika suami saya datang ke Omni hanya dititipkan ke resepsionis saja dan pas dibaca isi suratnya sungguh membuat sakit hati kami.

Pihak manajemen hanya menyebutkan mohon maaf atas ketidaknyamanan kami dan tidak disebutkan mengenai kesalahan lab awal yang menyebutkan 27.000 dan dilakukan revisi 181.000 dan diberikan suntikan yang mengakibatkan kondisi kesehatan makin memburuk dari sebelum masuk ke RS Omni.

Kenapa saya dan suami saya ngotot dengan surat tersebut? Karena saya ingin tahu bahwa sebenarnya hasil lab 27.000 itu benar ada atau fiktif saja supaya RS Omni mendapatkan pasien rawat inap.

Dan setelah beberapa kali kami ditipu dengan janji maka sebenarnya adalah hasil lab saya 27.000 adalah fiktif dan yang sebenarnya saya tidak perlu rawat inap dan tidak perlu ada suntikan dan sesak napas dan kesehatan saya tidak makin parah karena bisa langsung tertangani dengan baik.

Saya dirugikan secara kesehatan. Mungkin dikarenakan biaya RS ini dengan asuransi makanya RS ini seenaknya mengambil limit asuransi saya semaksimal mungkin. Tapi, RS ini tidak memperdulikan efek dari keserakahan ini.

Sdr Og menyarankan saya bertemu dengan direktur operasional RS Omni (dr B). Namun, saya dan suami saya sudah terlalu lelah mengikuti permainan kebohongan mereka dengan kondisi saya masih sakit dan dirawat di RS lain.

Syukur Alhamdulilah saya mulai membaik namun ada kondisi mata saya yang selaput atasnya robek dan terkena virus sehingga penglihatan saya tidak jelas dan apabila terkena sinar saya tidak tahan dan ini membutuhkan waktu yang cukup untuk menyembuhkan.

Setiap kehidupan manusia pasti ada jalan hidup dan nasibnya masing-masing. Benar. Tapi, apabila nyawa manusia dipermainkan oleh sebuah RS yang dipercaya untuk menyembuhkan malah mempermainkan sungguh mengecewakan.

Semoga Allah memberikan hati nurani ke Manajemen dan dokter RS Omni supaya diingatkan kembali bahwa mereka juga punya keluarga, anak, orang tua yang tentunya suatu saat juga sakit dan membutuhkan medis. Mudah-mudahan tidak terjadi seperti yang saya alami di RS Omni ini.

Saya sangat mengharapkan mudah-mudahan salah satu pembaca adalah karyawan atau dokter atau Manajemen RS Omni. Tolong sampaikan ke dr G, dr H, dr M, dan Og bahwa jangan sampai pekerjaan mulia kalian sia-sia hanya demi perusahaan Anda. Saya informasikan juga dr H praktek di RSCM juga. Saya tidak mengatakan RSCM buruk tapi lebih hati-hati dengan perawatan medis dari dokter ini.

Salam,
Prita Mulyasari
Alam Sutera
prita.mulyasari@yahoo.com
081513100600

'Bebaskan Prita'

Jakarta - Obrolan hangat di kalangan 'aktivis' milis atau pun blogger saat ini adalah Prita Mulyasari. Ibu dua anak yang masih kecil-kecil itu ditahan di LP Wanita Tangerang sejak 13 Mei lalu dengan tuduhan pencemaran nama baik RS Omni International Tangerang lewat internet.

Penahanan Prita yang diadili 4 Juni mendatang itu dinilai berlebihan. Alhasil, 'penggiat' internet pun ramai-ramai membelanya, termasuk lewat Facebook.

Support itu bertajuk "DUKUNGAN BAGI IBU PRITA MULYASARI, PENULIS SURAT KELUHAN MELALUI INTERNET YANG DIPENJARA". Hingga pukul 11.30 WIB, Selasa (2/6/2009) grup ini telah memiliki 5.910 member. Grup ini menargetkan mengumpulkan 7.500 member.

Aspirasi kelompok perjuangan ini adalah 'Bebaskan Ibu Prita Mulyasari Dari Penjara dan Segala Tuntutan Hukum' dengan 3 poin:

1. Cabut segala ketentuan hukum pidana tentang pencemaran nama baik karena sering disalahgunakan untuk membungkam hak kemerdekaan mengeluarkan pendapat

2. Keluhan/curhat ibu Prita Mulyasari thd RS Omni tidak bisa dijerat dengan Pasal 27 ayat (3) UU ITE

3. Keluhan/curhat Ibu Prita Mulyasari dijamin oleh UU No 8 Tahun 1999 tentang Perlindungan Konsumen

4. RS Omni hendaknya memberikan HAK JAWAB, bukan melakukan tuntutan perdata dan pidana atas keluhan/curhat yg dimuat di suara pembaca dan di milis2

Kisah tragis Prita ini dimulai ketika Prita menulis keluhannya lewat email ke sejumlah rekannya pada medio Agustus 2008 setelah komplainnya kepada pihak RS tidak mendapat respons memuaskan. Isinya kekesalan Prita pada pelayanan RS Omni yang telah dianggapnya telah membohonginya dengan analisa sakit demam berdarah dan sudah diberikan suntikan macam-macam dengan dosis tinggi sehingga mengalami sesak napas. Prita juga menyesalkan sulitnya mendapatkan hasil lab medis.

Tak dinyana, tulisan Prita menyebar ke berbagai milis. Pihak RS Omni telah menjawab tulisan Prita lewat milis dan memasang iklan di media cetak. Tak cukup itu, RS itu juga memperkarakan Prita ke pengadilan. Prita dijerat dengan UU Informasi dan Traksaksi Elektronik (ITE) dengan hukuman maksimal 6 tahun atau denda Rp 1 miliar. (nrl/iy)


sumber :
http://suarapembaca.detik.com/read/2008/08/30/111736/997265/283/rs-omni-dapatkan-pasien-dari-hasil-lab-fiktif

http://www.detiknews.com/read/2009/06/02/120204/1141289/10/bebaskan-prita-gencar-di-facebook



LinkMar 4, '08 10:41 PM
for everyone
Link: http://2black2u.co.cc/

This is my Blogger webblog

u can find all information like u see in my multiply blog

and my next time u can use to search other information in google in my blog

Blog EntryMar 4, '08 5:29 AM
for everyone

MD5

MD5 didesain oleh Ronald Rivest (salah satu penemu dari Algoritma RSA) pada tahun 1991.

Dalam kriptografi, MD5
(Message-Digest algortihm 5) ialah fungsi hash kriptografik yang digunakan secara luas dengan hash value 128-bit. Pada standart Internet (RFC 1321), MD5 telah dimanfaatkan secara bermacam-macam pada aplikasi keamanan, dan MD5 juga umum digunakan untuk melakukan pengujian integritas sebuah file.

MD5 di desain oleh Ronald Rivest pada tahun 1991 untuk menggantikan hash function sebelumnya, MD4. Pada tahun 1996, sebuah kecacatan ditemukan dalam desainnya, walau bukan kelemahan fatal, pengguna kriptografi mulai menganjurkan menggunakan algoritma lain, seperti SHA-1 (klaim terbaru menyatakan bahwa SHA-1 juga cacat). Pada tahun 2004, kecacatan-kecacatan yang lebih serius ditemukan menyebabkan penggunaan algoritma tersebut dalam tujuan untuk keamanan jadi makin dipertanyakan.

1. Sejarah dan kriptoanalisis                                                                                   

MD5 adalah salah satu dari serangkaian algortima message digest yang didesain oleh Profesor Ronald Rivest dari MIT (Rivest, 1994). Saat kerja analitik menunjukkan bahwa pendahulu MD5 — MD4 — mulai tidak aman, MD5 kemudian didesain pada tahun 1991 sebagai pengganti dari MD4 (kelemahan MD4 ditemukan oleh Hans Dobbertin).

Pada tahun 1993, den Boer dan Bosselaers memberikan awal, bahkan terbatas, hasil dari penemuan pseudo-collision dari fungsi kompresi MD5. Dua vektor inisialisasi berbeda

<math>I</math> dan <math>J</math>

dengan beda 4-bit diantara keduanya.
  
 <math>MD5compress(I,X) =  MD5compress(J,X)</math>

Pada tahun 1996 Dobbertin mengumumkan sebuah kerusakan pada fungsi kompresi MD5. Dikarenakan hal ini bukanlah serangan terhadap fungsi hash MD5 sepenuhnya, hal ini menyebabkan para pengguna kriptografi menganjurkan pengganti seperti WHIRLPOOL, SHA-1 atau RIPEMD-160.

Ukuran dari hash — 128-bit — cukup kecil untuk terjadinya serangan brute force birthday attack. MD5CRK adalah proyek distribusi mulai Maret 2004 dengan tujuan untuk menunjukka
kelemahan dari MD5 dengan menemukan kerusakan kompresi menggunakan brute force attack.

Bagaimanapun juga, MD5CRK berhenti pada tanggal 17 Agustus 2004, saat [[kerusakan hash]] pada MD5 diumumkan oleh Xiaoyun Wang, Dengguo Feng, Xuejia Lai dan Hongbo Yu [1][2]. Serangan analitik mereka dikabarkan hanya memerlukan satu jam dengan menggunakan IBM P690 cluster.

Pada tanggal 1 Maret 2005, Arjen Lenstra, Xiaoyun Wang, and Benne de Weger mendemontrasikan[3] kunstruksi dari dua buah sertifikat X.509 dengan public key yang berbeda dan hash MD5 yang sama, hasil dari demontrasi menunjukkan adanya kerusakan. Konstruksi tersebut melibatkan private key untuk kedua public key tersebut. Dan beberapa hari setelahnya, Vlastimil Klima menjabarkan[4] dan mengembangkan algortima, mampu
membuat kerusakan Md5 dalam beberapa jam dengan menggunakan sebuah komputer notebook. Hal ini menyebabkan MD5 tidak bebas dari kerusakan.

Dikarenakan MD5 hanya menggunakan satu langkah pada data, jika dua buah awalan dengan hash yang sama dapat dibangun, sebuah akhiran yang umum dapat ditambahkan pada keduanya untuk membuat kerusakan lebih masuk akal. Dan dikarenakan teknik penemuan
kerusakan mengijinkan pendahuluan kondisi hash menjadi arbitari tertentu, sebuah kerusakan dapat ditemukan dengan awalan apapun. Proses tersebut memerlukan pembangkitan dua buah file perusak sebagai file templat, dengan menggunakan blok 128-byte dari tatanan data pada 64-byte batasan, file-file tersebut dapat mengubah dengan bebas dengan menggunakan algoritma penemuan kerusakan.

2. Efek nyata dari kriptoanalisis                                                                             

Saat ini dapat diketahui, dengan beberapa jam kerja, bagaimana proses pembangkitan kerusakan MD5. Yaitu dengan membangkitkan dua byte string dengan hash yang sama. Dikarenakan terdapat bilangan yang terbatas pada keluaran MD5, tetapi terdapat bilangan yang tak terbatas sebagai masukannya, hal ini harus dipahami sebelum kerusakan dapat ditimbulkan, tapi hal ini telah diyakini benar bahwa menemukannya adalah hal yang sulit.

Sebagai hasilnya bahwa hash MD5 dari informasi tertentu tidak dapat lagi mengenalinya secara berbeda. Jika ditunjukkan informasi dari sebuah public key, hash MD5 tidak mengenalinya secata berbeda jika terdapat public key selanjutnya yang mempunyai hash MD5 yang sama.

Bagaimanapun juga, penyerangan tersebut memerlukan kemampuan untuk memilih kedua pesan kerusakan. Kedua pesan tersebut tidak dengan mudah untuk memberikan serangan preimage, menemukan pesan dengan hash MD5 yang sudah ditentukan, ataupun serangan
preimage kedua, menemukan pesan dengan hash MD5 yang sama sebagai pesan yang diinginkan.

Hash MD5 lama, yang dibuat sebelum serangan-serangan tersebut diungkap, masih dinilai aman untuk saat ini. Khususnya pada digital signature lama masih dianggap layak pakai. Seorang user boleh saja tidak ingin membangkitkan atau mempercayai signature baru menggunakan MD5 jika masih ada kemungkinan kecil pada teks (kerusakan dilakukan dengan melibatkan pelompatan beberapa bit pada bagian 128-byte pada masukan hash) akan memberikan perubahan yang berarti.

Penjaminan ini berdasar pada posisi saat ini dari kriptoanalisis. Situasi bisa saja berubah secara tiba-tiba, tetapi menemukan kerusakan dengan beberapa data yang belum-ada adalah
permasalahan yang lebih susah lagi, dan akan selalu butuh waktu untuk terjadinya sebuah transisi.

3. Pengujian Integritas                                                                                            

Ringkasan MD5 digunakan secara luas dalam dunia perangkat lunak untuk menyediakan semacam jaminan bahwa file yang diambil (download) belum terdapat perubahan. Seorang user dapat membandingkan MD5 sum yang dipublikasikan dengan checksum dari file yang diambil. Dengan asumsi bahwa checksum yang dipublikasikan dapat dipercaya akan keasliannya, seorang user dapat secara yakin bahwa dile tersebut adalah file yang sama dengan file yang dirilis oleh para developer, jaminan perlindungan dari Trojan Horse dan virus komputer yang ditambahkan pada perangkat lunak. Bagaimanapun juga, seringkali kasus yangterjadi bahwa checksum yang dipublikasikan tidak dapat dipercaya (sebagai contoh, checksum didapat dari channel atau lokasi yang sama dengan tempat mengambil file), dalam hal ini MD5 hanya mampu melakukan error-checking. MD5 akan mengenali file yang didownload tidak sempurna, cacat atau tidak lengkap.

4. Algortima                                                                                                             

Satu operasi MD5 — MD5 terdiri atas 64operasi, dikelompokkan dalam empat putaran dari 16 operasi. F adalah fungsi nonlinear; satu fungsi digunakan pada tiap-tiap putaran. Mi menujukkan blok 32-bit dari masukan pesan, dan Ki menunjukkan konstanta 32-bit, berbeda untuk tiap-tiap operasi.

s menunjukkan perputaran bit kiri oleh s; s bervariasi untuk tiap-tiap operasi. menunjukan tambahan modulo 232. MD5 memproses variasi panjang pesan kedalam keluaran 128-bit dengan panjang yang tetap. Pesan masukan dipecah menjadi dua gumpalan blok 512-bit; Pesan ditata sehingga panjang pesan dapat dibagi 512. Penataan bekerja sebagai berikut: bit tunggal pertama, 1, diletakkan pada akhir pedan. Proses ini diikuti dengan serangkaian nol (0) yang diperlukan agar panjang pesan lebih dari 64-bit dan kurang dari kelipatan 512. Bit-bit sisa diisi dengan 64-bit integer untuk menunjukkan panjang pesan yang asli. Sebuah pesan selalu ditata setidaknya dengan 1-bit tunggal, seperti jika panjang pesan adalah kelipatan 512 dikurangi 64-bit untuk informasi panjang (panjang mod(512) = 448), sebuah blok baru dari 512-bit ditambahkan dengan 1-bit diikuti dengan 447 bit-bit nol (0) diikuti dengan panjang 64-bit.

Algortima MD5 yang utama beroperasi pada kondisi 128-bit, dibagi menjadi empat word 32-bit, menunjukkan A, B, C dan D. Operasi tersebut di inisialisasi dijaga untuk tetap konstan. Algoritma utama kemudian beroperasi pada masing-masing blok pesan 512-bit, masing-masing blok melakukan pengubahan terhadap kondisi.Pemrosesan blok pesan terdiri atas empat tahap, batasan putaran; tiap putasan membuat 16 operasi serupa berdasar pada fungsi non-linear F, tambahan modular, dan rotasi ke kiri. Gambar satu mengilustrasikan satu operasi dalam putaran. Ada empat macam kemungkinan fungsi F, berbeda dari yang digunakan pada tiap-tiap putaran:

<math>F(X,Y,Z) = (X\wedge{Y}) \vee (\neg{X} \wedge{Z})</math>
<math>G(X,Y,Z) = (X\wedge{Z}) \vee (Y \wedge \neg{Z})</math>
<math>H(X,Y,Z) = X\oplus Y \oplus Z</math><math>I(X,Y,Z) = Y\oplus(X vee\neg{Z})</math>

<math>\oplus, \wedge, \vee, \neg</math> menunjukkan operasi logikan XOR, AND, OR dan NOT.

5. Pseudocode                                                                                                          

Pseudocode pada algoritma MD5 adalah sebagai berikut.
//Catatan: Meskipun rumusan dari yang tertera pada RFC 1321, berikut ini sering digunakan untuk meningkatkan efisiensi:

(0 ≤ i ≤ 15): f := d

6. Hash-hash MD5                                                                                                  

Hash-hash MD5 sepanjang 128-bit (16-byte), yang dikenal juga sebagai ringkasan pesan, secara tipikal ditampilkan dalam bilangan heksadesimal 32-digit. Berikut ini merupakan contoh pesan ASCII sepanjang 43-byte sebagai masukan dan hash MD5 terkait:

MD5("The quick brown fox jumps over the lazy    dog")
 =  9e107d9d372bb6826bd81d3542a419d6


Bahkan perubahan yang kecil pada pesan akan (dengan probabilitas lebih) menghasilkan hash yang benar-benar berbeda, misalnya pada kata "dog", huruf d diganti menjadi c:

    MD5("The quick brown fox jumps over the lazy cog")
= 1055d3e698d289f2af8663725127bd4b


Hash dari panjang-nol ialah:

MD5("") = d41d8cd98f00b204e9800998ecf8427e

Blog EntryMar 3, '08 12:17 AM
for everyone

//From http://www.softpedia.com/get/Internet/Browsers/TheWorld-Browser.shtml 

TheWorld Browser 2.1 Final 2008.2.26

Termasuk kelompok browser juga, tapi ternyata lebih enak fasilitas downloadnya mirip orbit downloader. Coba dech, bagi yang udah pernah nyoba n ternyata ada yang lebih bagus lagi jangan lupa kasih tau ya

Link Mirror still from softpedia

External Link 1 (XP/Vista)
External Link 2 (9x)
External Link 3 (XP)
External Link 4 (2K)
External Link 5 (9x)
External Link 6 (2K/XP/Vista)
External Link 7 (2K/XP/Vista Multi-Language)

Selamat  Mendownload

Hidup Download & Free (Cracknya Jangan Lupa)


Blog EntryMar 2, '08 10:26 PM
for everyone
//From http://id.wikipedia.org/wiki/DNS 

Domain Name System

Domain Name System, bahasa Indonesia: Sistem Penamaan Domain) adalah sebuah sistem yang menyimpan informasi tentang nama host maupun nama domain dalam bentuk basis data tersebar (distributed database) di dalam jaringan komputer, misalkan: Internet. DNS menyediakan alamat IP untuk setiap nama host dan mendata setiap server transmisi surat (mail exchange server) yang menerima surat elektronik (email) untuk setiap domain.

DNS menyediakan servis yang cukup penting untuk Internet, bilamana perangkat keras komputer dan jaringan bekerja dengan alamat IP untuk mengerjakan tugas seperti pengalamatan dan penjaluran (routing), manusia pada umumnya lebih memilih untuk menggunakan nama host dan nama domain, contohnya adalah penunjukan sumber universal (URL) dan alamat e-mail. DNS menghubungkan kebutuhan ini.


Sejarah singkat DNS

Penggunaan nama sebagai pengabstraksi alamat mesin di sebuah jaringan komputer yang lebih dikenal oleh manusia mengalahkan TCP/IP, dan kembali ke jaman ARPAnet. Dahulu, setiap komputer di jaringan komputer menggunakan file HOSTS.TXT dari SRI (sekarang SIR International), yang memetakan sebuah alamat ke sebuah nama (secara teknis, file ini masih ada - sebagian besar sistem operasi modern menggunakannya baik secara baku maupun melalui konfigurasi, dapat melihat Hosts file untuk menyamakan sebuah nama host menjadi sebuah alamat IP sebelum melakukan pencarian via DNS). Namun,, sistem tersebut diatas mewarisi beberapa keterbatasan yang mencolok dari sisi prasyarat, setiap saat sebuah alamat komputer berubah, setiap sistem yang hendak berhubungan dengan komputer tersebut harus melakukan update terhadap file Hosts.

Dengan berkembangnya jaringan komputer, membutuhkan sistem yang bisa dikembangkan: sebuah sistem yang bisa mengganti alamat host hanya di satu tempat, host lain akan mempelajari perubaha tersebut secara dinamis. Inilah DNS.

Paul Mockapetris menemukan DNS di tahun 1983; spesifikasi asli muncul di RFC 882 dan 883. Tahun 1987, penerbitan RFC 1034 dan RFC 1035 membuat update terhadap spesifikasi DNS. Hal ini membuat RFC 882 dan RFC 883 tidak berlaku lagi. Beberapa RFC terkini telah memproposikan beberapa tambahan dari protokol inti DNS.



Teori bekerja DNS


Para Pemain Inti

Pengelola dari sistem DNS terdiri dari tiga komponen:

  • DNS resolver, sebuah program klien yang berjalan di komputer pengguna, yang membuat permintaan DNS dari program aplikasi.
  • recursive DNS server, yang melakukan pencarian melalui DNS sebagai tanggapan permintaan dari resolver, dan mengembalikan jawaban kepada para resolver tersebut;

dan ...

  • authoritative DNS server yang memberikan jawaban terhadap permintaan dari recursor, baik dalam bentuk sebuah jawaban, maupun dalam bentuk delegasi (misalkan: mereferensikan ke authoritative DNS server lainnya)

Pengertian beberapa bagian dari nama domain

Sebuah nama domain biasanya terdiri dari dua bagian atau lebih (secara teknis disebut label), dipisahkan dengan titik.

  • Label paling kanan menyatakan top-level domain - domain tingkat atas/tinggi (misalkan, alamat www.wikipedia.org memiliki top-level domain org).
  • Setiap label di sebelah kirinya menyatakan sebuah sub-divisi atau subdomain dari domain yang lebih tinggi. Catatan: "subdomain" menyatakan ketergantungan relatif, bukan absolut. Contoh: wikipedia.org merupakan subdomain dari domain org, dan id.wikipedia.org dapat membentuk subdomain dari domain wikipedia.org (pada prakteknya, id.wikipedia.org sesungguhnya mewakili sebuah nama host - lihat dibawah). Secara teori, pembagian seperti ini dapat mencapai kedalaman 127 level, dan setiap label dapat terbentuk sampai dengan 63 karakter, selama total nama domain tidak melebihi panjang 255 karakter. Tetapi secara praktek, beberapa pendaftar nama domain (domain name registry) memiliki batas yang lebih sedikit.
  • Terakhir, bagian paling kiri dari bagian nama domain (biasanya) menyatakan nama host. Sisa dari nama domain menyatakan cara untuk membangun jalur logis untuk informasi yang dibutuhkan; nama host adalah tujuan sebenarnya dari nama sistem yang dicari alamat IP-nya. Contoh: nama domain www.wikipedia.org memiliki nama host "www".

DNS memiliki kumpulan hirarki dari DNS servers. Setiap domain atau subdomain memiliki satu atau lebih authoritative DNS Servers (server DNS otorisatif) yang mempublikasikan informas tentang domain tersebut dan nama-nama server dari setiap domain di-"bawah"-nya. Pada puncak hirarki, terdapat root servers- induk server nama: server yang ditanyakan ketika mencari (menyelesaikan/resolving) dari sebuah nama domain tertinggi (top-level domain).


Sebuah contoh dari teori rekursif DNS

Sebuah contoh mungkin dapat memperjelas proses ini. Andaikan ada aplikasi yang memerlukan pencarian alamat IP dari www.wikipedia.org. Aplikasi tersebut bertanya ke DNS recursor lokal.

  • Sebelum dimulai, recursor harus mengetahui dimana dapat menemukan root nameserver; administrator dari recursive DNS server secara manual mengatur (dan melakukan update secara berkala) sebuah file dengan nama root hints zone (panduan akar DNS) yang menyatakan alamat-alamt IP dari para server tersebut.
  • Proses dimulai oleh recursor yang bertanya kepada para root server tersebut - misalkan: server dengan alamat IP "198.41.0.4" - pertanyaan "apakah alamat IP dari www.wikipedia.org?"
  • Root server menjawab dengan sebuah delegasi, arti kasarnya: "Saya tidak tahu alamat IP dari www.wikipedia.org, tapi saya "tahu" bahwa server DNS di 204.74.112.1 memiliki informasi tentang domain org."
  • Recursor DNS lokal kemudian bertanya kepada server DNS (yaitu: 204.74.112.1) pertanyaan yang sama seperti yang diberikan kepada root server. "apa alamat IP dari www.wikipedia.org?". (umumnya) akan didapatkan jawaban yang sejenis, "saya tidak tahu alamat dari www.wikipedia.org, tapi saya "tahu" bahwa server 207.142.131.234 memiliki informasi dari domain wikipedia.org."
  • Akhirnya, pertanyaan beralih kepada server DNS ketiga (207.142.131.234), yang menjawab dengan alamat IP yang dibutuhkan.

Proses ini menggunakan pencarian rekursif (recursion / recursive searching).


Pengertian pendaftaran domain dan glue records

Membaca contoh diatas, Anda mungkin bertanya: "bagaimana caranya DNS server 204.74.112.1 tahu alamat IP mana yang diberikan untuk domain wikipedia.org?" Pada awal proses, kita mencatat bahwa sebuah DNS recursor memiliki alamat IP dari para root server yang (kurang-lebih) didata secara explisit (hard coded). Mirip dengan hal tersebut, server nama (name server) yang otoritatif untuk top-level domain mengalami perubahan yang jarang.

Namun, server nama yang memberikan jabawan otorisatif bagi nama domain yang umum mengalami perubahan yang cukup sering. Sebagai bagian dari proses pendaftaran sebuah nama domain (dan beberapa waktu sesudahnya), pendaftar memberikan pendaftaran dengan server nama yang akan mengotorisasikan nama domain tersebut; maka ketika mendaftar wikipedia.org, domain tersebut terhubung dengan server nama gunther.bomis.com dan zwinger.wikipedia.org di pendaftar .org. Kemudian, dari contoh di atas, ketika server dikenali sebagai 204.74.112.1 menerima sebuah permintaan, DNS server memindai daftar domain yang ada, mencari wikipedia.org, dan mengembalikan server nama yang terhubung dengan domain tersebut.

Biasanya, server nama muncul berdasarkan urutan nama, selain berdasarkan alamat IP. Hal ini menimbulkan string lain dari permintaan DNS untuk menyelesaikan nama dari server nama; ketika sebuah alamat IP dari server nama mendapatkan sebuah pendaftaran di zona induk, para programmer jaringan komputer menamakannya sebuah glue record (daftar lekat???)


DNS dalam praktek

Ketika sebuah aplikasi (misalkan web broswer), hendak mencari alamat IP dari sebuah nama domain, aplikasi tersebut tidak harus mengikuti seluruh langkah yang disebutkan dalam teori diatas. Kita akan melihat dulu konsep caching, lalu mengertikan operasi DNS di "dunia nyata".


Caching dan masa hidup (caching and time to live)

Karena jumlah permintaan yang besar dari sistem seperti DNS, perancang DNS menginginkan penyediaan mekanisme yang bisa mengurangi beban dari masing-masing server DNS. Rencana mekanisnya menyarankan bahwa ketika sebuah DNS resolver (klien) menerima sebuah jawaban DNS, informasi tersebut akan di cache untuk jangka waktu tertentu. Sebuah nilai (yang di-set oleh administrator dari server DNS yang memberikan jawaban) menyebutnya sebagai time to live (masa hidup), atau TTL yang mendefinisikan periode tersebut. Saat jawaban masuk ke dalam cache, resolver akan mengacu kepada jawaban yang disimpan di cache tersebut; hanya ketika TTL usai (atau saat administrator mengosongkan jawaban dari memori resolver secara manual) maka resolver menghubungi server DNS untuk informasi yang sama.


Waktu propagasi (propagation time)

Satu akibat penting dari arsitektur tersebar dan cache adalah perubahan kepada suatu DNS tidak selalu efektif secara langsung dalam skala besar/global. Contoh berikut mungkin akan menjelaskannya: Jika seorang administrator telah mengatur TTL selama 6 jam untuk host www.wikipedia.org, kemudian mengganti alamat IP dari www.wikipedia.org pada pk 12:01, administrator harus mempertimbangkan bahwa ada (paling tidak) satu individu yang menyimpan cache jawaban dengan nilai lama pada pk 12:00 yang tidak akan menghubungi server DNS sampai dengan pk 18:00. Periode antara pk 12:00 dan pk 18:00 dalam contoh ini disebut sebagai waktu propagasi (propagation time), yang bisa didefiniskan sebagai periode waktu yang berawal antara saat terjadi perubahan dari data DNS, dan berakhir sesudah waktu maksimum yang telah ditentukan oleh TTL berlalu. Ini akan mengarahkan kepada pertimbangan logis yang penting ketika membuat perubahan kepada DNS: tidak semua akan melihat hal yang sama seperti yang Anda lihat. RFC1537 dapat membantu penjelasan ini.


DNS di dunia nyata

Di dunia nyata, user tidak berhadapan langsung dengan DNS resolver - mereka berhadapan dengan program seperti web brower (Mozilla Firefox, Safari, Opera, Internet Explorer, Netscape, Konqueror dan lain-lain dan klien mail (Outlook Express, Mozilla Thunderbird dan lain-lain). Ketika user melakukan aktivitas yang meminta pencarian DNS (umumnya, nyaris semua aktivitas yang menggunakan Internet), program tersebut mengirimkan permintaan ke DNS Resolver yang ada di dalam sistem operasi.

DNS resolver akan selalu memiliki cache (lihat diatas) yang memiliki isi pencarian terakhir. Jika cache dapat memberikan jawaban kepada permintaan DNS, resolver akan menggunakan nilai yang ada di dalam cache kepada program yang memerlukan. Kalau cache tidak memiliki jawabannya, resolver akan mengirimkan permintaan ke server DNS tertentu. Untuk kebanyakan pengguna di rumah, Internet Service Provider(ISP) yang menghubungkan komputer tersebut biasanya akan menyediakan server DNS: pengguna tersebut akan mendata alamat server secara manual atau menggunakan DHCP untuk melakukan pendataan tersebut. Jika administrator sistem telah mengkonfigurasi sistem untuk menggunakan server DNS mereka sendiri, DNS resolver umumnya akan mengacu ke server nama mereka. Server nama ini akan mengikuti proses yang disebutkan di Teori DNS, baik mereka menemukan jawabannya maupun tidak. Hasil pencarian akan diberikan kepada DNS resolver; diasumsikan telah ditemukan jawaban, resolver akan menyimpan hasilnya di cache untuk penggunaan berikutnya, dan memberikan hasilnya kepada software yang meminta pencarian DNS tersebut.

Sebagai bagian akhir dari kerumitan ini, beberapa aplikasi seperti web browser juga memiliki DNS cache mereka sendiri, tujuannya adalah untuk mengurangi penggunaan referensi DNS resolver, yang akan meningkatkan kesulitan untuk melakukan debug DNS, yang menimbulkan kerancuan data yang lebih akurat. Cache seperti ini umumnya memiliki masa yang singkat dalam hitungan 1 menit.


Penerapan DNS lainnya

Sistem yang dijabarkan diatas memberikan skenario yang disederhanakan. DNS meliputi beberapa fungsi lainnya:

  • Nama host dan alamat IP tidak berarti terhubung secara satu-banding-satu. Banyak nama host yang diwakili melalui alamat IP tunggal: gabungan dengan pengasuhan maya (virtual hosting), hal ini memungkinkan satu komputer untuk malayani beberapa situs web. Selain itu, sebuah nama host dapat mewakili beberapa alamat IP: ini akan membantuk toleransi kesalahan (fault tolerance dan penyebaran beban (load distribution), juga membantu suatu situs berpindah dari satu lokasi fisik ke lokasi fisik lainnya secara mudah.
  • Ada cukup banyak kegunaan DNS selain menerjemahkan nama ke alamat IP. Contoh:, agen pemindahan surat Mail transfer agents(MTA) menggunakan DNS untuk mencari tujuan pengiriman E-mail untuk alamat tertentu. Domain yang menginformasikan pemetaan exchange disediakan melalui rekod MX (MX record) yang meningkatkan lapisan tambahan untuk toleransi kesalahan dan penyebaran beban selain dari fungsi pemetaan nama ke alamat IP.
  • Kerangka Peraturan Pengiriman (Sender Policy Framework) secara kontroversi menggunakan keuntungan jenis rekod DNS, dikenal sebagai rekod TXT.
  • Menyediakan keluwesan untuk kegagalan komputer, beberapa server DNS memberikan perlindungan untuk setiap domain. Tepatnya, tigabelas server akar (root servers) digunakan oleh seluruh dunia. Program DNS maupun sistem operasi memiliki alamat IP dari seluruh server ini. Amerika Serikat memiliki, secara angka, semua kecuali tiga dari server akar tersebut. Namun, dikarenakan banyak server akar menerapkan anycast, yang memungkinkan beberapa komputer yang berbeda dapat berbagi alamat IP yang sama untuk mengirimkan satu jenis services melalui area geografis yang luas, banyak server yang secara fisik (bukan sekedar angka) terletak di luar Amerika Serikat.

DNS menggunanakn TCP dan UDP di port komputer 53 untuk melayani permintaan DNS. Nyaris semua permintaan DNS berisi permintaan UDP tunggal dari klien yang ddikuti oleh jawaban UDP tunggal dari server. Umumnya TCP ikut terlibat hanya ketika ukuran data jawaban melebihi 512 byte, atau untuk pertukaaran zona DNS zone transfer

Jenis-jenis catatan DNS

Beberapa kelompok penting dari data yang disimpan di dalam DNS adalah sebagai berikut:

  • A record atau catatan alamat memetakan sebuah nama host ke alamat IP 32-bit (untuk IPv4).
  • AAAA record atau catatan alamat IPv6 memetakan sebuah nama host ke alamat IP 128-bit (untuk IPv6).
  • CNAME record atau catatan nama kanonik membuat alias untuk nama domain. Domain yang di-alias-kan memiliki seluruh subdomain dan rekod DNS seperti aslinya.
  • '[MX record]] atau catatan pertukaran surat memetakan sebuah nama domain ke dalam daftar mail exchange server untuk domain tersebut.
  • PTR record atau catatan penunjuk memetakan sebuah nama host ke nama kanonik untuk host tersebut. Pembuatan rekod PTR untuk sebuah nama host di dalam domain in-addr.arpa yang mewakili sebuah alamat IP menerapkan pencarian balik DNS (reverse DNS lookup) untuk alamat tersebut. Contohnya (saat penulisan / penerjemahan artikel ini), www.icann.net memiliki alamat IP 192.0.34.164, tetapi sebuah rekod PTR memetakan ,,164.34.0.192.in-addr.arpa ke nama kanoniknya: referrals.icann.org.
  • NS record atau catatan server nama memetakan sebuah nama domain ke dalam satu daftar dari server DNS untuk domain tersebut. Pewakilan bergantung kepada rekod NS.
  • SOA record atau catatan otoritas awal (Start of Authority) mengacu server DNS yang mengediakan otorisasi informasi tentang sebuah domain Internet.
  • SRV record adalah catatan lokasi secara umum.
  • Catatan TXT mengijinkan administrator untuk memasukan data acak ke dalam catatan DNS; catatan ini juga digunakan di spesifikasi Sender Policy Framework.

Jenis catatan lainnya semata-mata untuk penyediaan informasi (contohnya, catatan LOC memberikan letak lokasi fisik dari sebuah host, atau data ujicoba (misalkan, catatan WKS memberikan sebuah daftar dari server yang memberikan servis yang dikenal (well-known service) seperti HTTP atau POP3 untuk sebuah domain.

Nama domain yang diinternasionalkan

Nama domain harus menggunakan satu sub-kumpulan dari karakter ASCII, hal ini mencegah beberapa bahasa untuk menggunakan nama maupun kata lokal mereka. ICANN telah menyetujui Punycode yang berbasiskan sistem IDNA, yang memetakan string Unicode ke karakter set yang valid untuk DNS, sebagai bentuk penyelesaian untuk masalah ini, dan beberapa registries sudah mengadopsi metode IDNS ini.

Perangkat lunak DNS

Beberapa jenis perangakat lunak DNS menerapkan metode DNS, beberapa diantaranya:

Utiliti berorientasi DNS termasuk:

  • dig (the domain information groper)

Pengguna legal dari domain


Pendaftar (registrant)

Tidak satupun individu di dunia yang "memiliki" nama domain kecuali Network Information Centre (NIC), atau pendaftar nama domain (domain name registry). Sebagian besar dari NIC di dunia menerima biaya tahunan dari para pengguna legal dengan tujuan bagi si pengguna legal menggunakan nama domain tersebut. Jadi sejenis perjanjian sewa-menyewa terjadi, bergantung kepada syarat dan ketentuan pendaftar. Bergantung kepada beberpa peraturan penamaan dari para pendaftar, pengguna legal dikenal sebagai "pendaftar" (registrants) atau sebagai "pemegang domain" (domain holders)

ICANN memegang daftar lengkap untuk pendaftar domain di seluruh dunia. Siapapun dapat menemukan pengguna legal dari sebuah domain dengan mencari melalui basis data WHOIS yang disimpan oleh beberpa pendaftar domain.

Di (lebih kurang) 240 country code top-level domains (ccTLDs), pendaftar domain memegang sebuah acuan WHOIS (pendaftar dan nama server). Contohnya, IDNIC, NIC Indonesia, memegang informasi otorisatif WHOIS untuk nama domain .ID.

Namun, beberapa pendaftar domain, seperti VeriSign, menggunakan model pendaftar-pengguna. Untuk nama domain .COM dan .NET, pendaftar domain, VeriSign memegang informasi dasar WHOIS )pemegang domain dan server nama). Siapapun dapat mencari detil WHOIS (Pemegang domain, server nama, tanggal berlaku, dan lain sebagainya) melalui pendaftar.

Sejak sekitar 2001, kebanyakan pendaftar gTLD (.ORG, .BIZ, .INFO) telah mengadopsi metode penfatar "tebal", menyimpan otoritatif WHOIS di beberapa pendaftar dan bukan pendaftar itu saja.


Kontak Administratif (Administrative Contact)

Satu pemegang domain biasanya menunjuk kontak administratif untuk menangani nama domain. Fungsi manajemen didelegasikan ke kontak administratif yang mencakup (diantaranya):

  • keharusan untuk mengikuti syarat dari pendaftar domain dengan tujuan memiliki hak untuk menggunakan nama domain
  • otorisasi untuk melakukan update ke alamat fisik, alamat email dan nomor telefon dan lain sebagainya via WHOIS

Kontak Teknis (Technical Contact)

Satu kontak teknis menangani server nama dari sebuah nama domain. Beberapa dari banuak fungsi kontak teknis termasuk:

  • memastikan bahwa konfigurasi dari nama domain mengikuti syarat dari pendaftar domain
  • update zona domain
  • menyediakan fungsi 24x7 untuk ke server nama (yang membuat nama domain bisa diakses)

Kontak Pembayaran (Billing Contact)

Tidak perlu dijelaskan, pihak ini adalah yang menerima tagihan dari NIC.

Server Nama (Name Servers)

Disebut sebagai server nama otoritatif yang mengasuh zona nama domain dari sebuah nama domain.

Politik

Banyak penyelidikan telah menyuarakan kritik dari metode yang digunakan sekarang untuk mengatur kepemilikan domain. Umumnya, kritik mengklaim penyalahgunaan dengan monopoli, seperti VeriSign Inc dan masalah-masalah dengan penunjukkan dari top-level domain (TLD). Lembaga international ICANN (Internet Corporation for Assigned Names and Numbers) memelihara industri nama domain.



Blog EntryMar 2, '08 10:18 PM
for everyone
//From http://dibyo.wordpress.com/2008/02/22/download-driver-hardware/ 

Ternyata aku dapet juga link-link hardware Drivers, lumayan lah buat koleksi. Beberapa diantaranya adalah :

Software drivers untuk lebih dari 25,000 hardware components from brands such as Dell, HP, Compaq, IBM, Sony, Toshiba, Panasonic, as well as hardware component manufacturers Intel, 3Com, VIA, nVidia, ATI, SoundMax.

DIGITAL GRAPHICS DRIVER FOR ALL MOTHERBOARD
It Supports (setups) the following motherboards
ALL MERCURY MOTHERDS
ALL VIA MOTHERBOARDS
ALL INTEL CHIPSET MOTHERBOARDS
ALL INTEL DESKTOP BOARDS
ALL SIS MOTHERBOARDS

Support Driver links :
http://www.drivers.com
http://www.amptron.com
http://www.mrdriver.com
http://www.pcdrivers.com
http://www.drivershq.com
http://www.driverzone.com
http://www.windrivers.com
http://www.helpdrivers.com
http://www.voodoofiles.com
http://www.driverforum.com
http://www.driverguide.com (User:drivers Password:all)
http://www.driversearch.com
http://www.driverupdate.com
http://www.video-drivers.com
http://www.driversplanet.com
http://www.perfectdrivers.com
http://www.totallydrivers.com
http://www.windowsxp-drivers.com
http://www.galttech.com/drivers.shtml
http://www.bioscentral.com

—– factory drivers
http://www.abit.com (Abit)
http://www.acer.com (Acer)
http://www.amd.com (Advanced Micro Devices - AMD)
http://www.agfa.com (Agfa)
http://www.albatron.com.tw (Albatron)
http://www.megatrends.com (American Megatrends - AMI)
http://www.apple.com (Apple)
http://www.aopen.com (A-Open)
http://www.asus.com (Asus)
http://www.ati.com (ATI Technologies)
http://www.cisco.com (Cisco Systems)
http://www.compaq.com (Compaq)
http://www.creative.com (Creative)
http://www.dell.com (Dell)
http://www.epox.com (Epox)
http://www.epson.com (Epson)
http://www.fujitsu.com (Fujitsu)
http://www.gigabyte.com (Gigabyte)
http://www.hp.com (Hewlett Packard)
http://www.ibm.com (IBM)
http://www.intel.com (Intel)
http://www.kodak.com (Kodak)
http://www.lexmark.com (Lexmark)
http://www.lge.com (LG)
http://www.logitech.com (Logitech)
http://www.matrox.com (Matrox)
http://www.maxtor.com (Maxtor)
http://www.msicomputer.com (MSI)
http://www.nvidia.com (Nvidia)
http://www.quantum.com (Quantum)
http://www.seagate.com (Seagate)
http://www.samsung.com (Samsung)
http://www.sis.com (SIS)
http://www.soyo.com (Soyo)
http://www.toshiba.com (Toshiba)
http://www.umax.com (Umax)
http://www.usrobotics.com (US Robotics)
http://www.wdc.com (Western Digital)
http://www.xerox.com (Xerox)
http://www.canon.com (Canon)

DVD Drivers
http://www.cdrom-drivers.com/

Graphics Drivers
http://www.video-drivers.com/

Input Drivers
http://www.input-drivers.com/

Modem Drivers
http://www.modem-drivers.com/

Monitor Drivers
http://www.monitor-drivers.com/

Mouse Drivers
http://www.input-drivers.com/

Network Drivers
http://www.network-drivers.com/

Plotter Drivers
http://www.printer-drivers.com/

Windows XP Drivers
http://www.windowsxp-drivers.com/

Printer Drivers
http://www.printer-drivers.com/

Scanner Drivers
http://www.scanner-drivers.com/

Sound Drivers
http://www.soundcard-drivers.com/

Storage Drivers
http://www.storagedrivers.com/

USB Drivers
http://www.usb-drivers.com/

Video Drivers
http://www.video-drivers.com/

Banyak juga yah…ternyata. Bagi yang butuh driver, coba saja kunjungi web di atas, siapa tahu aja dapat.



Blog EntryMar 2, '08 10:10 PM
for everyone



Chatting lewat HP (mig33)

Berikut ini akan di bahas bagaimana anda dapat chatting melalui HP. Caranya mudah, download murah dan cepat.

Pertama kali, anda harus mendownload applikasinya lewat browser HP anda. Alamat yang dapat dituju antara lain wap.getjar.com. Situs ini menyediakan banyak sekali aplikasi-aplikasi HP yang dapat anda peroleh secara gratis.


Untuk lebih mudahnya, disini kita bicarakan software chatting bernama mig33. Anda dapat mendownload softwarenya lewat komputer. Masuk ke situs http://www.getjar.com/products/10646/Mig33PlusUltimate untuk mendownload software tersebut. Atau untuk mendownload langsung lewat HP, masuklah ke situs wap.getjar.com kemudian tekan quick download, dan masukkan kode berikut 17188. Lalu ikuti langkah-langkahnya.

Download to Mobile: Open wap.GetJar.com with your mobile -> Quick Download -> enter Quick Download Code 17188

Setelah anda berhasil mendownload, silakan ikuti petunjuk registrasinya. Masukkan username dan password yang anda inginkan.

Perlu diingat! Username pada mig33 merupakan kode nama anda dalam chatting. Mig33 berbasis username dalam chatting dan dalam menambah kontak. Tidak seperti MXit yang berbasis nomor telepon dalam operasinya.

Jangan lupa untuk men-check “save password” agar anda tidak perlu mengetikkan password setiap kali anda login. Setelah itu anda akan menerima kode (key) yang akan dikirim melalui sms. Masukkan kode tersebut ke tahap selanjutnya.

Jika semua ini sudah selesai, anda sudah bisa menggunakan aplikasi tersebut dengan login terlebih dahulu. Aplikasi ini memiliki komunitas sendiri seperti chatrooms (untuk membukanya tekan menu-open chatroom). Jadi jangan takut jika anda baru registrasi dan belum memiliki mig33 contact. Untuk menambahkan kontak ke mig33 anda terdapat berbagai macam cara. Antara lain melalui menu->add contact->mig33 lalu masukkan username teman anda.

Download to PC:
JAD file (Mig33plus.jad)
JAR file (Mig33plus.jar)

Jangan lupa aktifkan dulu gprs di HP anda. Biaya yang dikenakan hanya biaya penggunaan GPRS (saya pakai indosat-m3 tidak sampai 300rupiah untuk chatting selama 1jam). Selamat mencoba!


Blog EntryMar 2, '08 9:48 PM
for everyone
This i like, the portable for make web

if any other, like this, pleaseeeee........ tell me,  OK

//From Wikipedia

Server2Go is a freeware WAMP Stack. It is a software package that bundles Windows versions of PHP, MySQL, Apache and Perl. Server2Go is designed to run on removable and write protected media such as USB-Sticks or CD-ROMs. So it makes Standalone Web Applications possible that can run from a CD-ROM. Server2Go is self configurable, that means there is no need of any installation or configuration before running web software with this server. It runs on all Windows versions from Win 98 on; MAC OSX support is being worked on.

here link to download (//From www.brothersoft.com/server2go-65104.html)
Local download: Server2Go_65104.zip
Download Mirror 1: server2go.zip

here link to website
http://www.server2go-web.de/index.html


//From http://achedy.penamedia.com/2006/11/19/server2go-amp-live-cd/

Sebenarnya sudah lama saya (http://achedy.penamedia.com/2006/11/19/server2go-amp-live-cd/) mendengar server2go, seperti phptriad, wampp, xampp, dia adalah paket software yang terdiri atas Apache, PHP, MySQL lengkap dengan berbagai library di dalamnya. Kelebihan server2go adalah bahwa dia bisa berjalan langsung dari CD. Namun saat itu tidak ada alasan yang memaksa saya untuk menginstallnya.

Saya sengaja mendownload versi dengan ukuran mini (+/- 16 MB). Dalam Server2go versi 1.3 terdapat

Apache/1.3.35 (Win32)
PHP/5.1.4
SQLite 2
MySQL 4.1.20-community

Cukup dengan mengekstrak paket dalam bentuk zip, maka instalasi dinyatakan telah selesai. Kita tinggal mengklik Server2Go.exe , maka Apache, PHP, dan mysql telah berjalan akan berjalan dengan baik. Dengan menaruh file-file php pada folder htdocs, dan membuat database lewat phpMyAdmin yang telah disediakan, maka kita sudah bisa bekerja membangun proyek web. Atau jika proyek web telah selesai kita tinggal menyalin skrip sebelumnya ke folder htdocs, dan menyalin data mysql dalam bentuk binary ke folder dbdir. Jika semuanya udah selesai maka bisa langsung di simpan di CD. Dan begitu CD di masukkan, maka autorun.inf akan memanggil Server2Go.exe dan menjalankan aplikasi.

Dan jika kita ingin membuat option lebih banyak, maka pms_config.ini menyediakan pilihan setting yang cukup powerfull. Selamat mencoba.



Blog EntryFeb 27, '08 6:57 AM
for everyone
artikel ini di dapat dari hasil browsing, entah dimana sitenya, dah lupa, yang penting bermanfaat, so kita bagi2 otre

  silahkan dibaca, dikopi or diprint boleh aja

Apa Itu MySQL?

MySQL (bisa dibaca dengan mai-es-ki-el atau bisa juga mai-se-kuel, terserah Anda) adalah suatu perangkat lunak database relasi (bahasa kerennya Relational Database Management System atau RDBMS), seperti halnya ORACLE, Postgresql, MS SQL, dan sebagainya.

Jangan disalah-artikan MySQL dengan SQL. SQL (singkatan dari Structured Query Language) sendiri didefinisikan sebagai suatu sintaks perintah-perintah tertentu atau bahasa (program?) yang digunakan untuk mengelola suatu database.

Jadi, MySQL dan SQL adalah dua 'mahluk' yang berbeda. Mudahnya, MySQL adalah softwarenya, dan SQL adalah bahasa perintahnya. Jelas kan?

Sejarah MySQL dan SQL

Wah.. yang ini mah silakan diklik aja disini (http://www.mysql.com). Dibahas lengkap di situs MySQL.COM

MySQL platform OS-nya apa?

Awalnya MySQL dijalankan pada sistem operasi Unix dan Linux. Tapi, bagi para penggemar Windows pun sekarang sudah tersedia MySQL versi Windowsnya. Mereka yang menggunakan Linux (RedHat, Mandrake, dsb), biasanya MySQL sudah terinstall secara default. Bila belum bisa diinstall maka dengan cukup mudah dapat menginstalnya menggunakan RPM (Redhat Package Manager, merupakan prosedur instalasi software yang menjadi standar de-facto untuk Linux, walaupun Anda tidak menggunakan Linux redhat). Cara instalasi ini akan dibahas pada artikel tutorial selanjutnya.

Nah, bagi mereka yang menggunakan OS Windows, tidak usah berkecil hati, karena sudah ada paket software yang merangkum MySQL, Apache webserver dan PHP yang sangat mudah untuk di-install. Software tersebut namanya PHPTriad (phptriad2-2-1.exe,ukuran file 13 MB). Berhubung keterbatasan ruang dan kecepatan, saya tidak menyediakan software tersebut disini. Tapi, Anda bisa mendapatkannya pada CD yang disertakan pada majalah Master Web edisi November 2001, terbitan Jakarta dengan judul laporan utama tentang" PHP" (http://www.mwmag.com). Pada halaman 32 majalah tersebut Anda akan mendapatkan panduan instalasi paket PHPTriad. (Catatan: majalah Master Web saat ini sudah tidak terbit lagi).

Anda dapat juga memperoleh software PHPTriad dan MySQL pada majalah Neotek, No.III - 03, bulan Desember 2002 yang dilengkapi CD. Bila sulit untuk mendapatkan majalah tsb, karena terbit beberapa tahun yang lalu, Anda bisa juga mencoba untuk men-download-nya di situs Download.Com (http://www.download.com) atau coba juga ke BestDownload.Com (http://www.bestdownload.com). Gunakan fasilitas pencarian (search) yang ada di situs tersebut untuk mendapatkan phpTriad.

MySQL pun menyediakan versi Windowsnya. Versi terbaru (per bulan Agustus 2005) yang bisa di-download langsung dari situsnya ((http://dev.mysql.com/downloads/) adalah versi 4.0.25. Nama lengkap file tersebut untuk versi Windows adalah mysql-4.0.25-win32.zip dengan ukuran  25,1 MB). Cukup besar yach.. Membutuhkan waktu sekitar 30-60 menit untuk di-download melalui koneksi internet dial-up (itupun kalo jalurnya sedang "sepi" :) ). Happy download!

Bila Anda sudah melakukan instalasi MySQL dan Apache dengan benar, silakan lanjutkan tutorial ini. Kalo belum, coba periksa kembali tahapan instalasi atau install ulang aja dech...

Bagaimana, kita lanjutkan..??

Catatan:

Untuk tutorial ini saya menggunakan paket program PHPTriad 2.2, dengan sistem operasi Windows XP. Saya pernah juga menjalankan PHPTriad ini pada OS Windows ME, Windows 98SE dan semuanya berjalan dengan baik. Bagi mereka yang menggunakan Linux, tidak usah khawatir. Hasil dari perintah-perintah MySQLnya adalah sama saja.

Bila Anda menggunakan OS Windows, saya sarankan untuk menggunakan MySQL For Windows versi yang terbaru (per minggu ketiga bulan Agustus 2005 adalah versi 4.0.25). Silakan dilihat pada sesi -1 tentang versi 4.0.25 tersebut. Atau Anda dapat langsung meng-download-nya dari http://dev.mysql.com/downloads/

Menjalankan SQL Pertama Kali

Paket PHPTriad biasanya di-instal pada direktori atau folder C:\Apache. Karena PHPTriad merupakan kumpulan paket dari Apache (versi 1.3.23), MySQL (versi 3.23.48) dan PHP (versi 4.1.1), sehingga masing-masing software tersebut akan disimpan pada direktori khusus. Untuk MySQL ada pada direktori C:\apache\mysql. Sedangkan untuk file-file eksekusinya (file biner) ada di direktori C:\apache\mysql\bin.

Pada sistem prompt masuklah ke direktori mysql\bin

C:\>CD apache\mysql\bin <Enter>

Jalankan dahulu program MySQL Server atau MySQL Daemon -- disingkat mysqld (pada saat ini komputer kita bertindak seolah-olah sebagai sebuah server).

C:\apache\mysql\bin>mysqld --console <enter>

Bila perintah ini berjalan dengan baik,maka pada layar akan ditampilkan pesan:

mysqld: ready for connections

Perhatikan pada 'connections' dengan bentuk jamak, dengan demikian komputer kita tersebut telah menjalankan fungsinya sebagai mysql server dan dapat melayani lebih dari satu koneksi.

Jangan tutup jendela layar tersebut! Jika anda menutup jendela tersebut, maka program MySQL server akan dihentikan juga oleh sistem. Kemudian, bukalah sebuah jendela system prompt (atau DOS prompt) yang baru. Dan masuklah ke direktori c:\apache\mysql\bin

C:\>cd apache\mysq\bin <enter>


C:\apache\mysql\bin>

Kemudian jalankan program mysql client dengan mengetikkan mysql pada sistem prompt.

c:\apache\mysql\bin\> mysql <enter>

Bila perintah tersebut berhasil, maka pada layar akan tampil ucapan selamat datang dari mysql:

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is xx to server version: 3.23.47-nt.

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

SELAMAT! Anda sekarang sudah berhasil menjalankan mysql dan berhasil masuk kedalam sistem mysql. Pesan tersebut berisi ucapan selamat datang, pemberitahuan tentang penulisan perintah MySQL yang (tidak) SELALU diakhiri dengan simbol ; Versi MySQL yang kita gunakan (3.23.47-nt), dan connection id yang berupa nomor urut kita masuk ke server.

OK, sementara kita ambil nafas dulu yach... Kita lanjut besok pagi lagi. OK?!

 

Siapa yang masuk tuch?

Nah, kemarin kita sudah berhasil menginstall dan menjalankan MySQL Server dan juga MySQL Client (atau ada yang belum berhasil?). Yang perlu kita perhatikan adalah: Kenapa sedemikian mudahnya kita mengakses MySQL (cukup mengetikkan 'mysql')? Kok tidak ada pertanyaan seperti username dan login?

Memang inilah yang harus diwaspadai. Pertama kali MySQL dijalankan dia akan membolehkan siapapun untuk masuk ke dalam sistem. Ini SANGAT BERBAHAYA SEKALI! Sekarang yang harus kita lakukan pertama kali adalah pembatasan hak akses.

Mari kita lihat apa saja yang sudah ada di MySQL.

Masuklah ke dalam sistem MySQL dengan mengetikkan mysql pada sistem prompt. Jangan lupa, sebelumnya kita harus sudah mengaktikan MySQL servernya dulu (lihat sesi sebelumnya kalo Anda lupa..).

C:\apache\mysql\bin>mysql <enter>

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is xx to server version: 3.23.47-nt.

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>_

Pada MySQL prompt ketikkan sbb:

mysql>SHOW DATABASES ;

+-----------+

| Database  |

|-----------|

| mysql     |

| test      |

+-----------+

2 rows in set (0.00 sec)

Perintah diatas menampilkan database apa saja yang sudah ada sejak MySQL pertama kali diinstal. Disini ada 2 database, yaitu database mysql dan test. Database mysql berisi data-data tentang user, password, nama host, dsb (nanti kita lihat isinya yach..sabar..). Dan database test merupakan database untuk latihan bagi siapa saja yang mau. Kalau tidak diperlukan, kita bisa hapus database test ini.

Catatan:
Saya membedakan penulisan MySQL dengan mysql. MySQL berarti merujuk ke perangkat lunak/software database MySQL, sedangkan mysql (dengan huruf kecil) berarti merujuk ke sebuah nama database.

Sekarang kita lihat apa saja isi dari database mysql tersebut.

Aktifkan database mysql:

mysql>USE mysql ;

Database changed

Kita sudah mengaktifkan database mysql dan sistem memberi respon dengan pesan 'Database changed'.

Tampilkan isi database mysql:

mysql>SHOW TABLES ;

+--------------------+

| Tables_in_mysql    |

+--------------------+

| columns_priv       |

| db                 |

| func               |

| host               |

| tables_priv        |

| user               |

+--------------------+


6 rows in set (0.00 sec)
Ada 6 tabel yang dapat dijelaskan kegunaannya sebagai berikut:

Nama Tabel

Kegunaan

columns_priv

Data hak akses user (user privileges) pada kolom-kolom tertentu di dalam suatu tabel.

db

Nama database yang bisa diakses oleh user tertentu.

func

 

host

Nama-nama host yang diijinkan mengakses mysql

tables_priv

Data hak akses user (user privileges) pada tabel-tabel tertentu di dalam suatu database.

user

Nama-nama pengguna (user) yang diijinkan untuk mengakses mysql.

Yang akan kita lihat dahulu adalah isi tabel user. Tuliskan perintah dibawah ini pada MySQL prompt:

mysql>DESCRIBE user;


atau:

mysql> SHOW COLUMNS FROM user ; 

Perintah tersebut untuk menampilkan kolom-kolom (field) apa saja yang ada di dalam sebuah tabel. Hasilnya adalah sebagai berikut:

+-----------------+-----------------+------+-----+---------+--------+

| Field           | Type            | Null | Key | Default | Extra  |

+-----------------+-----------------+------+-----+---------+--------+

| Host            | char(60) binary |      | Pri |         |        |

| User            | char(16) binary |      | Pri |         |        |

| Password        | char(16) binary |      |     |         |        |

| Select_priv     | enum('N','Y')   |      |     |    N    |        |

| Insert_priv     | enum('N','Y')   |      |     |    N    |        |

| Update_priv     | enum('N','Y')   |      |     |    N    |        |

| Delete_priv     | enum('N','Y')   |      |     |    N    |        |

| Create_priv     | enum('N','Y')   |      |     |    N    |        |

| Drop_priv       | enum('N','Y')   |      |     |    N    |        |

| Reload_priv     | enum('N','Y')   |      |     |    N    |        |

| Shutdown_priv   | enum('N','Y')   |      |     |    N    |        |

| Process_priv    | enum('N','Y')   |      |     |    N    |        |

| File_priv       | enum('N','Y')   |      |     |    N    |        |

| Grant_priv      | enum('N','Y')   |      |     |    N    |        |

| References_priv | enum('N','Y')   |      |     |    N    |        |

| Index_priv      | enum('N','Y')   |      |     |    N    |        |

| Alter_priv      | enum('N','Y')   |      |     |    N    |        |

+-----------------+-----------------+------+-----+---------+--------+


17 rows in set (0.00 sec)

Kita lihat sepintas bahwa tabel user ini mencakup nama user,nama host dari mana si user mengakses mysql, password dari user yang bersangkutan, dan sisanya adalah jenis-jenis hak akses (user privileges) yang dimiliki user tersebut. Mengenai jenis akses akan kita bahas nanti pada bab tersendiri yach...karena ceritanya memang agak panjang dan teoritis...

Sedangkan mulai MySQL versi 4.0.xx (atau yang lebih baru), ada beberapa perubahan yang terjadi pada tabel user. Mari kita lihat apa saja perbedaannya dibanding dengan MySQL versi yang lebih kuno:

mysql> desc user ;

+-----------------------+-----------------------------------+------+-----+---------+-------+

| Field                 | Type                              | Null | Key | Default | Extra |

+-----------------------+-----------------------------------+------+-----+---------+-------+

| Host                  | varchar(60) binary                |      | PRI |         |       |

| User                  | varchar(16) binary                |      | PRI |         |       |

| password              | varchar(16)                       |      |     |         |       |

| Select_priv           | enum('N','Y')                     |      |     | N       |       |

| Insert_priv           | enum('N','Y')                     |      |     | N       |       |

| Update_priv           | enum('N','Y')                     |      |     | N       |       |

| Delete_priv           | enum('N','Y')                     |      |     | N       |       |



| Create_priv           | enum('N','Y')                     |      |     | N       |       |







| Drop_priv             | enum('N','Y')                     |      |     | N       |       |







| Reload_priv           | enum('N','Y')                     |      |     | N       |       |







| Shutdown_priv         | enum('N','Y')                     |      |     | N       |       |







| Process_priv          | enum('N','Y')                     |      |     | N       |       |







| File_priv             | enum('N','Y')                     |      |     | N       |       |







| Grant_priv            | enum('N','Y')                     |      |     | N       |       |







| References_priv       | enum('N','Y')                     |      |     | N       |       |







| Index_priv            | enum('N','Y')                     |      |     | N       |       |







| Alter_priv            | enum('N','Y')                     |      |     | N       |       |







| Show_db_priv          | enum('N','Y')                     |      |     | N       |       |







| Super_priv            | enum('N','Y')                     |      |     | N       |       |







| Create_tmp_table_priv | enum('N','Y')                     |      |     | N       |       |







| Lock_tables_priv      | enum('N','Y')                     |      |     | N       |       |







| Execute_priv          | enum('N','Y')                     |      |     | N       |       |







| Repl_slave_priv       | enum('N','Y')                     |      |     | N       |       |







| Repl_client_priv      | enum('N','Y')                     |      |     | N       |       |







| ssl_type              | enum('','ANY','X509','SPECIFIED') |      |     |         |       |







| ssl_cipher            | blob                              |      |     |         |       |







| x509_issuer           | blob                              |      |     |         |       |







| x509_subject          | blob                              |      |     |         |       |







| max_questions         | int(11)                           |      |     | 0       |       |







| max_updates           | int(11) unsigned                  |      |     | 0       |       |







| max_connections       | int(11) unsigned                  |      |     | 0       |       |







+-----------------------+-----------------------------------+------+-----+---------+-------+





31 rows in set (0.29 sec)

Terlihat ada penambahan 14 baris privileges baru, seperti super_priv, max_connections, dsbnya.. Tetapi untuk sementara ini kita tidak akan bahas dulu secara detail. Sekarang kita kembali ke bahasan sebelumnya yach..

Untuk saat ini kita perlukan hanya 3 kolom pertama saja, yaitu kolom (field) host, user dan password:

mysql> SELECT user, host, password FROM user ;







+------+-----------+--------------+







| user | host      | password     |







+------+-----------+--------------+







| root | localhost |              |







| root |     %     |              |







|      | localhost |              |







|      |     %     |              |







+------+-----------+--------------+







4 rows in set (0.00 sec)

Nah, dari sini baru ketahuan kenapa bisa terjadi siapa saja nyelonong ke dalam mysql kita. Perhatikan deh, untuk user root (ada 2 baris) sama sekali tidak memiliki password apapun. Dan kemudian, ada user yang 'kosong' (ada 2 baris, tidak bernama, tidak berwujud) dan anehnya lagi tidak ber-password. Kesemuanya ini SANGAT SANGAT BERBAHAYA! Untuk itu harus diambil tindakan tegas! (hehehe... seperti aparat keamanan aja yach gaya bicaranya...:))

Tindakan keamanan pertama: Hapus user yang tidak berwujud itu:

mysql> DELETE FROM user WHERE user=' ' ;





Query OK, 2 rows affected (0.00 sec)

Keliatannya sudah OK nih. Tapi coba kita periksa lagi:

mysql> SELECT user, host, password FROM user ;







+------+-----------+--------------+







| user | host      | password     |







+------+-----------+--------------+







| root | localhost |              |







| root |     %     |              |

+------+-----------+--------------+

2 rows in set (0.00 sec)

Ternyata emang OK tuch. User yang tidak berwujud itu telah lenyap.

Tugas selanjutnya, atau tindakan pengamanan kedua adalah memberikan password kepada root. Tapi omong-omong kayaknya kita perlu 'Tea Break' dulu nich...Bolehkan?! Nanti kita lanjut lagi. Janji dech.. gak lama kok...:)

Pembuatan Password Untuk root

Anda sudah tea break? Gimana, lebih segar kan sekarang? Sampai dimana pembahasan kita terakhir? Oh ya, kita sudah berhasil menginstall MySQL, menjalankan MySQL, tapi kemudian kita heran kok begitu mudah kita 'nyelonong' masuk ke MySQL (tanpa harus login, tanpa harus memberikan password). Lalu kita tahu sumber penyakitnya ada dimana. Tahap pengamanan pertama sudah kita lakukan, yaitu menghapus user 'tanpa wujud'. Sekarang kita lakukan tahap pengamanan kedua: pembuatan password untuk root.

Kita periksa kembali hasil yang lalu:

<mysql> SELECT user, host, password FROM user ;

+------+-----------+----------+

| user | host      | password |

+------+-----------+----------+

| root | localhost |          |

| root |     %     |          |

+------+-----------+----------+

2 rows in set (0.00 sec)

Yang akan kita lakukan sekarang adalah mengisi kolom password yang kosong tersebut dengan sebuah password yang HANYA Anda saja yang tahu. Perintah yang digunakan adalah:

UPDATE nama_tabel SET nama_kolom_dengan_kriteria WHERE kriteria ;

Ok, sekarang kita coba dengan perintah sebagai berikut:

mysql> UPDATE user SET password=password('rahasiaanda')

    -> WHERE user='root';

Query OK, 2 rows affected (0.00 sec)

Setelah itu dilanjutkan dengan mengetikkan perintah:

mysql> FLUSH PRIVILEGES ;

Query OK, 0 row affected

Perintah FLUSH PRIVILEGES adalah suatu perintah untuk mengaktifkan perubahan-perubahan yang terjadi pada user, seperti hak akses, penggantian password pada user, dsb. Mengenai perintah ini akan dibahas lebih lanjut nanti pada bagian Manajemen User. Perintah FLUSH PRIVILEGES ini hukumnya wajib dilaksanakan setelah Anda melakukan perubahan (apapun juga) secara langsung ke dalam tabel user atau ke dalam database mysql.

Keliatannya OK tuch... kita periksa yach:

mysql>  SELECT user, host, password FROM user ;

+------+-----------+--------------+

| user | host      | password     |

+------+-----------+--------------+

| root | localhost | xxxxxxxxxxx  |

| root |     %     | xxxxxxxxxxx  |

+------+-----------+--------------+

2 rows in set (0.00 sec)

Pada kolom password kita lihat sudah berubah isinya menjadi 'xxxxxxxxx' (sengaja saya sembunyikan...hehehe). Bentuk ini merupakan hasil pengacakan yang dilakukan oleh MySQL dengan menggunakan fungsi password(). Jadi, anda tidak bisa menebak-nebak apa bentuk asli dari karakter2 tersebut. Nah, untuk keamanan anda, hanya ANDA saja yang tahu apa password yang digunakan tersebut. Hanya anda saja yang INGAT apa password tersebut. Tapi bagaimana kalau kita lupa? Nah, sebagai root anda masih bisa untuk mengutak-ngatik password. Tapi itu nanti, kita bahas di bab-bab berikutnya.

Eh, apa tugas kita sudah selesai sampai disini? Apa semuanya berjalan sesuai dengan skenario? Belum tentu! Lho? Iya, kita harus coba dulu yach:

Sekarang keluar dulu dari sistem MySQL:

mysql> quit

bye

Kita masuk lagi ke mysql:

c:\apache\mysql\bin> mysql <enter>

Error 1045: Access denied for user 'ODBC@localhost' (using password: NO)

Lho kok error? Nah itu tandanya perintah2 yang kita lakukan sebelumnya sudah mulai bereaksi (heh? kayak makan obat aja ...udah bereaksi)

Kita kembali masuk lagi dengan bentuk perintah yang sedikit berbeda:

mysql -u nama_user -h nama_host -p

Maksudnya apa tuch? Kok makin bertele-tele perintahnya?
Sabar, nanti saya jelaskan. Sekarang ikuti dulu perintah dibawah ini:

c:\apache\mysql\bin> mysql -u root -h localhost -p

Enter password:************

Ketikkan password anda yang tadi (rahasia anda kan?)

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is xx to server version: 3.23.47-nt.

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> _

Ah...selamat kita. Ternyata sudah bisa masuk nih. Lega rasanya. Sekarang semuanya sudah jelaskan? Tidak ada lagi seorang pun yang tidak terdaftar dapat nyelonong ke sistem kita. Sekarang, kita coffee break dulu yach...:) Nanti, saya akan jelaskan soal apa sih maksudnya 'localhost', apa sih maksudnya tanda '%'... Tapi itu nanti yach...

 

Localhost atau %?

Masih ingat dengan penggunaan localhost dan %? Tidak? OK.. kita lihat lagi deh contoh-contoh sebelumnya:

 mysql>  SELECT user, host, password FROM user ;

+------+-----------+--------------+

| user | host      | password     |

+------+-----------+--------------+

| root | localhost | xxxxxxxxxxx  |

| root |     %     | xxxxxxxxxxx  |

+------+-----------+--------------+

2 rows in set (0.00 sec)

Nah, tampilan diatas adalah isi dari tabel user. Kita cuma punya satu user saat ini, yaitu root (yang tidak lain adalah anda sendiri...:)). Passwordnya..ada tuch (tapi diacak). Host, bisa diartikan nama server dimana kita mengakses MySQL. Isi kolom host ada dua, yaitu localhost dan %. Kita telaah satu per satu yach...

Localhost berarti tempat dimana program MySQL server berada. Kalau anda menyimpan program-program MySQL di komputer anda saat ini dan anda langsung mengaksesnya dari sana, itu berarti komputer anda adalah localhost.

Tanda % itu maksudnya anda melakukan pengaksesan MySQL dari mana saja (tidak selalu dari localhost). Misalkan, anda sering bepergian ke luar negeri,sedangkan anda harus rutin untuk mengakses server MySQL tersebut, maka anda harus diberikan tanda % pada nama hostnya.

Konsep persen (%) ini agak membingungkan pada awalnya. Karena, sebenarnya kita bisa saja mengakses server MySQL kita dengan program TELNET yang berarti seolah-olah langsung mengakses server dari tempat kita duduk, berarti konsepnya akan sama dengan localhost.

Bagaimana cara kita untuk membuat user baru, dan menentukan lokasi dimana dia bisa mengakses akan kita bahas pada bab-bab berikutnya: Manajemen User pada MySQL. Untuk selanjutnya, yang akan kita bahas adalah: Perintah-perintah Dasar MySQL. Setuju?!

Perintah-perintah Dasar MySQL

Pada tutorial yang lalu, sebenarnya kita telah menggunakan beberapa perintah dasar MySQL, seperti USE, SELECT, UPDATE, dsb. Dan kita akan bahas lagi perintah-perintah tersebut.

Catatan:

Untuk menggantikan istilah sistem prompt, saya akan menggunakan simbol # atau $ (merujuk ke sistem Linux/Unix). Bagi Anda yang menggunakan Windows, anggap saja simbol # dan $ ini sebagai simbol DOS Prompt (atau Command Prompt). Sama saja kan?

 

Menjalankan MySQL

Bentuk Umum

mysql nama_database -u nama_user -h nama_host -p kata_sandi_atau_password

Contoh:

# mysql latih1db -u arbie -h localhost -p <enter>

Enter password:

Hal diatas dapat dijalankan kalau Anda sudah memiliki sebuah database dengan nama latih1db. Bila Anda memang mengakses komputer yang berada satu tempat dengan server MySQL, kata 'localhost' bisa dihilangkan menjadi:

# mysql -u arbie -p <enter>

Enter password:

Bila Anda sebagai root pada komputer tersebut, maka nama 'root' juga bisa dihilangkan menjadi:





# mysql -p <enter>



Enter password:



Tetapi, Anda jangan sekali-kali mengetikkan kata sandi langsung setelah perintah -p, seperti:





# mysql -pkata_sandi <enter> 



Ini SANGAT berbahaya sekali! Kemungkinannya sangat besar bagi orang lain untuk 'mencuri pandang' pada password yang diketikkan tersebut. Terutama bagi mereka yang menggunakan Unix/Linux, perintah ps dapat dilakukan oleh siapa saja yang bisa memonitoring proses apa yang sedang dilakukan oleh user lain. Jadi, tetaplah pada bentuk yang lebih aman, yaitu:

mysql nama_database -u nama_user -h nama_host -p <enter>

Catatan (terutama bagi non-windows):

Bagaimana kalau program mysql server berada pada komputer yang berbeda dengan komputer kita mengaksesnya? Sebenarnya sederhana saja, ganti saja kata localhost dengan nama server atau alamat server dimana mysql tersebut berada.

Contoh:





# mysql latih1db -u arbie -h> 202.155.10.10 -p <enter>



Enter password:







Atau:







# mysql latih1db -u arbie -h www.arbiedesign.com -p <enter>



Enter password:



 Keluar Dari MySQL

Bentuk Umum

Quit atau Exit

Perintah Quit atau Exit merupakan perintah yang tidak perlu diakhiri tanda ; sebagai akhiran perintah.

 

Contoh:

 
mysql> quit







atau







mysql> exit



Memilih Database

Bentuk Umum

USE nama_database

Contoh:





mysql> USE test ;



mysql> USE mysql ;



Atau dengan cara lain, Anda bisa langsung mengaktifkan database mulai dari saat Anda login ke MySQL, dengan cara:





# mysql test -u nama_user -h localhost -p <enter>



# mysql mysql -u nama_user -h localhost -p <enter>



Dengan perintah diatas, begitu Anda masuk ke mysql maka akan langsung memilih dan mengaktifkan database test atau database mysql.

Melihat Isi Database

Bentuk Umum

SHOW TABLES ;

Bila di dalam database tersebut telah berisi tabel, maka nama-nama tabel akan ditampilkan di layar. Tapi, bila databasenya masih kosong, maka sistem akan menampilkan pesan:

Empty set (0.01 sec)



 
 
 
 
 
 
 
 
 
 
 

 

Melihat Struktur Table

Bentuk Umum

SHOW COLUMNS FROM nama_tabel ;
atau
DESCRIBE
nama_tabel ;

 

Contoh:

mysql> SHOW COLUMNS FROM user;



mysql> SHOW COLUMNS FROM db ;



atau

 
mysql> DESCRIBE user ;



mysql> DESCRIBE db ;



Bagaimana? Mau istirahat dulu atau kita lanjutkan pada membuat database baru, membuat tabel baru, dsb? Kalau mau melanjutkan... ya mari kita lanjutkan....

Perintah-perintah Dasar MySQL (lanjutan)

Sekarang kita coba untuk membuat database, menghapus database, membuat tabel, menghapus tabel, mengubah tabel, dan sebagainya. Sudah siap? Yuk..kita lanjutkan yach...

Membuat Database Baru

Bentuk Umum

CREATE DATABASE nama_database ;

Contoh:

mysql> CREATE DATABASE latih1db ;



mysql> CREATE DATABASE karyawandb ;



mysql> CREATE DATABASE personalia ;

Menghapus Database

Bentuk Umum

DROP DATABASE nama_database ;

Menghapus dalam MySQL diberi nama 'DROP'. Hati-hati dengan perintah ini, karena sistem MySQL tidak akan memberi peringatan atau konfirmasi dahulu kepada kita untuk melanjutkan proses atau membatalkan proses. Begitu perintah ini dilaksanakan, seluruh isi database (berikut semua tabel-tabel yang ada didalamnya dan semua recordnya) akan dihapus dan tidak bisa dibatalkan. Menghilang tertelan bumi!

Contoh:

mysql> DROP DATABASE latih1db ;



mysql> -DROP -DATABASE karyawandb ;



mysql> -DROP -DATABASE personalia ;

 

 

 

 

Membuat Tabel Baru

Bentuk Umum

CREATE TABLE nama_tabel (nama_kolom1 spek_kolom1, ..., nama_kolom_berikutnya spek_kolom_berikutnya) ;

Sebelumnya, kita ulangi pembuatan database baru dan kita beri nama personaliadb. Setelah database baru tersebut ada, kita aktifkan dengan perintah use.

Contoh:

mysql> CREATE DATABASE personaliadb ;



Query OK, 1 row affected (0.02 sec)

Kalau anda mau memeriksa ada tidaknya database personaliadb, silakan periksa dengan perintah SHOW DATABASES. Masih ingat kan caranya? Kalau lupa, silakan intip dech disini.

mysql> USE personaliadb ;



Database changed

Sekarang kita coba bikin sebuah tabel yang kita beri nama tabel karyawan.

mysql> CREATE TABLE karyawan ;



ERROR 1113: A table must have at least 1 column.

Kenapa error? Ya, karena untuk membuat sebuah tabel kita harus mempunyai minimal 1 kolom (atau 1 field) saja. Kita coba lagi sebagai berikut:

mysql> CREATE TABLE karyawan



    -> (noid INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,



    ->  nama VARCHAR(35) NOT NULL)



    ->  ;



Query OK, 0 rows affected (0.01 sec)

Agak menakutkan perintahnya? Jangan gentar dulu. Ini baru membuat sebuah tabel yang sangat sederhana, terdiri dari dua kolom (field) noid dan nama. Kita akan bahas sepintas tentang perintahnya sebagai berikut:

Kolom noid, merupakan nomor identitas karyawan, yang bersifat INT (bilangan integer atau bilangan bulat), UNSIGNED maksudnya selalu bernilai positif (tidak ada tanda - atau negatif), AUTO_INCREMENT berarti nilai selanjutnya merupakan nilai sebelumnya ditambah nilai satu, PRIMARY KEY berarti kolom noid merupakan kolom indeks. Dalam satu tabel hanya boleh ada satu PRIMARY KEY.

Kemudian pada kolom nama, diberi lebar sebanyak 35 karakter (bisa menampung nama sepanjang maksimum 35 karakter, kurang dari 35 karakter juga OK-OK aja), Pembahasan lebih detail mengenai hal diatas akan kita bahas di bagian Konsep Database. Jangan takut, semuanya bisa dan mudah dipelajari kok...:).

Untuk meyakinkan bahwa tabel karyawan sudah berhasil kita buat, silakan diperiksa dengan perintah dibawah ini:

mysql> SHOW TABLES ;



+------------------------+



| Tables_in_personaliadb |



+------------------------+



| karyawan               |



+------------------------+



1 row in set (0.00 sec)

 

Melihat Struktur Table

Bentuk Umum

SHOW COLUMNS FROM nama_tabel ;
atau
DESCRIBE
nama_tabel ;

Contoh:





mysql> DESCRIBE karyawan ;

atau

mysql> SHOW COLUMNS FROM karyawan ;

Dan hasilnya akan sama saja:

+------+-----------------+-----+-----+---------+-----------------+



|Field | Type            |Null | Key | Default |Extra            |



+------+-----------------+-----+-----+---------+-----------------+



|noid  |int(10) unsigned |     | PRI | NULL    | auto_increment  |



|nama  |varchar(35)      |     |     |         |                 |



+------+-----------------+-----+-----+---------+-----------------+



2 rows in set (0.02 sec)

Menghapus Tabel

Bentuk Umum

DROP TABLES nama_tabel ;

Untuk menghapus tabel, bentuk perintahnya mirip dengan menghapus database. Kehati-hatian (extra) pun sangat diperlukan disini. Karena sistem MySQL tidak akan menanyakan konfirmasi ulang kepada anda untuk menghapus maupun membatalkan penghapusan tabel. Tabel beserta dengan seluruh isinya akan dihapus tanpa bisa dibatalkan (undelete atau undo kalau di Windows).

Sebagai contoh kita buat dulu tabel lain, namakan saja tabel contoh1:

mysql>  CREATE TABLE contoh1



    ->  (noid INT )



    ->  ;



Query OK, 0 rows affected (0.00 sec)

Kemudian kita hapus:

mysql>  DROP TABLE contoh1 ;



Query OK, 0 rows affected (0.00 sec)

Kita periksa lagi:

mysql>  SHOW TABLES ;



Empty set (0.01 sec)

Ah... topik hari ini kita cukupkan sekian dulu yach... Selanjutnya, akan kita bahas cara pengisian tabel dengan data-data, pengeditan record, dan sebagainya...

 

Perintah-perintah Dasar MySQL

Sekarang kita coba untuk mengisi data ke dalam tabel, mengubah data tabel, menghapus data, dan sebagainya. Sudah siap? Yuk..kita lanjutkan yach...

Sebelumnya kita buat dahulu tabel karyawan (ini bagi mereka yang telah menghapus tabel karyawan sebelumnya, dan sekarang kita buat lagi yang lebih lengkap kolomnya) sebagai berikut:

 

mysql> CREATE TABLE karyawan



    -> (noid INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,



    -> nama VARCHAR(35) NOT NULL,



    -> kelamin VARCHAR(2),



    -> kota VARCHAR(25),



    -> tgllahir DATE NULL DEFAULT "0000-00-00")



    -> ;



Query OK, 0 rows affected (0.02 sec)

Sementara ini kita tidak akan bahas secara rinci tentang atribut pada kolom-kolom tersebut. Nanti ada bab khusus untuk itu yach... OK?!

 

 

 

 

Mengisi Data Baru

Bentuk Umum 1

INSERT INTO nama_tabel (nama_kolom1, nama_kolom2, ...)
VALUES (data_kolom1, data_kolom2, ...) ;

Contoh:

mysql> INSERT INTO karyawan



    -> (nama, kelamin, kota, tgllahir)



    -> VALUES ("Ahmad Subari","L","Bandung","1977-01-01")



    -> ;



Query OK, 1 row affected (0.03 sec)

Jangan lupa kita periksa. Eh... tapi perintah untuk menampilkan data di tabel apa yach?

Menampilkan Data

Bentuk Umum

SELECT nama_kolom1, nama_kolom2, ... FROM nama_tabel
WHERE
kriteria SORT BY kriteria

Contoh:

mysql> SELECT noid, nama, kelamin, kota, tgllahir



    -> FROM karyawan



    -> ;



+------+--------------+---------+---------+------------+



| noid | nama         | kelamin | kota    | tgllahir   |



+------+--------------+---------+---------+------------+



|    1 | Ahmad Subari | L       | Bandung | 1977-01-01 |



+------+--------------+---------+---------+------------+



1 row in set (0.01 sec)

Perintah untuk menampilkan seluruh kolom dapat juga diberikan dengan simbol * (asterik atau bintang), sehingga perintah diatas dapat juga kita tuliskan:

mysql> SELECT * FROM karyawan ;



+------+--------------+---------+---------+------------+



| noid | nama         | kelamin | kota    | tgllahir   |



+------+--------------+---------+---------+------------+



| 1    | Ahmad Subari | L       | Bandung | 1977-01-01 |



+------+--------------+---------+---------+------------+



1 row in set (0.01 sec)

Pengisian data diatas baru menggunakan bentuk pertama, bentuk lainnya kita coba sama-sama yach...

 

 

Mengisi Data Baru (bentuk lainnya)

Bentuk Umum 2

INSERT INTO nama_tabel SET nama_kolom1 = data_kolom1,
nama_kolom2 = data_kolom2, ..

Contoh:

mysql> INSERT INTO karyawan



    -> SET nama= "Rini Suwandito",



    -> kelamin= "P",



    -> kota= "Jakarta",



    -> tgllahir ="1978-01-02",



    -> ;



Query OK, 1 row affected (0.03 sec)

Dibanding dengan cara pertama, maka cara kedua ini lebih jelas posisi data akan diletakkan pada kolom (field) mana saja. Hanya saja, bila jumlah data yang akan kita masukkan banyak, maka dengan cara kedua ini sangat merepotkan sekali..(paling tidak akan membuat otot-otot jari anda membesar...hehe). Baiklah, sekarang kita lihat hasil dari perintah kedua ini..

mysql> SELECT * FROM karyawan ;



+------+----------------+---------+---------+------------+



| noid | nama           | kelamin | kota    | tgllahir   |



+------+----------------+---------+---------+------------+



| 1    | Ahmad Subari   | L       | Bandung | 1977-01-01 |



| 2    | Rini Suwandito | P       | Jakarta | 1978-01-02 |



+------+----------------+---------+---------+------------+



2 row in set (0.01 sec)

Ya, semua data sudah masuk ke dalam database. Sekarang kita coba pemasukkan data dengan cara Ketiga.

Bentuk Umum 3

INSERT INTO nama_tabel VALUES
(data1, data2, ..., data_ke_n)

Contoh:

mysql> INSERT INTO karyawan



    -> VALUES ("Boy Sungkar","L","Cimahi","1979-03-01")



    -> ;



ERROR 1136: Column count doesn't match value count at row 1

Lho, kok error? Kenapa nich? Perhatikan pada pesan error yang terjadi. Disana dinyatakan bahwa jumlah kolom tidak sesuai dengan jumlah masukan data yang ada. OK..OK.. pelan-pelan yach...

Kita ingat kalo jumlah kolom ada 5, yaitu noid, nama, kelamin, kota dan tgllahir. Sedangkan data yang kita masukkan untuk 4 kolom saja, yaitu nama, kelamin, kota dan tgllahir. Jadi, gimana duonk dengan nasibnya kolom noid? Masa dicuekin aja sich? Itu sebabnya jadi error... Walaupun kolom noid ini sifatnya AUTO_INCREMENT, khusus untuk bentuk ketiga ini dia harus diisi juga dengan nilai DEFAULTNYA yaitu "NULL". Sehingga perintah diatas kita ubah sedikit menjadi...

mysql> INSERT INTO karyawan



    -> VALUES ("NULL","Boy Sungkar","L","Cimahi","1979-03-01")



    -> ;



Query OK, 1 row affected (0.03 sec)

Haaahh! OK tuch... kita lihat yach...

mysql>SELECT * FROM karyawan ;



+------+----------------+---------+---------+------------+



| noid | nama           | kelamin | kota    | tgllahir   |



+------+----------------+---------+---------+------------+



| 1    | Ahmad Subari   | L       | Bandung | 1977-01-01 |



| 2    | Rini Suwandito | P       | Jakarta | 1978-01-02 |



| 3    | Boy Sungkar    | L       | Cimahi  | 1979-03-02 |



+------+----------------+---------+---------+------------+



3 row in set (0.01 sec)

Fiuhhh... capek juga yach,..tapi asik kok... Masih kuat kan untuk melanjutkan???

 

Terakhir diperbaharui ( 09 August 2005 )

 

Perintah-perintah Dasar MySQL (lanjutan)

Terakhir, kita sudah memasukkan data dengan tiga cara berbeda. Dan juga dengan konsekwensi yang berbeda. Anda mau yang mana, terserah anda (dan tergantung kebutuhan datanya ..tentunya). Nah, sekarang kita coba topik-topik lainnya....

Mengubah Struktur Tabel

Ada saatnya kita sadar kalo ternyata struktur tabel yang pernah kita buat perlu penyempurnaan. Penyempurnaan bisa dalam hal penambahan kolom, pengubahan lebar kolom, atau bisa saja penghapusan kolom dan sebagainya. Apa pun juga yang anda lakukan pada kolom tersebut tentu akan mempunyai dampak langsung pada data-data yang sudah ada. Nah, sekarang kita perlu menambahkan sebuah kolom baru, yaitu kolom kodepos, pada tabel karyawan yang selama ini kita gunakan.

Kita lihat dulu struktur tabel yang sudah ada....

mysql>DESCRIBE karyawan ;



+---------+-----------------+-----+-----+------------+----------------+



|Field    | Type            |Null | Key | Default    | Extra          |



+---------+-----------------+-----+-----+------------+----------------+



|noid     |int(10) unsigned |     | PRI | NULL       | auto_increment |



|nama     |varchar(35)      |     |     |            |                |



|kelamin  |char(2)          | YES |     | NULL       |                |



|kota     |varchar(25)      | YES |     | NULL       |                |



|tgllahir |date             | YES |     | 0000-00-00 |                |



+---------+-----------------+-----+-----+------------+----------------+



5 rows in set (0.02 sec)

<>Bentuk Umum

ALTER TABLE nama_tabel jenis_pengubahan

Jenis pengubahan yang dapat dilakukan antara lain penambahan kolom (ADD), penghapusan kolom dan indeks (DROP), penggantian nama kolom sekaligus jenis kolomnya (RENAME), dan pengubahan jenis kolom (MODIFY). Nanti kita jelaskan secara rinci yach...

Sekarang kita coba untuk menambah kolom baru saja dulu...

mysql>ALTER TABLE karyawan ADD kodepos VARCHAR(5) ;



Query OK, 0 rows affected (0.04 sec)



Records: 0 Duplicates: 0 Warnings: 0

Lihat hasilnya seperti apa ...

mysql>DESCRIBE karyawan ;



+---------+-----------------+-----+-----+------------+----------------+



|Field    | Type            |Null | Key | Default    | Extra          |



+---------+-----------------+-----+-----+------------+----------------+



|noid     |int(10) unsigned |     | PRI | NULL       | auto_increment |



|nama     |varchar(35)      |     |     |            |                |



|kelamin  |char(2)          | YES |     | NULL       |                |



|kota     |varchar(25)      | YES |     | NULL       |                |



|tgllahir |date             | YES |     | 0000-00-00 |                |



|kodepos  |varchar(5)       | YES |     | NULL       |                |



+---------+-----------------+-----+-----+------------+----------------+



5 rows in set (0.02 sec)

Setelah struktur tabel berhasih diubah, apa pengaruhnya pada data-data yang ada? Dan kemudian bagaimana caranya kita mengisi data kodepos yang belum masuk ke tabel karyawan? Mari kita lihat dulu isi tabel karyawan...

mysql>SELECT * FROM karyawan ;



+------+----------------+---------+---------+------------+---------+



| noid | nama           | kelamin | kota    | tgllahir   | kodepos |



+------+----------------+---------+---------+------------+---------+



| 1    | Ahmad Subari   | L       | Bandung | 1977-01-01 | NULL    |



| 2    | Rini Suwandito | P       | Jakarta | 1978-01-02 | NULL    |



| 3    | Boy Sungkar    | L       | Cimahi  | 1979-03-02 | NULL    |



+------+----------------+---------+---------+------------+---------+



3 row in set (0.01 sec)

Perhatikan bahwa pada kolom kodepos diisi dengan NULL, dimana NULL adalah nilai default suatu kolom bila tidak memiliki nilai apapun juga. Cukup jelas kan?

Nah, untuk mengisi data kodepos silakan intip disini...

 

Mengubah Data

Bentuk Umum

UPDATE nama_tabel SET nama_kolom=pengubahan_data
WHERE
kriteria

 

Contoh:

mysql> UPDATE karyawan SET kodepos="40111"

    -> WHERE nama="Ahmad Subari"

    -> ;

Query OK, 1 rows affected (0.01sec)

Rows matched: 1 Changed: 1 Warnings: 0





mysql> UPDATE karyawan SET kodepos="40222"

    -> WHERE noid="2"

    -> ;

Query OK, 1 rows affected (0.01sec)

Rows matched: 1 Changed: 1 Warnings: 0

Kita periksa dulu hasilnya..

mysql>SELECT * FROM karyawan ;

+------+----------------+---------+---------+------------+---------+

| noid | nama           | kelamin | kota    | tgllahir   | kodepos |

+------+----------------+---------+---------+------------+---------+

| 1    | Ahmad Subari   | L       | Bandung | 1977-01-01 | 40111   |

| 2    | Rini Suwandito | P       | Jakarta | 1978-01-02 | 40222   |

| 3    | Boy Sungkar    | L       | Cimahi  | 1979-03-02 | NULL    |

+------+----------------+---------+---------+------------+---------+

3 row in set (0.01 sec)

Ternyata gampang kan?

Nah, sampai disini kita sudah memasukkan data secara satu per satu. Sekarang bagaimana caranya kalo kita mau memasukkan data secara kolektif. Misalkan ada 10 data lagi yang harus kita masukkan kedalam tabel karyawan. Nah gimana tuch?

Bisa aja sich..... salah satu caranya seperti dibawah ini...

mysql> INSERT INTO karyawan

    -> VALUES

    -> ("NULL","Dion","L","Bogor","1978-02-02","40123"),

    -> ("NULL","Celine","P","Jakarta","1976-05-22","40333"),

    -> ("NULL","Deemaz","L","Jakarta","1977-07-07","40223"),

    -> ("NULL","Zachryal","L","Bogor","1979-04-11","40331"),

    -> ("NULL","Erika Sulaeman","P","Cimahi","1980-09-19","40228"),

    -> ("NULL","Fahrudin","L","Soreang","1978-11-02","40423"),

    -> ("NULL","Halimun","P","Bandung","1979-08-11","40123"),

    -> ("NULL","Gempitawati","P","Bandung","1978-08-22","40334"),

    -> ("NULL","Wawan Suriawan","L","Jakarta","1977-07-09","40323"),

    -> ("NULL","Taufik Hidayah","L","Bogor","1978-09-17","40132"),

    -> ("NULL","Dion","L","Bogor","1978-02-02","40123"),

    -> ;

Query OK, 11 rows affected (0.01sec)

 

 

Wah...lumayan ya... otot jari tangan serasa membesar...:) Eh, itu baru 11 data lho... coba bayangkan ada 20, 30, 100 data... Gimana donk?! Ya udah kalo cape, sekarang istirahat aja dulu yach... Tapi sebelum istirahat mari kita lihat dulu apa data-datanya sudah masuk semua?

mysql>SELECT * FROM karyawan ;

+------+----------------+---------+---------+------------+---------+

| noid | nama           | kelamin | kota    | tgllahir   | kodepos |

+------+----------------+---------+---------+------------+---------+

| 1    | Ahmad Subari   | L       | Bandung | 1977-01-01 | 40111   |

| 2    | Rini Suwandito | P       | Jakarta | 1978-01-02 | 40222   |

| 3    | Boy Sungkar    | L       | Cimahi  | 1979-03-02 | NULL    |

| 4    | Dion           | L       | Bogor   | 1978-02-02 | 40123   |

| 5    | Celine         | P       | Jakarta | 1976-05-22 | 40333   |

| 6    | Deemaz         | L       | Jakarta | 1977-07-07 | 40223   |

| 7    | Zachryal       | L       | Bogor   | 1979-04-11 | 40331   |

| 8    | Erika Sulaeman | P       | Cimahi  | 1980-09-19 | 40228   |

| 9    | Fahrudin       | L       | Soreang | 1978-11-02 | 40423   |

| 10   | Halimun        | P       | Bandung | 1979-08-11 | 40123   |

| 11   | Gempitawati    | P       | Bandung | 1978-08-22 | 40334   |

| 12   | Wawan Suriawan | L       | Jakarta | 1977-07-09 | 40323   |

| 13   | Taufik Hidayah | L       | Bogor   | 1978-09-17 | 40132   |

| 14   | Dion           | L       | Bogor   | 1978-02-02 | 40123   |

+------+----------------+---------+---------+------------+---------+

14 row in set (0.01 sec)

Nah, sekarang boleh dech kita istirahat dulu yach... Kita lanjut besok pagi.. OK?!

 

Mengisi Data Masal (bag.1)

Ini dia masalahnya. Bagaimana caranya mengisi data yang banyaaak sekali tanpa harus memasukkannya satu per satu? Bayangkan aja ada 1.000 atau 10.000 data harus diketikkan, wah bisa-bisa urusan anak istri di rumah (bagi yang udah berkeluarga) ato urusan si-doi (bagi yang gak jomblo) jadi terlupakan. Harus ada dong cara yang lebih "manusiawi" sedikit.

Kalau kita mengetikkan data satu per satu, akan terjadi hal-hal yang tidak diinginkan terjadi karena faktor kelelahan, faktor salah ketik, salah baca.. dan salah-salah lainnya. Begitupun sang "MySQL System" akan selalu tega untuk menampilkan pesan error walaupun kita hanya kelupaan mengetikkan satu tanda kutip (misalnya). Akibatnya, kita harus mengulang dari awal pemasukkan data... Huah..gak janji dech...Ujung-ujungnya pasti bete berat dan gak mau lagi belajar MySQL... :(

Supaya gak bete nantinya, coba dech perhatiin cara-cara pemasukan data secara masal di bawah ini yach..:

Cara Pertama: File Teks Dengan Ekstensi .sql

Bentuk Umum

# mysql -h nama_server -u nama_user -p nama_database < nama_file.sql

Singkatnya, kita buat sebuah file teks biasa yang berisi perintah-perintah mysql untuk pemasukan data. File ini kita simpan dengan nama yang diakhiri .sql (jangan sampai lupa lho). Kemudian, file tersebut kita simpan ke dalam direktori data (atau direktori mana saja tempat kita aktif menjalankan mysql). Kita aktifkan program mysql dari System Prompt dan langsung menjalankan file teks tersebut. Bingung?

Baiklah supaya tidak bingung kita akan langsung praktekkan saja bersama-sama. Saya sudah membuatkan untuk anda 3 buah file teks yang berbeda (3 versi lho) untuk pengisian data, dengan nama isidatacara1a.sql, isidatacara1b.sql dan isidatacara1c.sql Gak usah repot-repot ngetik, tinggal didownload aja.. Coba, gimana gak kurang baik nich saya..hehe..

Perbedaan yang saya lakukan adalah pada metoda pengisiannya. Pada file isidatacara1a.sql saya menggunakan perintah:

 

INSERT INTO KARYAWAN



VALUES



("NULL","Data Ganda","L","Bogor","1978-02-02","40123"),...dst



....

Perhatikan bahwa saya tidak menyebutkan nama field, sehingga perintah VALUES harus dilakukan sesuai dengan urutan fieldnya (kolomnya) secara fisik. Lupa urutan kolom secara fisik? Pakai saja perintah DESCRIBE nama_tabel yach untuk melihat struktur tabel...

Pada file isidatacara1b.sql saya menggunakan perintah:

INSERT INTO KARYAWAN



(noid, nama, kelamin, kota, tgllahir, kodepos)



VALUES



("NULL","Data Ganda1b","L","Bogor","1978-02-02","40123"),... dst



....

Perhatikan bahwa saya menyebutkan nama field, yaitu (noid, nama, kelamin, kota, tgllahir, kodepos) dan pengisian data sesuai dengan urutan penyebutan nama field. Bisa saja urutan nama field tidak sesuai dengan urutan fisiknya. Suka-suka anda lah...

Sedangkan pada file isidatacara1c.sql saya menggunakan perintah:

INSERT INTO KARYAWAN



(nama, kelamin, kota, tgllahir, kodepos)



VALUES



("Data Ganda1c","L","Bogor","1978-02-02","40123"),



......

Perhatikan bahwa saya hanya menyebutkan 5 kolom dari 6 kolom data yang tersedia (kolom noid tidak disebutkan), dan isi perintah VALUES pun hanya untuk 5 kolom itu saja. Lalu bagaimana nasib si kolom noid? Itu pertanyaan buat anda. Tolong dijawab yach...

Catatan:

 

Bila ada istilah System Prompt, maka berarti anda mengaksesnya dari DOS PROMPT (pada Windows, C:\direktori data anda> ) atau dari LINUX PROMPT (pada Linux/Unix, #). Ini juga berarti status akses anda adalah sebagai Sang Pemilik Sistem alias ROOT (pada Linux/Unix) atau ADMIN (pada Windows).

Contoh:

Pertama, kita mengaksesnya dari SYSTEM PROMPT (atau DOS PROMPT)

[SYSTEM PROMPT] mysql -h localhost -u root -p personaliadb < isidatacara1a.sql



Enter Password: **********

Atau, misalkan Anda menyimpan file teks tersebut di dalam direktori C:\coba, maka perintah di atas dapat dimodifikasi menjadi:

mysql -h localhost -u root -p personaliadb < C:\coba\isidatacara1a.sql



Enter Password: **********

Tidak ada tanda-tanda bahwa perintah mysql tersebut berhasil dijalankan atau tidak. Satu-satunya cara adalah dengan memeriksanya langsung ke database personaliadb.

mysql>SELECT * FROM karyawan ;



+------+----------------+---------+---------+------------+---------+



| noid | nama           | kelamin | kota    | tgllahir   | kodepos |



+------+----------------+---------+---------+------------+---------+



|    1 | Data Ganda1a   | L       | Bogor   | 1978-02-02 | 40123   |



|    2 | Data Ganda1a   | L       | Bogor   | 1978-02-02 | 40123   |



|    3 | Data Ganda1a   | L       | Bogor   | 1978-02-02 | 40123   |



|    4 | Data Ganda1a   | L       | Bogor   | 1978-02-02 | 40123   |



|    5 | Data Ganda1a   | L       | Bogor   | 1978-02-02 | 40123   |



|    6 | Data Ganda1a   | L       | Bogor   | 1978-02-02 | 40123   |



...



...



|  100 | Data Ganda1a   | L       | Bogor   | 1978-02-02 | 40123   |



+------+----------------+---------+---------+------------+---------+



100 rows in set (0.01 sec)

Kurang lebih seperti itulah data-data yang tampil di layar (saya tidak menampilkan keseluruhan data dengan pertimbangan tidak cukup tampilan layarnya)... Silakan anda coba untuk file-file berikutnya (isidatacara1b.sql dan isidatacara1c.sql) dengan perintah yang sama....OK? Oh ya, contekkannya ada dibawah nich:

mysql -h localhost -u root -p personaliadb < isidatacara1b.sql



Enter Password: **********







atau:







mysql -h localhost -u root -p personaliadb < C:\coba\isidatacara1b.sql



Enter Password: **********

Sekarang untuk file teks isidatacara1c.sql:

mysql -h localhost -u root -p personaliadb < isidatacara1c.sql



Enter Password: **********







atau:







mysql -h localhost -u root -p personaliadb < C:\coba\isidatacara1c.sql



Enter Password: **********

Jangan lupa untuk memeriksa hasilnya yach...

Nah, itu baru cara pertama. Masih ada cara kedua untuk pemasukan data secara masal setelah yang satu ini...;)

 

 

Mengisi Data Masal (bag.2)

Cara pertama yang sudah kita bahas kemaren menggunakan file teks biasa (dan anda mengetiknya dengan text editor yang sederhana saja, seperti Notepad) dan kemudian disimpan dengan nama akhiran file (extension name) .sql

Cara kedua hampir sama, yaitu menggunakan file teks biasa dan kemudian disimpan dengan akhiran file (extension name) .txt

Cara Kedua: File Teks Dengan Ekstensi .txt

Bentuk Umum

mysql> LOAD DATA LOCAL INFILE "nama_file_teks" INTO TABLE nama_tabel

Singkatnya, kita buat sebuah file teks yang berisi perintah-perintah mysql untuk pemasukan data. File ini kita simpan dengan nama yang diakhiri .txt (jangan sampai lupa atau keliru dengan cara pertama lho). Penulisan data antar kolomnya (fieldnya) diberi pemisah dengan penekanan tombol TABS (TABS DELIMITER) dan setiap akhir baris kita tekan tombol ENTER. Kemudian, file tersebut kita simpan ke dalam direktori data (atau direktori mana saja tempat kita aktif menjalankan mysql). Kita aktifkan program mysql, dan jalankan file teks tersebut dari MySQL Prompt.

OK kita coba. Kita buat dulu sebuah file teks biasa (anda bisa menggunakan text editor sederhana Notepad), dan kita namakan isidatacara2.txt File isidatacara2.txt dapat anda peroleh disini...

Contoh:

Pertama, data-data yang ada di tabel karyawan kita hapus dulu (biar rapi keliatannya..ok?)

mysql> DELETE FROM karyawan ;



Query OK, 0 rows affected (0.01 sec)

Kedua, kita menjalankan perintah LOAD DATA dari MYSQL PROMPT (bukan dari SYSTEM PROMPT).

mysql> LOAD DATA LOCAL INFILE "isidatacara2.txt"



    -> INTO TABLE karyawan



    -> ;



Query OK, 100 rows affected (0.05 sec)



Records: 100 Deleted: 0 Skipped: 0 Warnings: 100

Atau,

mysql> LOAD DATA LOCAL INFILE "C:\\coba\\isidatacara2.txt"



    -> INTO TABLE karyawan



    -> ;



Query OK, 100 rows affected (0.05 sec)



Records: 100 Deleted: 0 Skipped: 0 Warnings: 100

Catatan:

Perhatikan diatas bahwa digunakan 2 garis miring (\\) sebagai pembatas nama direktori, bukannya tunggal (\). Ini karena tanda '\' dianggap sebagai karakter khusus oleh MySQL (disebut sebagai Escape Character).

Ada pesan dari sistem kalo perintah mysql berhasil dilaksanakan. Tapi, tidak ada salahnya kalo kita periksa juga kan...

mysql>SELECT * FROM karyawan ;



+------+----------------+---------+----------+------------+---------+



| noid | nama           | kelamin | kota     | tgllahir   | kodepos |



+------+----------------+---------+----------+------------+---------+



|   1  | Data Gandawan  | L       | Surabaya | 1979-09-09 | NULL    |



|   2  | Data Gandawan  | L       | Surabaya | 1979-09-09 | NULL    |



|   3  | Data Gandawan  | L       | Surabaya | 1979-09-09 | NULL    |



|   4  | Data Gandawan  | L       | Surabaya | 1979-09-09 | NULL    |



|   5  | Data Gandawan  | L       | Surabaya | 1979-09-09 | NULL    |



...



...



| 100  | Data Gandawan  | L       | Surabaya | 1979-09-09 | NULL    |



+------+----------------+---------+---------+------------+---------+



100 rows in set (0.01 sec)

Kurang lebih seperti itulah data-data yang tampil di layar (saya tidak menampilkan keseluruhan data dengan pertimbangan tidak cukup tampilan layarnya... Hmm bisa diterimakan alasannya?..)...

Itulah cara kedua. Dengan cara kedua ini, kelebihannya kita bisa "mengkawinkan" data-data dari program database apa saja (seperti Microsoft Access, dBASE, FoxPro,dsb) ke dalam MySQL dengan syarat diubah dulu kedalam bentuk file teks.

Sedangkan kelemahannya, kita tidak dapat "menyelipkan" perintah-perintah MySQL di dalam file teks tersebut. Jadi, hanya MURNI data-data saja!

Sudah jelas untuk 2 metoda pengisian data-data ini? Ada pertanyaan? Kalau tidak ada pertanyaan kita coffe break dulu.. Silakan....

Bagi yang sudah mau melanjutkan...silakan disini...

 

Menggunakan Perintah MySQL dalam file teks untuk membuat tabel dan isinya.

Dari sesi sebelumnya, kita sudah melakukan pengisian data dengan menggunakan file teks yang berisi perintah-perintah untuk mengisi data masl. Kalo diperhatikan, semua perintah-perintah tersebut dapat juga kita gunakan untuk membuat tabel dan sekaligus mengisi tabel tersebut. Nah, sekarang perintah-perintah apa saja yang akan kita gunakan?

Urutan langkah-langkahnya dapat diuraikan sebagai berikut:

Pertama, kita periksa dahulu apakah tabel karyawan2 sudah ada atau belum di dalam database personaliadb. Kalau sudah ada, maka tabel karyawan kita hapus dulu (ini sengaja, karena struktur tabel karyawan yang kita gunakan sekarang lebih komplit dari versi sebelumnya). Perintah yang digunakan adalah:

DROP TABLE IF EXISTS karyawan2;

Kedua, kita buat tabel karyawan yang baru dengan perintah:

CREATE TABLE karyawan2 (

noid INT(4) UNSIGNED NOT NULL PRIMARY KEY,

nama VARCHAR(50) NOT NULL,

kelamin ENUM("L","P") NOT NULL,

tempatlahir VARCHAR(35),

tgllahir DATE NOT NULL DEFAULT "0000-00-00",

alamat1 VARCHAR(35),

alamat2 VARCHAR(35),

kota VARCHAR(35),

kodepos CHAR(5),

telprmh VARCHAR(20),

ponsel VARCHAR(20)

);

Ketiga, baru kita isikan data-datanya antara lain dengan perintah:

INSERT INTO karyawan2

(noid, nama, kelamin, tempatlahir, tgllahir, alamat1, alamat2,

kota, kodepos, telprumah, ponsel)

VALUES

("NULL","Suwanto Dipura","L","Majalengka","03-02-1967",

"Jl. Madangkara No.11","RT.01 RW.01","Jakarta","12121",

"021-999999","NULL"),

("NULL","Mayangsariwati","P","Bogor","01-06-1977",

"Jl. Rawasari 12","RT 03 RW 02","Bandung","40256",

"022-0099909","0814-000100"), dst....

....

Secara lengkapnya, semua perintah-perintah tersebut saya simpan dalam file teks dengan nama buatdanisitabel.sql.
Seperti biasa silakan di download saja di sini....(thanks to me... hehehe)

Keempat, kita jalankan file buatdanisitabel.sql tersebut dengan perintah....

[SYSTEM PROMPT] mysql -h localhost -u root -p personaliadb < buatdanisitabel.sql

Enter Password: **********



atau:



[SYSTEM PROMPT] mysql -h localhost -u root -p personaliadb < c:\coba\buatdanisitabel.sql

Enter Password: **********

Kelima, jangan lupa untuk (selalu) memeriksa hasil kerjaan kita barusan....

mysql>SELECT * FROM karyawan2 ;

Keenam, kita lanjutkan nanti yach..... (mo lunch dulu nich....:))

Menampilkan data dengan kriteria tertentu.

Lumayanlah, sampai saat ini kita sudah memiliki database, tabel dan dilengkapi dengan sejumlah data. Kalo saja anda periksa isi tabel karyawan2, maka ada sekitar 25 buah data karyawan di dalamnya. Selama ini untuk menampilkan seluruh data, kita menggunakan perintah SELECT * FROM, yang mana bila datanya sangat banyak dan melebar, tidak akan cukup tampilan layar kita menampilkannya. Untuk itu, ada perintah lainnya yang dapat kita gunakan, yaitu dengan tambahan kriteria tertentu.

 

Bentuk Umum

SELECT kolom1,kolom2,kolomN FROM nama_tabel WHERE kriteria ORDER BY kriteria

Baiklah, kita mulai dengan cara menampilkan struktur tabel karyawan2 dulu supaya gak lupa

apa aja nama-nama kolomnya.

mysql> DESCRIBE karyawan2 ;



+------------+-----------------+-----+-----+------------+----------------+



|Field       | Type            |Null | Key | Default    | Extra          |



+------------+-----------------+-----+-----+------------+----------------+



|noid        |int(10) unsigned |     | PRI | NULL       | auto_increment |



|nama        |varchar(50)      |     |     |            |                |



|kelamin     |enum('L','P')    | YES |     | NULL       |                |



|tempatlahir |varchar(35)      | YES |     | NULL       |                |



|tgllahir    |date             |     |     | 0000-00-00 |                |



|alamat1     |varchar(35)      | YES |     | NULL       |                |



|alamat2     |varchar(35)      | YES |     | NULL       |                |



|kota        |varchar(35)      | YES |     | NULL       |                |



|kodepos     |varchar(35)      | YES |     | NULL       |                |



|telprumah   |varchar(20)      | YES |     | NULL       |                |



|ponsel      |varchar(20)      | YES |     | NULL       |                |



+------------+-----------------+-----+-----+------------+----------------+



11 rows in set (0.02 sec)

Menampilkan data kolom tertentu saja

Sekarang kita coba untuk menampilkan data kolom-kolom tertentu saja

mysql> SELECT noid, nama, kelamin, tempatlahir



    -> FROM karyawan2 ;



+------+---------------------+---------+----------------+



| noid | nama                | kelamin | tempatlahir    |



+------+---------------------+---------+----------------+



|    1 | Suwanto Dipura      | L       | Majalengka     |



|    2 | Mayangsariwati      | P       | Bogor          |



|    3 | Purwanto Rojolele   | L       | Yogyakarta     |



|    4 | Rita Sariwati       | L       | Cibinong       |



|    5 | Suseno Mangun       | L       | Ciamis         |



|    6 | Ratna Sari          | P       | Cianjur        |



|    7 | Charlie Simanjuntak | L       | Medan          |



|    8 | Desi Sukmini        | P       | Jakarta        |



|    9 | Thomas Eng          | L       | Hongkong       |



|   10 | Ratih Sanggar       | P       | Solo           |



|   11 | Achmad Widjaja      | L       | Jakarta        |



|   12 | Delima Rahayu       | P       | Demak          |



|   13 | Dadang Sukandar     | L       | Cianjur        |



|   14 | Winda Sukma         | P       | Yogyakarta     |



|   15 | Zaenal Nur          | L       | Denpasar       |



|   16 | Noeri Sakti         | P       | Jakarta        |



|   17 | Ahmaddin Sudin      | L       | Banda Aceh     |



|   18 | Wati Sutinah        | P       | Mojokerto      |



|   19 | Wanto Sukarno       | L       | Surabaya       |



|   20 | Wawan Wanisar       | L       | Bogor          |



|   21 | Rendi Ganteng       | L       | Bogor          |



|   22 | Magda Magdalena     | P       | Bandar Lampung |



|   23 | Jumanto Dipuro      | L       | Tegal          |



|   24 | Deemas Sudirman     | L       | Batam          |



|   25 | Zulailah Zulha      | P       | Demak          |



+------+---------------------+---------+----------------+



 
25 rows in set (0.01 sec)

Menampilkan data kolom tertentu dengan urutan

mysql> SELECT noid, nama, kelamin, tempatlahir



    -> FROM karyawan2



    -> ORDER BY nama  ;



+------+---------------------+---------+----------------+



| noid | nama                | kelamin | tempatlahir    |



+------+---------------------+---------+----------------+



|   11 | Achmad Widjaja      | L       | Jakarta        |



|   17 | Ahmaddin Sudin      | L       | Banda Aceh     |



|    7 | Charlie Simanjuntak | L       | Medan          |



|   13 | Dadang Sukandar     | L       | Cianjur        |



|   24 | Deemas Sudirman     | L       | Batam          |



|   12 | Delima Rahayu       | P       | Demak          |



|    8 | Desi Sukmini        | P       | Jakarta        |



|   23 | Jumanto Dipuro      | L       | Tegal          |



|   22 | Magda Magdalena     | P       | Bandar Lampung |



|    2 | Mayangsariwati      | P       | Bogor          |



|   16 | Noeri Sakti         | P       | Jakarta        |



|    3 | Purwanto Rojolele   | L       | Yogyakarta     |



|   10 | Ratih Sanggar       | P       | Solo           |



|    6 | Ratna Sari          | P       | Cianjur        |



|   21 | Rendi Ganteng       | L       | Bogor          |



|    4 | Rita Sariwati       | P       | Cibinong       |



|    5 | Suseno Mangun       | L       | Ciamis         |



|    1 | Suwanto Dipura      | L       | Majalengka     |



|    9 | Thomas Eng          | L       | Hongkong       |



|   19 | Wanto Sukarno       | L       | Surabaya       |



|   18 | Wati Sutinah        | P       | Mojokerto      |



|   20 | Wawan Wanisar       | L       | Bogor          |



|   14 | Winda Sukma         | P       | Yogyakarta     |



|   15 | Zaenal Nur          | L       | Denpasar       |



|   25 | Zulailah Zulha      | P       | Demak          |



+------+---------------------+---------+----------------+



 
25 rows in set (0.01 sec)

Menampilkan data baris dan kolom tertentu

mysql> SELECT noid, nama, kelamin, tempatlahir



    -> FROM karyawan2



    -> WHERE kelamin="P" ;



+------+---------------------+---------+----------------+



| noid | nama                | kelamin | tempatlahir    |



+------+---------------------+---------+----------------+



|    2 | Mayangsariwati      | P       | Bogor          |



|    4 | Rita Sariwati       | P       | Cibinong       |



|    6 | Ratna Sari          | P       | Cianjur        |



|    8 | Desi Sukmini        | P       | Jakarta        |



|   10 | Ratih Sanggar       | P       | Solo           |



|   12 | Delima Rahayu       | P       | Demak          |



|   14 | Winda Sukma         | P       | Yogyakarta     |



|   16 | Noeri Sakti         | P       | Jakarta        |



|   18 | Wati Sutinah        | P       | Mojokerto      |



|   22 | Magda Magdalena     | P       | Bandar Lampung |



|   25 | Zulailah Zulha      | P       | Demak          |



+------+---------------------+---------+----------------+



11 rows in set (0.01 sec)

Menampilkan data baris dan kolom tertentu dengan urutan

mysql> SELECT noid, nama, kelamin, tempatlahir



    -> FROM karyawan2



    -> WHERE kelamin="P"



    -> ORDER BY nama ;



+------+---------------------+---------+----------------+



| noid | nama                | kelamin | tempatlahir    |



+------+---------------------+---------+----------------+



|   12 | Delima Rahayu       | P       | Demak          |



|    8 | Desi Sukmini        | P       | Jakarta        |



|   22 | Magda Magdalena     | P       | Bandar Lampung |



|    2 | Mayangsariwati      | P       | Bogor          |



|   16 | Noeri Sakti         | P       | Jakarta        |



|   10 | Ratih Sanggar       | P       | Solo           |



|    6 | Ratna Sari          | P       | Cianjur        |



|    4 | Rita Sariwati       | P       | Cibinong       |



|   18 | Wati Sutinah        | P       | Mojokerto      |



|   14 | Winda Sukma         | P       | Yogyakarta     |



|   25 | Zulailah Zulha      | P       | Demak          |



+------+---------------------+---------+----------------+



 
11 rows in set (0.01 sec)

Sementara untuk sore ini cukuplah... besok kita lanjut lagi....

Di pagi ini kita akan lanjutkan tutorial kita. Masih dengan topik menampilkan data dengan perintah SELECT, tapi dengan dengan variasi yang berbeda...

Operator Pembanding dan Operator Logika

Didalam MySQL ada operator pembanding yang sering digunakan seperti:

Operator Pembanding

Keterangan

> 

Lebih besar

< 

Lebih kecil

>=

Lebih besar atau sama dengan

<=

Lebih kecil atau sama dengan

=

Sama dengan

<> 

Tidak sama dengan

 

Operator Logika

Keterangan

AND atau &&

Dan

OR atau ||

Atau

NOT atau !

Lebih besar atau sama dengan

<=

Lebih kecil atau sama dengan

<> 

Tidak sama dengan

Sekarang mari kita coba operator-operator tersebut:

mysql> SELECT noid, nama, kelamin, tempatlahir FROM karyawan2 ;



+------+---------------------+---------+----------------+



| noid | nama                | kelamin | tempatlahir    |



+------+---------------------+---------+----------------+



|    1 | Suwanto Dipura      | L       | Majalengka     |



|    2 | Mayangsariwati      | P       | Bogor          |



|    3 | Purwanto Rojolele   | L       | Yogyakarta     |



|    4 | Rita Sariwati       | L       | Cibinong       |



|    5 | Suseno Mangun       | L       | Ciamis         |



|    6 | Ratna Sari          | P       | Cianjur        |



|    7 | Charlie Simanjuntak | L       | Medan          |



|    8 | Desi Sukmini        | P       | Jakarta        |



|    9 | Thomas Eng          | L       | Hongkong       |



|   10 | Ratih Sanggar       | P       | Solo           |



|   11 | Achmad Widjaja      | L       | Jakarta        |



|   12 | Delima Rahayu       | P       | Demak          |



|   13 | Dadang Sukandar     | L       | Cianjur        |



|   14 | Winda Sukma         | P       | Yogyakarta     |



|   15 | Zaenal Nur          | L       | Denpasar       |



|   16 | Noeri Sakti         | P       | Jakarta        |



|   17 | Ahmaddin Sudin      | L       | Banda Aceh     |



|   18 | Wati Sutinah        | P       | Mojokerto      |



|   19 | Wanto Sukarno       | L       | Surabaya       |



|   20 | Wawan Wanisar       | L       | Bogor          |



|   21 | Rendi Ganteng       | L       | Bogor          |



|   22 | Magda Magdalena     | P       | Bandar Lampung |



|   23 | Jumanto Dipuro      | L       | Tegal          |



|   24 | Deemas Sudirman     | L       | Batam          |



|   25 | Zulailah Zulha      | P       | Demak          |



+------+---------------------+---------+----------------+



25 rows in set (0.01 sec)
mysql> SELECT noid, nama, kelamin, tempatlahir



    -> FROM karyawan2



    -> WHERE tempatlahir='jakarta' ;



+------+---------------------+---------+----------------+



| noid | nama                | kelamin | tempatlahir    |



+------+---------------------+---------+----------------+



|    8 | Desi Sukmini        | P       | Jakarta        |



|   11 | Achmad Widjaja      | L       | Jakarta        |



|   16 | Noeri Sakti         | P       | Jakarta



+------+---------------------+---------+----------------+



3 rows in set (0.00 sec)
mysql> SELECT noid, nama, kelamin, tempatlahir



    -> FROM karyawan2



    -> WHERE tempatlahir='jakarta' AND kelamin='P'



    -> ;



+------+---------------------+---------+----------------+



| noid | nama                | kelamin | tempatlahir    |



+------+---------------------+---------+----------------+



|    8 | Desi Sukmini        | P       | Jakarta        |



|   16 | Noeri Sakti         | P       | Jakarta        |



+------+---------------------+---------+----------------+



2 rows in set (0.00 sec)
mysql> SELECT noid, nama, kelamin, tempatlahir



    -> FROM karyawan2



    -> WHERE tempatlahir='jakarta'



    -> AND tempatlahir='yogyakarta' ;



Empty set (0.00 sec)

Lho... kenapa perintah di atas kok kosong? Padahal kan ada karyawan yang lahir di Jakarta dan Yogyakarta? Apa perintahnya salah? Kita coba lagi dengan perintah:

mysql> SELECT noid, nama, kelamin, tempatlahir



    -> FROM karyawan2



    -> WHERE (tempatlahir='jakarta'



    -> AND tempatlahir='yogyakarta')



    -> ;



Empty set (0.00 sec)

Wah...wah... saya ndak ngerti nih.. Kenapa masih kosong yach? Coba lagi ach... jangan putus asa....

mysql> SELECT noid, nama, kelamin, tempatlahir



    -> FROM karyawan2



    -> WHERE tempatlahir='jakarta'



    -> OR tempatlahir='yogyakarta' ;



+------+---------------------+---------+----------------+



| noid | nama                | kelamin | tempatlahir    |



+------+---------------------+---------+----------------+



|    3 | Purwanto Rojolele   | L       | Yogyakarta     |



|    8 | Desi Sukmini        | P       | Jakarta        |



|   11 | Achmad Widjaja      | L       | Jakarta        |



|   14 | Winda Sukma         | P       | Yogyakarta     |



|   16 | Noeri Sakti         | P       | Jakarta        |



+------+---------------------+---------+----------------+



5 rows in set (0.01 sec)

Nah.. sekarang bisa kan? Apa karena perintah 'AND' diganti dengan 'OR' baru bisa dilaksanakan dengan baik yach? Hmmm...saya masih penasaran... Kita coba lagi dengan kombinasi perintah lainnya...

mysql> SELECT noid, nama, kelamin, tempatlahir



    -> FROM karyawan2



    -> WHERE (tempatlahir='jakarta'



    -> OR tempatlahir='yogyakarta')



    -> AND kelamin='P' ;



+------+---------------------+---------+----------------+



| noid | nama                | kelamin | tempatlahir    |



+------+---------------------+---------+----------------+



|    8 | Desi Sukmini        | P       | Jakarta        |



|   14 | Winda Sukma         | P       | Yogyakarta     |



|   16 | Noeri Sakti         | P       | Jakarta        |



+------+---------------------+---------+----------------+



3 rows in set (0.01 sec)

Bisakah anda menyimpulkan sendiri mengenai penempatan perintah OR dan AND pada kasus diatas?

Perhatikan juga, kita harus menggunakan tanda kurung '(' dan ')' untuk mengapit perintah "(tempatlahir='jakarta' OR tempatlahir='yogyakarta')". Hal ini untuk menghindari kerancuan yang akan terjadi akibat adanya perintah AND yang mengikuti perintah OR. Sekarang kalo perintah diatas kita tulis ulang tanpa tanda kurung, maka hasilnya akan rancu. Mari kita buktikan:

mysql> SELECT noid, nama, kelamin, tempatlahir



    -> FROM karyawan2



    -> WHERE tempatlahir='jakarta'



    -> OR tempatlahir='yogyakarta'



    -> AND kelamin='P' ;



+------+---------------------+---------+----------------+



| noid | nama                | kelamin | tempatlahir    |



+------+---------------------+---------+----------------+



|    8 | Desi Sukmini        | P       | Jakarta        |



|   11 | Achmad Widjaja      | L       | Jakarta        |



|   14 | Winda Sukma         | P       | Yogyakarta     |



|   16 | Noeri Sakti         | P       | Jakarta        |



+------+---------------------+---------+----------------+



4 rows in set (0.01 sec)

Jelas dimana terjadinya kerancuan? Ya, anda benar.... Ada "Achmad Widjaja" yang nyelonong masuk, padahal dia tidak semestinya muncul....

Pada sesi kita yang ke-14, sudah dibahas mengenai menampilkan data dengan pengurutan (pengurutan? pijet maksudnya?)... Wah gak enak nih kalimatnya.. hehehe. Maksudnya, dengan urutan dari A-Z (atau istilah kerennya Ascending). Masih ingat kan perintah: "Select * From karyawan2 Order By Nama"? Pertanyaannya, bagaimana kalo kita menginginkan dengan urutan dari Z-A (ato istilah kerennya Descending)?

Kita ulangi perintah di atas dech biar ingat lagi...

mysql> SELECT noid, nama, kelamin, tempatlahir

    -> FROM karyawan2

    -> ORDER BY nama  ;

+------+---------------------+---------+----------------+

| noid | nama                | kelamin | tempatlahir    |

+------+---------------------+---------+----------------+

|   11 | Achmad Widjaja      | L       | Jakarta        |

|   17 | Ahmaddin Sudin      | L       | Banda Aceh     |

|    7 | Charlie Simanjuntak | L       | Medan          |

|   13 | Dadang Sukandar     | L       | Cianjur        |

|   24 | Deemas Sudirman     | L       | Batam          |

|   12 | Delima Rahayu       | P       | Demak          |

|    8 | Desi Sukmini        | P       | Jakarta        |

|   23 | Jumanto Dipuro      | L       | Tegal          |

|   22 | Magda Magdalena     | P       | Bandar Lampung |

|    2 | Mayangsariwati      | P       | Bogor          |

|   16 | Noeri Sakti         | P       | Jakarta        |

|    3 | Purwanto Rojolele   | L       | Yogyakarta     |

|   10 | Ratih Sanggar       | P       | Solo           |

|    6 | Ratna Sari          | P       | Cianjur        |

|   21 | Rendi Ganteng       | L       | Bogor          |

|    4 | Rita Sariwati       | P       | Cibinong       |

|    5 | Suseno Mangun       | L       | Ciamis         |

|    1 | Suwanto Dipura      | L       | Majalengka     |

|    9 | Thomas Eng          | L       | Hongkong       |

|   19 | Wanto Sukarno       | L       | Surabaya       |

|   18 | Wati Sutinah        | P       | Mojokerto      |

|   20 | Wawan Wanisar       | L       | Bogor          |

|   14 | Winda Sukma         | P       | Yogyakarta     |

|   15 | Zaenal Nur          | L       | Denpasar       |

|   25 | Zulailah Zulha      | P       | Demak          |

+------+---------------------+---------+----------------+

25 rows in set (0.01 sec)

Sekarang kita akan terapkan dengan cara yang sedikit berbeda. Perhatikan bentuk perintahnya yach...

mysql> SELECT noid, nama, kelamin, tempatlahir

    -> FROM karyawan2

    -> ORDER BY nama DESC ;

+------+---------------------+---------+----------------+

| noid | nama                | kelamin | tempatlahir    |

+------+---------------------+---------+----------------+

|   25 | Zulailah Zulha      | P       | Demak          |

|   15 | Zaenal Nur          | L       | Denpasar       |

|   14 | Winda Sukma         | P       | Yogyakarta     |

|   20 | Wawan Wanisar       | L       | Bogor          |

|   18 | Wati Sutinah        | P       | Mojokerto      |

|   19 | Wanto Sukarno       | L       | Surabaya       |

|    9 | Thomas Eng          | L       | Hongkong       |

|    1 | Suwanto Dipura      | L       | Majalengka     |

|    5 | Suseno Mangun       | L       | Ciamis         |

|    4 | Rita Sariwati       | P       | Cibinong       |

|   21 | Rendi Ganteng       | L       | Bogor          |

|    6 | Ratna Sari          | P       | Cianjur        |

|   10 | Ratih Sanggar       | P       | Solo           |

|    3 | Purwanto Rojolele   | L       | Yogyakarta     |

|   16 | Noeri Sakti         | P       | Jakarta        |

|    2 | Mayangsariwati      | P       | Bogor          |

|   22 | Magda Magdalena     | P       | Bandar Lampung |

|   23 | Jumanto Dipuro      | L       | Tegal          |

|    8 | Desi Sukmini        | P       | Jakarta        |

|   12 | Delima Rahayu       | P       | Demak          |

|   24 | Deemas Sudirman     | L       | Batam          |

|   13 | Dadang Sukandar     | L       | Cianjur        |

|    7 | Charlie Simanjuntak | L       | Medan          |

|   17 | Ahmaddin Sudin      | L       | Banda Aceh     |

|   11 | Achmad Widjaja      | L       | Jakarta        |

+------+---------------------+---------+----------------+

25 rows in set (0.01 sec)

Ya, cukup dengan menambahkan kata "DESC" maka anda akan mendapatkan urutan Z-A, bukan?

Contoh-contoh di atas kebanyakan menggunakan data-data dengan jenis karakter. Sekarang bagaimana kalau yang menjadi objeknya adalah data-data yang bukan karakter? Misalnya, tanggal. Ayo, bagaimana dong contohnya.....?!

OK, kita coba tampilkan dulu data dengan kolom tanggal...

mysql> SELECT nama, kelamin, tgllahir

    -> FROM karyawan2

    -> ORDER BY nama  ;

+---------------------+---------+----------------+

| nama                | kelamin | tgllahir       |

+---------------------+---------+----------------+

| Achmad Widjaja      | L       | 0000-00-00     |

| Ahmaddin Sudin      | L       | 0000-00-00     |

| Charlie Simanjuntak | L       | 0000-00-00     |

| Dadang Sukandar     | L       | 0000-00-00     |

| Deemas Sudirman     | L       | 0000-00-00     |

| Delima Rahayu       | P       | 0000-00-00     |

| Desi Sukmini        | P       | 0000-00-00     |

| Jumanto Dipuro      | L       | 0000-00-00     |

| Magda Magdalena     | P       | 0000-00-00     |

| Mayangsariwati      | P       | 0000-00-00     |

| Noeri Sakti         | P       | 0000-00-00     |

| Purwanto Rojolele   | L       | 0000-00-00     |

| Ratih Sanggar       | P       | 0000-00-00     |

| Ratna Sari          | P       | 0000-00-00     |

| Rendi Ganteng       | L       | 0000-00-00     |

| Rita Sariwati       | P       | 0000-00-00     |

| Suseno Mangun       | L       | 0000-00-00     |

| Suwanto Dipura      | L       | 0000-00-00     |

| Thomas Eng          | L       | 0000-00-00     |

| Wanto Sukarno       | L       | 0000-00-00     |

| Wati Sutinah        | P       | 0000-00-00     |

| Wawan Wanisar       | L       | 0000-00-00     |

| Winda Sukma         | P       | 0000-00-00     |

| Zaenal Nur          | L       | 0000-00-00     |

| Zulailah Zulha      | P       | 0000-00-00     |

+---------------------+---------+----------------+

25 rows in set (0.01 sec)

Lho..lho... kok kolom tgllahirnya kosong semua? Kenapa isinya 0000-00-00 yach? Seingat saya, pada file buatdanisitabel.sql sudah disiapkan semua data tanggal lahirnya.. Lalu kenapa jadi begini? Coba, kita periksa lagi perintah-perintah pada file buatdanisitabel.sql , terutama perintah untuk memasukkan data tanggal.

Bagaimana, sudah ketemu apa penyebabnya? Kalo, belum tolong dicari dulu yach... anggap aja PR buat anda-anda semua... Saya mo coffee-break dulu... hehehe... Bagi yang udah gak sabar, ayo kita ngopi bersama dulu... :)

 

Udah segeran kan setelah ngopi bersama? Ok kita lanjutkan... Gimana dengan PR nya? Udah ketauan apa penyakitnya sehingga data pada kolom tanggal isinya 0000-00-00? Padahal, kita sudah memasukkan data sesuai dengan file buatdanisitabel.sql.

Ok...perhatikan perintah pengisian data yang saya ambil dari file buatdanisitabel.sql sebagai berikut:

.... ................ ...........

INSERT INTO karyawan2

(noid, nama, kelamin, tempatlahir, tgllahir,

alamat1, alamat2, kota, kodepos, telprumah, ponsel)

VALUES

("NULL","Suwanto Dipura" ,"L","Majalengka","03-02-1967",

"Jl. Madangkara No.11", "RT.01 RW.01","Jakarta","12121","021-999999","NULL"),

("NULL","Mayangsariwati" ,"P","Bogor", "01-06-1977",

"Jl. Rawasari 12", "RT 03 RW 02","Bandung","40256","022-0099909","0814-000100"),

................. dst

...................

Ya, anda betul. Perhatikan bahwa format tanggal pada MySQL HARUS ditulis dengan bentuk: TAHUN-BULAN-TANGGAL (0000-00-00). Misal, 12 Januari 2003 ditulis dengan format 2003-01-12, dsb.

Sedangkan, pengisian data yang kita lakukan adalah TANGGAL-BULAN-TAHUN..nah disinilah letak kesalahan kita sebelumnya....

Jelas dong, gak bakalan mau MySQL menerima data tanggal dengan urutan yang TIDAK PROSEDURAL. (hehehe...gaya bahasa pejabat nich...)

Lalu, gimana dong solusinya? Gampang aja... kita tulis ulang aja lagi perintah pemasukan tanggal tapi dengan urutan format tanggal yang benar. Yaitu: TAHUN-BULAN-TANGGAL Oh ya, anda gak usah khawatir, silakan download aja file revbuatdanisitanggal.sql yang sudah saya siapkan... Selanjutkan lakukan hal yang sama seperti pada sesi ke-13.

Oh, ya jangan khawatir juga ... Kesalahan diatas memang disengaja kok...:)

[SYSTEM PROMPT] mysql -h localhost -u root -p personaliadb < revbuatdanisitabel.sql

Enter Password: **********

atau:

[SYSTEM PROMPT] mysql -h localhost -u root -p personaliadb < c:\coba\revbuatdanisitabel.sql

Enter Password: **********

Jangan lupa untuk memeriksanya kembali:

mysql> SELECT * FROM karyawan3 ;

Sambil menunggu anda melakukan kembali pemasukkan data, saya mau santai-santai dulu yach....:)

Selamat pagi... Gimana udah selesai PR-nya? Kalo udah mari kita periksa bersama... Ayo dibuka bukunya masing-masing...

mysql> SHOW TABLES ;

+------------------------+

| Tabels_in_personaliadb |

+------------------------+

| karyawan               |

| karyawan2              |

| karyawan3              |

+------------------------+

3 rows in set (0.00 sec)

Hasil dari file revbuatdanisitabel.sql adalah tabel karyawan3. Sekarang kita periksa isi di dalam tabel karyawan3.

mysql> SELECT nama, kelamin, tgllahir

    -> FROM karyawan3

    -> ORDER BY nama  ;

+---------------------+---------+----------------+

| nama                | kelamin | tgllahir       |

+---------------------+---------+----------------+

| Achmad Widjaja      | L       | 1968-12-12     |

| Ahmaddin Sudin      | L       | 1972-09-27     |

| Charlie Simanjuntak | L       | 1969-11-15     |

| Dadang Sukandar     | L       | 1971-07-03     |

| Deemas Sudirman     | L       | 1979-06-19     |

| Delima Rahayu       | P       | 1972-06-24     |

| Desi Sukmini        | P       | 1981-09-13     |

| Jumanto Dipuro      | L       | 1969-09-03     |

| Magda Magdalena     | P       | 1978-06-01     |

| Mayangsariwati      | P       | 1977-06-01     |

| Noeri Sakti         | P       | 1983-06-01     |

| Purwanto Rojolele   | L       | 1968-07-03     |

| Ratih Sanggar       | P       | 1982-11-22     |

| Ratna Sari          | P       | 1981-04-22     |

| Rendi Ganteng       | L       | 1969-06-03     |

| Rita Sariwati       | P       | 1977-05-10     |

| Suseno Mangun       | L       | 1964-09-11     |

| Suwanto Dipura      | L       | 1967-02-03     |

| Thomas Eng          | L       | 1969-09-09     |

| Wanto Sukarno       | L       | 1974-07-03     |

| Wati Sutinah        | P       | 1975-09-19     |

| Wawan Wanisar       | L       | 1977-06-01     |

| Winda Sukma         | P       | 1969-08-01     |

| Zaenal Nur          | L       | 1973-01-03     |

| Zulailah Zulha      | P       | 1972-11-01     |

+---------------------+---------+----------------+

25 rows in set (0.01 sec)

Ya, sekarang nampaknya sudah sesuai dengan skenario..:) Selamat buat anda...
Kita coba perintah lainnya.....

mysql> SELECT nama, kelamin, tgllahir

    -> FROM karyawan3

    -> ORDER BY tgllahir  ;

+---------------------+---------+----------------+

| nama                | kelamin | tgllahir       |

+---------------------+---------+----------------+

| Suseno Mangun       | L       | 1964-09-11     |

| Suwanto Dipura      | L       | 1967-02-03     |

| Purwanto Rojolele   | L       | 1968-07-03     |

| Achmad Widjaja      | L       | 1968-12-12     |

| Rendi Ganteng       | L       | 1969-06-03     |

| Winda Sukma         | P       | 1969-08-01     |

| Jumanto Dipuro      | L       | 1969-09-03     |

| Thomas Eng          | L       | 1969-09-09     |

| Charlie Simanjuntak | L       | 1969-11-15     |

| Dadang Sukandar     | L       | 1971-07-03     |

| Delima Rahayu       | P       | 1972-06-24     |

| Ahmaddin Sudin      | L       | 1972-09-27     |

| Zulailah Zulha      | P       | 1972-11-01     |

| Zaenal Nur          | L       | 1973-01-03     |

| Wanto Sukarno       | L       | 1974-07-03     |

| Wati Sutinah        | P       | 1975-09-19     |

| Rita Sariwati       | P       | 1977-05-10     |

| Mayangsariwati      | P       | 1977-06-01     |

| Wawan Wanisar       | L       | 1977-06-01     |

| Magda Magdalena     | P       | 1978-06-01     |

| Deemas Sudirman     | L       | 1979-06-19     |

| Ratna Sari          | P       | 1981-04-22     |

| Desi Sukmini        | P       | 1981-09-13     |

| Ratih Sanggar       | P       | 1982-11-22     |

| Noeri Sakti         | P       | 1983-06-01     |

+---------------------+---------+----------------+

25 rows in set (0.01 sec)

Sekarang dengan urutan descending...

mysql> SELECT nama, kelamin, tgllahir

    -> FROM karyawan3

    -> ORDER BY tgllahir DESC ;

+---------------------+---------+----------------+

| nama                | kelamin | tgllahir       |

+---------------------+---------+----------------+

| Noeri Sakti         | P       | 1983-06-01     |

| Ratih Sanggar       | P       | 1982-11-22     |

| Desi Sukmini        | P       | 1981-09-13     |

| Ratna Sari          | P       | 1981-04-22     |

| Deemas Sudirman     | L       | 1979-06-19     |

| Magda Magdalena     | P       | 1978-06-01     |

| Wawan Wanisar       | L       | 1977-06-01     |

| Mayangsariwati      | P       | 1977-06-01     |

| Rita Sariwati       | P       | 1977-05-10     |

| Wati Sutinah        | P       | 1975-09-19     |

| Wanto Sukarno       | L       | 1974-07-03     |

| Zaenal Nur          | L       | 1973-01-03     |

| Zulailah Zulha      | P       | 1972-11-01     |

| Ahmaddin Sudin      | L       | 1972-09-27     |

| Delima Rahayu       | P       | 1972-06-24     |

| Dadang Sukandar     | L       | 1971-07-03     |

| Charlie Simanjuntak | L       | 1969-11-15     |

| Thomas Eng          | L       | 1969-09-09     |

| Jumanto Dipuro      | L       | 1969-09-03     |

| Winda Sukma         | P       | 1969-08-01     |

| Rendi Ganteng       | L       | 1969-06-03     |

| Achmad Widjaja      | L       | 1968-12-12     |

| Purwanto Rojolele   | L       | 1968-07-03     |

| Suwanto Dipura      | L       | 1967-02-03     |

| Suseno Mangun       | L       | 1964-09-11     |

+---------------------+---------+----------------+

>25 rows in set (0.01 sec)

Coba lagi dengan kombinasi perintah yang lain....

mysql> SELECT nama, kelamin, tgllahir

    -> FROM karyawan3

    -> WHERE tgllahir > "1970-01-01"

    -> ORDER BY tgllahir  ;

+---------------------+---------+----------------+

| nama                | kelamin | tgllahir       |

+---------------------+---------+----------------+

| Dadang Sukandar     | L       | 1971-07-03     |

| Delima Rahayu       | P       | 1972-06-24     |

| Ahmaddin Sudin      | L       | 1972-09-27     |

| Zulailah Zulha      | P       | 1972-11-01     |

| Zaenal Nur          | L       | 1973-01-03     |

| Wanto Sukarno       | L       | 1974-07-03     |

| Wati Sutinah        | P       | 1975-09-19     |

| Rita Sariwati       | P       | 1977-05-10     |

| Mayangsariwati      | P       | 1977-06-01     |

| Wawan Wanisar       | L       | 1977-06-01     |

| Magda Magdalena     | P       | 1978-06-01     |

| Deemas Sudirman     | L       | 1979-06-19     |

| Ratna Sari          | P       | 1981-04-22     |

| Desi Sukmini        | P       | 1981-09-13     |

| Ratih Sanggar       | P       | 1982-11-22     |

| Noeri Sakti         | P       | 1983-06-01     |

+---------------------+---------+----------------+

16 rows in set (0.01 sec)
mysql> SELECT nama, kelamin, tgllahir

    -> FROM karyawan3

    -> WHERE tgllahir <= "1970-01-01"

    -> ORDER BY tgllahir  ;

+---------------------+---------+----------------+

| nama                | kelamin | tgllahir       |

+---------------------+---------+----------------+

| Suseno Mangun       | L       | 1964-09-11     |

| Suwanto Dipura      | L       | 1967-02-03     |

| Purwanto Rojolele   | L       | 1968-07-03     |

| Achmad Widjaja      | L       | 1968-12-12     |

| Rendi Ganteng       | L       | 1969-06-03     |

| Winda Sukma         | P       | 1969-08-01     |

| Jumanto Dipuro      | L       | 1969-09-03     |

| Thomas Eng          | L       | 1969-09-09     |

| Charlie Simanjuntak | L       | 1969-11-15     |

+---------------------+---------+----------------+

9 rows in set (0.01 sec)

Ya... sudah cukup banyak yach contoh-contohnya.... Kita lanjut dengan kombinasi perintah setelah yang satu ini...:)

 

Thanks GOD it's Friday! Walau pun mo weekend, eh yang namanya nyare elmu tetep jalan terus donk! Yuk.. kita lanjutin lagi nyang kemaren yach... Kita coba perintah lainnya:

mysql> SELECT noid, nama, telprumah, ponsel

    -> FROM karyawan3 ;

+------+---------------------+--------------+---------------+

| noid | nama                | telprumah    | ponsel        |

+------+---------------------+--------------+---------------+

|    1 | Suwanto Dipura      | 021-999999   | NULL          |

|    2 | Mayangsariwati      | 022-0099909  | 0814-000100   |

|    3 | Purwanto Rojolele   | 021-111111   | NULL          |

|    4 | Rita Sariwati       | 021-0099909  | 0084-000100   |

|    5 | Suseno Mangun       | NULL         | NULL          |

|    6 | Ratna Sari          | 021-00999909 | NULL          |

|    7 | Charlie Simanjuntak | 021-0009090  | NULL          |

|    8 | Desi Sukmini        | NULL         | NULL          |

|    9 | Thomas Eng          | 021-44224422 | NULL          |

|   10 | Ratih Sanggar       | 021-90099909 | NULL          |

|   11 | Achmad Widjaja      | 021-8888889  | NULL          |

|   12 | Delima Rahayu       | 021-80099909 | NULL          |

|   13 | Dadang Sukandar     | 021-098088   | NULL          |

|   14 | Winda Sukma         | 022-0099909  | 0814-000200   |

|   15 | Zaenal Nur          | 021-8999999  | NULL          |

|   16 | Noeri Sakti         | 021-10099909 | 0814-0001100  |

|   17 | Ahmaddin Sudin      | 021-1999999  | NULL          |

|   18 | Wati Sutinah        | 021-10019909 | 0814-0030100  |

|   19 | Wanto Sukarno       | 021-92999999 | NULL          |

|   20 | Wawan Wanisar       | 021-0099909  | 0814-0200100  |

|   21 | Rendi Ganteng       | 021-11999999 | NULL          |

|   22 | Magda Magdalena     | 021-9009009  | 0814-99000100 |

|   23 | Jumanto Dipuro      | 021-9919999  | NULL          |

|   24 | Deemas Sudirman     | 021-02099909 | 0814-0001011  |

|   25 | Zulailah Zulha      | 021-21999999 | NULL          |

+------+---------------------+--------------+---------------+

25 rows in set (0.01 sec)

Perhatikan pada kolom telprumah dan ponsel, ternyata tidak semua data terisi atau diketahui (NULL). Sekarang kita periksa siapa saja yang benar-benar tidak memiliki nomor telepon, baik di rumah maupun ponsel...

mysql> SELECT noid, nama, telprumah, ponsel

    -> FROM karyawan3 ;

    -> WHERE telprumah=NULL

    -> AND ponsel=NULL

    -> ;

Empty set (0.02 sec)

Lho kok Empty set? Bukannya kolom yang NULL itu sebenarnya ada beberapa data? Apa yang salah yach? Kita coba lagi ach...

mysql> SELECT noid, nama, telprumah, ponsel

    -> FROM karyawan3 ;

    -> WHERE telprumah= 'NULL'

    -> AND ponsel= 'NULL'

    -> ;

+------+---------------------+--------------+---------------+

| noid | nama                | telprumah    | ponsel        |

+------+---------------------+--------------+---------------+

|    5 | Suseno Mangun       | NULL         | NULL          |

|    8 | Desi Sukmini        | NULL         | NULL          |

+------+---------------------+--------------+---------------+

2 rows in set (0.01 sec)

Nah... ternyata sekarang bisa...:) Barusan kita lupa untuk mengapit kata NULL dengan tanda kutip, bukan? Udah jelaskan masalahnya? Kita lanjut...

Kita ubah sedikiiit saja perintah yang barusan. Operator AND kita ganti dengan OR.. Lihat hasilnya...

mysql> SELECT noid, nama, telprumah, ponsel

    -> FROM karyawan3 ;

    -> WHERE telprumah= 'NULL'

    -> OR ponsel= 'NULL'

    -> ;

+------+---------------------+--------------+---------------+

| noid | nama                | telprumah    | ponsel        |

+------+---------------------+--------------+---------------+

|    1 | Suwanto Dipura      | 021-999999   | NULL          |

|    3 | Purwanto Rojolele   | 021-111111   | NULL          |

|    5 | Suseno Mangun       | NULL         | NULL          |

|    6 | Ratna Sari          | 021-00999909 | NULL          |

|    7 | Charlie Simanjuntak | 021-0009090  | NULL          |

|    8 | Desi Sukmini        | NULL         | NULL          |

|    9 | Thomas Eng          | 021-44224422 | NULL          |

|   10 | Ratih Sanggar       | 021-90099909 | NULL          |

|   11 | Achmad Widjaja      | 021-8888889  | NULL          |

|   12 | Delima Rahayu       | 021-80099909 | NULL          |

|   13 | Dadang Sukandar     | 021-098088   | NULL          |

|   15 | Zaenal Nur          | 021-8999999  | NULL          |

|   17 | Ahmaddin Sudin      | 021-1999999  | NULL          |

|   19 | Wanto Sukarno       | 021-92999999 | NULL          |

|   21 | Rendi Ganteng       | 021-11999999 | NULL          |

|   23 | Jumanto Dipuro      | 021-9919999  | NULL          |

|   25 | Zulailah Zulha      | 021-21999999 | NULL          |

+------+---------------------+--------------+---------------+

17 rows in set (0.01 sec)

Nah itulah hasilnya.. Eh, apa? Salah? Bukan itu yang Anda maksud? Oh, maksudnya data karyawan yang punya 2 nomor, nomor telp rumah dan nomor ponsel... Wah, kalo gitu tadi kita memang salah ngasih perintah dong...

Mestinya sih gini:

mysql> SELECT noid, nama, telprumah, ponsel

    -> FROM karyawan3 ;

    -> WHERE telprumah  != 'NULL'

    -> AND ponsel != 'NULL'

    -> ;

+------+---------------------+--------------+---------------+

| noid | nama                | telprumah    | ponsel        |

+------+---------------------+--------------+---------------+

|    2 | Mayangsariwati      | 022-0099909  | 0814-000100   |

|    4 | Rita Sariwati       | 021-0099909  | 0084-000100   |

|   14 | Winda Sukma         | 022-0099909  | 0814-000200   |

|   16 | Noeri Sakti         | 021-10099909 | 0814-0001100  |

|   18 | Wati Sutinah        | 021-10019909 | 0814-0030100  |

|   20 | Wawan Wanisar       | 021-0099909  | 0814-0200100  |

|   22 | Magda Magdalena     | 021-9009009  | 0814-99000100 |

|   24 | Deemas Sudirman     | 021-02099909 | 0814-0001011  |

+------+---------------------+--------------+---------------+

8 rows in set (0.01 sec)

Nah... ini baru bener... Iya kan? Gimana, mau nyoba perintah apa lagi sekarang? Oh. hanya orang-orang yang punya no.telp rumah saja,, tapi tidak punya ponsel?.. OK..boss, bisa lah itu.. Kita coba sama-sama deh...

mysql> SELECT noid, nama, telprumah, ponsel

    -> FROM karyawan3

    -> WHERE telprumah  != 'NULL'

    -> AND ponsel='NULL'

    -> ;

+------+---------------------+--------------+---------------+

| noid | nama                | telprumah    | ponsel        |

+------+---------------------+--------------+---------------+

|    1 | Suwanto Dipura      | 021-999999   | NULL          |

|    3 | Purwanto Rojolele   | 021-111111   | NULL          |

|    6 | Ratna Sari          | 021-00999909 | NULL          |

|    7 | Charlie Simanjuntak | 021-0009090  | NULL          |

|    9 | Thomas Eng          | 021-44224422 | NULL          |

|   10 | Ratih Sanggar       | 021-90099909 | NULL          |

|   11 | Achmad Widjaja      | 021-8888889  | NULL          |

|   12 | Delima Rahayu       | 021-80099909 | NULL          |

|   13 | Dadang Sukandar     | 021-098088   | NULL          |

|   15 | Zaenal Nur          | 021-8999999  | NULL          |

|   17 | Ahmaddin Sudin      | 021-1999999  | NULL          |

|   19 | Wanto Sukarno       | 021-92999999 | NULL          |

|   21 | Rendi Ganteng       | 021-11999999 | NULL          |

|   23 | Jumanto Dipuro      | 021-9919999  | NULL          |

|   25 | Zulailah Zulha      | 021-21999999 | NULL          |

+------+---------------------+--------------+---------------+

15 rows in set (0.01 sec)

Gampang kan ternyata? Sekarang mo apa lagi? Kebalikan dari yang di atas? Jadi, cuma data orang-orang yang hanya punya ponsel tapi tidak punya telp rumah? Haa... kalo itu mah gantian Anda atuh untuk berlatih... Silakan dicoba sendiri dulu dech...

Terakhir anda minta supaya data yang muncul hanya orang-orang yang punya ponsel saja, tapi tidak punya no.telp rumah.. Udah dapat kan jawabannya? Kalo belum, kita samakan aja deh jawabannya dengan yang dibawah ini:

mysql> SELECT noid, nama, telprumah, ponsel

    -> FROM karyawan3 ;

    -> WHERE telprumah = 'NULL'

    -> AND ponsel != 'NULL'

    -> ;

Empty set (0.02 sec)

Lho kenapa terjadi lagi nich Empty set-nya? Coba, kita pikir-pikir lagi.... Hanya punya ponsel, kan itu berarti tidak punya telp rumah. Iya kan? Kita lihat logikanya: tidak punya telp rumah, berarti telprumah='NULL'. OK. Punya ponsel, berarti ponsel != 'NULL'

Lha.. perintah di atas kan secara logika udah bener? Tapi kenapa hasilnya tidak benar? Wahhh..pusing!!!

Eit..., jangan panik dulu donk! Mari kita uraikan benang kusut ini satu persatu... Sekarang kita coba aja dulu menampilkan data yang tidak punya telp rumah (telprumah='NULL'). Kolom ponsel kita abaikan dulu....

mysql> SELECT noid, nama, telprumah, ponsel

    -> FROM karyawan3 ;

    -> WHERE telprumah = 'NULL'

    -> ;

Empty set (0.02 sec)

+------+---------------------+--------------+---------------+

| noid | nama                | telprumah    | ponsel        |

+------+---------------------+--------------+---------------+

|    5 | Suseno Mangun       | NULL         | NULL          |

|    8 | Desi Sukmini        | NULL         | NULL          |

+------+---------------------+--------------+---------------+

2 rows in set (0.01 sec)

Ya, sampai disini masih benar. Telprumahnya NULL semua tuch. Sekarang kita coba yang ponselnya bukan NULL:

mysql> SELECT noid, nama, telprumah, ponsel

    -> FROM karyawan3 ;

    -> WHERE ponsel != 'NULL'

    -> ;

Empty set (0.02 sec)

+------+---------------------+--------------+---------------+

| noid | nama                | telprumah    | ponsel        |

+------+---------------------+--------------+---------------+

|    2 | Mayangsariwati      | 022-0099909  | 0814-000100   |

|    4 | Rita Sariwati       | 021-0099909  | 0084-000100   |

|   14 | Winda Sukma         | 022-0099909  | 0814-000200   |

|   16 | Noeri Sakti         | 021-10099909 | 0814-0001100  |

|   18 | Wati Sutinah        | 021-10019909 | 0814-0030100  |

|   20 | Wawan Wanisar       | 021-0099909  | 0814-0200100  |

|   22 | Magda Magdalena     | 021-9009009  | 0814-99000100 |

|   24 | Deemas Sudirman     | 021-02099909 | 0814-0001011  |

+------+---------------------+--------------+---------------+

8 rows in set (0.01 sec)

Ok juga... semua data yang punya ponsel udah muncul tuch! Sekarang anda perhatikan baik-baik hasil dari 2 perintah terakhir!

Dari kedua perintah di atas, sudah jelas bahwa memang tidak ada satu pun data yang memenuhi kriteria: punya ponsel saja, tapi tidak punya no.telp rumah. Semua orang yang punya ponsel, di rumahnya juga ada telepon kok..(lihat hasil perintah kedua terakhir). Ya, kan?

Lalu, kenapa kita capek-capek kesini?

Tujuan dari capek-capek kesini adalah: hati-hati dengan operator logika, apalagi kalau kita sudah menggunakannya secara 'keroyokan' seperti di atas. Ada suatu aturan baku mengenai tingkat derajat operator, dimana operator yang satu akan mengalahkan operator lainnya. Tingkat derajat ini bahasa kerennya adalah 'Operator Precedence'.... Nanti akan kita bahas pada sesi berikutnya...

Sementara ini kita break dulu... saya ngerti kok anda udah cape,,,(apa lagi saya...hehehe).... Met istirahat....:)

Nah ..bagi nyang mo lanjut...ok dech kita lanjutin...

Terakhir diperbaharui ( 09 August 2005 )

 

Kemaren kita udah utak-atik masalah operator ganda. Udah disinggung juga tentang operator precedence. Kalo kita lihat lagi operator-operator yang bisa digunakan di dalam MySQL pada sesi ke-15, maka dibawah ini adalah urutan otoritas dari para operator tersebut:

Paling Tinggi

BINARY

 

NOT !

- (unary minus)

* / %

+ -

<< >>

&

|

< <= = <=> != <> >= > IN IS LIKE REGEXP RLIKE

BETWEEN

AND &&

Paling Rendah

OR ||

Bisa kita lihat, semakin keatas posisi operator, maka semakin tinggi tingkat kekuasaan operator tersebut. Begitu pula sebaliknya, semakin rendah posisinya maka akan semakin lemah.

Untuk operator yang sama kuat, misal + dan - digabung dengan operator * / %, maka akan ditentukan kekuatannya tergantung dari posisi mana yang paling kiri/paling awal ditemukan. Dan untungnya posisi kekuatan ini dapat diubah dengan bantuan tanda kurung "(" dan ")". Perlu bukti?

Contoh:

mysql> select 10+15-11*2, (10+15-11)*2, 

    -> 2*6-5, 2*(6-5) ;

+------------+--------------+-------+---------+

| 10+15-11*2 | (10+15-11)*2 | 2*6-5 | 2*(6-5) |

+------------+--------------+-------+---------+

|          3 |           28 |     7 |       2 |

+------------+--------------+-------+---------+

1 row in set (0.00 sec)

 

Nah, anda bisa perhatikan bahwa walaupun angka dan operatornya sama, tapi hasilnya bisa berbeda. Dan itu karena adanya peranan dari tanda kurung "(" dan ")" yang akan mengubah peta posisi kekuatan operator....

Perlu bukti lainnya? Silakan saja anda coba sendiri..sementara saya akan memberikan contoh penggunaan operrator lainnya seperti LIKE, NOT LIKE, REGEXP, dan sebagainya setelah yang satu ini...

 

Kemaren kita udah utak-atik masalah operator ganda. Udah disinggung juga tentang operator precedence. Kalo kita lihat lagi operator-operator yang bisa digunakan di dalam MySQL pada sesi ke-15, maka dibawah ini adalah urutan otoritas dari para operator tersebut:

Paling Tinggi

BINARY

 

NOT !

- (unary minus)

* / %

+ -

<< >>

&

|

< <= = <=> != <> >= > IN IS LIKE REGEXP RLIKE

BETWEEN

AND &&

Paling Rendah

OR ||

Bisa kita lihat, semakin keatas posisi operator, maka semakin tinggi tingkat kekuasaan operator tersebut. Begitu pula sebaliknya, semakin rendah posisinya maka akan semakin lemah.

Untuk operator yang sama kuat, misal + dan - digabung dengan operator * / %, maka akan ditentukan kekuatannya tergantung dari posisi mana yang paling kiri/paling awal ditemukan. Dan untungnya posisi kekuatan ini dapat diubah dengan bantuan tanda kurung "(" dan ")". Perlu bukti?

Contoh:

mysql> select 10+15-11*2, (10+15-11)*2, 

    -> 2*6-5, 2*(6-5) ;

+------------+--------------+-------+---------+

| 10+15-11*2 | (10+15-11)*2 | 2*6-5 | 2*(6-5) |

+------------+--------------+-------+---------+

|          3 |           28 |     7 |       2 |

+------------+--------------+-------+---------+

1 row in set (0.00 sec)

 

Nah, anda bisa perhatikan bahwa walaupun angka dan operatornya sama, tapi hasilnya bisa berbeda. Dan itu karena adanya peranan dari tanda kurung "(" dan ")" yang akan mengubah peta posisi kekuatan operator....

Perlu bukti lainnya? Silakan saja anda coba sendiri..sementara saya akan memberikan contoh penggunaan operrator lainnya seperti LIKE, NOT LIKE, REGEXP, dan sebagainya setelah yang satu ini...

 

Sekarang kita kan coba menggunakan operator LIKE. Operator LIKE ini digunakan untuk mencari data yang "menyerupai" atau "hampir sama" dengan kriteria tertentu. Biasanya untuk mencari data string/teks. Simbol "%" digunakan untuk membantu pelaksanaan operator LIKE. Posisi "%" sangat berpengaruh dalam menentukan kriteria. Bingung? Jangan bingung. Kita lihat saja contohnya yach.

Tampilkan data karyawan yang namanya berawalan huruf "a":(perhatikan posisi simbol persennya "%")

mysql> SELECT noid, nama FROM karyawan3

    -> WHERE nama LIKE "a%" ;

+------+----------------+

| noid | nama           |

+------+----------------+

|   11 | Achmad Widjaja |

|   17 | Ahmaddin Sudin |

+------+----------------+

2 rows in set (0.00 sec)

Tampilkan data karyawan yang namanya berawalan huruf "d":

mysql> SELECT noid, nama FROM karyawan3

    -> WHERE nama LIKE "d%"

    -> ;

+------+-----------------+

| noid | nama            |

+------+-----------------+

|    8 | Desi Sukmini    |

|   12 | Delima Rahayu   |

|   13 | Dadang Sukandar |

|   24 | Deemas Sudirman |

+------+-----------------+

4 rows in set (0.00 sec)

Tampilkan data karyawan yang namanya berakhiran huruf "i":

mysql> SELECT noid, nama FROM karyawan3

    -> WHERE nama LIKE "%i"

    -> ;

+------+----------------+

| noid | nama           |

+------+----------------+

|    2 | Mayangsariwati |

|    4 | Rita Sariwati  |

|    6 | Ratna Sari     |

|    8 | Desi Sukmini   |

|   16 | Noeri Sakti    |

+------+----------------+

5 rows in set (0.00 sec)

Tampilkan data karyawan yang namanya berakhiran "wati":

mysql> SELECT noid, nama FROM karyawan3

    -> WHERE nama LIKE "%wati" ;

+------+----------------+

| noid | nama           |

+------+----------------+

|    2 | Mayangsariwati |

|    4 | Rita Sariwati  |

+------+----------------+

2 rows in set (0.00 sec)

Nah, sudah jelas dengan pemakaian LIKE? Kalau anda perhatikan, operator LIKE ini tidak membedakan huruf besar dengan huruf kecil. Semuanya dianggap sama. Lalu bagaimana kalau kita ingin membedakan antara huruf besar dan kecil? Tunggu jawabannya setelah lunch break ini yach.... Makan dulu yuuk?!

Masih dengan operator LIKE, melanjutkan yang tadi. Oh ya, apa pertanyaan terakhir tadi ya? Mmm, bagaimana caranya agar operator LIKE dapat membedakan huruf besar dan kecil... Sederhana saja, cukup dengan menambahkan kata BINARY saja setelah perintah LIKE (jadinya LIKE BINARY)...Ya, kita coba aja dech....

mysql> SELECT noid, nama FROM karyawan3

    -> WHERE nama LIKE BINARY "a%"

    -> ;

Empty set (0.00 sec)

Lho kok empty set? Sekarang coba dengan perintah yang berbeda sedikit:

mysql> SELECT noid, nama FROM karyawan3

    -> WHERE nama LIKE BINARY "A%"

    -> ;

+------+----------------+

| noid | nama           |

+------+----------------+

|   11 | Achmad Widjaja |

|   17 | Ahmaddin Sudin |

+------+----------------+

2 rows in set (0.00 sec)

Nah, sekarang baru berhasil. Setelah huruf 'a' diganti dengan huruf 'A', maka muncullah hasilnya. Ya, kan?

Sekarang bagaimana kalau saya ingin menampilkan data, bukan diawal atau diakhir kalimat, tapi berada diantara sebuah kata/kalimat. Gimana tuch?

Coba dech cara ini:

mysql> SELECT noid, nama FROM karyawan3

    -> WHERE nama LIKE BINARY "%Di%"

    -> ;

+------+----------------+

| noid | nama           |

+------+----------------+

|    1 | Suwanto Dipura |

|   23 | Jumanto Dipuro |

+------+----------------+

2 rows in set (0.00 sec)

Coba lagi ach dengan yang lain:

mysql> SELECT noid, nama FROM karyawan3

    -> WHERE nama LIKE BINARY " %W%" ;

+------+----------------+

| noid | nama           |

+------+----------------+

|   11 | Achmad Widjaja |

|   17 | Winda Sukma    |

|   18 | Wati Sutinah   |

|   19 | Wanto Sukarno  |

|   20 | Wawan Wanisar  |

+------+----------------+

5 rows in set (0.00 sec)
mysql> SELECT noid, nama FROM karyawan3

    -> WHERE nama LIKE BINARY " %wan%"

    -> ;

+------+-------------------+

| noid | nama              |

+------+-------------------+

|    1 | Suwanto Dipura    |

|    3 | Purwanto Rojolele |

|   20 | Wawan Wanisar     |

+------+-------------------+

3 rows in set (0.00 sec)

Sudah jelas kan tentang LIKE? Bisa kan kalo mencoba sendiri untuk operator NOT LIKE? Prinsipnya sama aja kok dengan LIKE...

Nah, sementara anda mencoba operator NOT LIKE, saya akan menyiapkan materi untuk REGEXP... Setuju???

Operator REGEXP (singkatan dari REGular EXPressions) merupakan bentuk lain dari operator LIKE, dengan fungsi yang lebih disempurnakan. Operator REGEXP biasanya ditemani juga dengan simbol-simbol tetentu dalam melaksanakan tugasnya, seperti:

Simbol

Keterangan

.

Satu tanda titik (.) untuk mewakili satu karakter

[?]

Untuk mewakili beberapa karakter atau range yang ditentukan.

^

Untuk posisi awal dari sebuah kriteria yang ditentukan

$

Untuk posisi akhir dari sebuah kriteria yang ditentukan

Kita langsung saja pada contohnya yach:

Tampilkan nama karyawan yang berawalan huruf 'a':

mysql> SELECT noid, nama FROM karyawan3

    -> WHERE nama REGEXP "^a" ;

+------+----------------+

| noid | nama           |

+------+----------------+

|   11 | Achmad Widjaja |

|   17 | Ahmaddin Sudin |

+------+----------------+

2 rows in set (0.00 sec)

Tampilkan data karyawan yang namanya berawalan huruf "d":

mysql> SELECT noid, nama FROM karyawan3

    -> WHERE nama REGEXP "^d"

    -> ;

+------+-----------------+

| noid | nama            |

+------+-----------------+

|    8 | Desi Sukmini    |

|   12 | Delima Rahayu   |

|   13 | Dadang Sukandar |

|   24 | Deemas Sudirman |

+------+-----------------+

4 rows in set (0.00 sec)

Tampilkan nama karyawan yang berawalan huruf 'a' sampai dengan huruf 'd':

mysql> SELECT noid, nama FROM karyawan3

    -> WHERE nama REGEXP "^[a-d]

    -> ORDER BY nama ;

+------+---------------------+

| noid | nama                |

+------+---------------------+

|   11 | Achmad Widjaja      |

|   17 | Ahmaddin Sudin      |

|    7 | Charlie Simanjuntak |

|   13 | Dadang Sukandar     |

|   24 | Deemas Sudirman     |

|   12 | Delima Rahayu       |

|    8 | Desi Sukmini        |

+------+---------------------+

7 rows in set (0.00 sec)

Tampilkan data karyawan yang namanya berakhiran huruf "i":

mysql> SELECT noid, nama FROM karyawan3

    -> WHERE nama REGEXP "i$"

    -> ;

+------+----------------+

| noid | nama           |

+------+----------------+

|    2 | Mayangsariwati |

|    4 | Rita Sariwati  |

|    6 | Ratna Sari     |

|    8 | Desi Sukmini   |

|   16 | Noeri Sakti    |

+------+----------------+

5 rows in set (0.00 sec)

Tampilkan data karyawan yang namanya berakhiran "wati":

mysql> SELECT noid, nama FROM karyawan3

    -> WHERE nama REGEXP "wati$" ;

+------+----------------+

| noid | nama           |

+------+----------------+

|    2 | Mayangsariwati |

|    4 | Rita Sariwati  |

+------+----------------+

2 rows in set (0.00 sec)

Tampilkan nama karyawan yang panjangnya 10 karakter:

mysql> SELECT noid, nama FROM karyawan3

    -> WHERE nama REGEXP "^..........$"

    -> ;

+------+------------+

| noid | nama       |

+------+------------+

|    6 | Ratna Sari |

|    9 | Thomas Eng |

|   15 | Zaenal Nur |

+------+------------+

3 rows in set (0.00 sec)

Atau perintah diatas bisa juga ditulis dengan:

mysql> SELECT noid, nama FROM karyawan3

    -> WHERE nama REGEXP "^.{10}$"

    -> ;

+------+------------+

| noid | nama       |

+------+------------+

|    6 | Ratna Sari |

|    9 | Thomas Eng |

|   15 | Zaenal Nur |

+------+------------+

3 rows in set (0.00 sec)

Nah, untuk sementara cukup dulu deh tutorial ini. Nanti..kita lanjutkan lagi yach....Dan kita akan bermain-main dengan jumlah tabel lebih dari satu. bagaimana? Sounds great, right?. Tapi, sementara ini kita ambil nafas dulu dech.. OK?

Sesi-25 ini merupakan akhir dari tutorial MySQL versi < 4.0.x   Karena ada beberapa perubahan baik pada sistem maupun perintah-perintah (secara mendasar) yang ada di versi-versi terbaru MySQL, maka tutorial MySQL akan lebih membahas pada MySQL versi 4.1.x.

Untuk ini tutorial MySQL versi 4.0.x atau lebih rendahnya saya hentikan disini. Untuk MySQL versi 4.1.x telah ada tutorialnya, dimulai dari cara intalasinya. Tetapi aplikasi perintahnya belum ditulis.... :) Mohon bersabar yach...


MusicJan 9, '08 9:02 PM
for everyone
Ayat - Ayat Cinta OST. Ayat - Ayat Cinta Rossa 

Photo AlbumAyat-ayat Cinta in PictureJan 9, '08 8:59 PM
for everyone

LinkJan 9, '08 3:24 AM
for everyone
Link: http://www.divshare.com/download/982497-a98

Judul Buku : Ayat-Ayat Cinta
Penulis : Habiburrahman El Shirazy
Penerbit : Republika, Jakarta
Tahun : 2004
Ukuran Buku : 426 halaman, 20,5 x 13,5 cm
ISBN : 979-3604-02-6
Edisi Cetakan : Cetakan XI, Januari 2006


LinkNov 3, '07 5:25 AM
for everyone

Photo AlbummeOct 29, '07 5:29 AM
for everyone
ddd
dThumbnaild
ddd

MusicOct 27, '07 12:14 AM
for everyone
you shall overcome Tsubasa Chronicle Original Soundtrack - Future Soundscape IV Kajiura Yuki 

Blog EntryJul 16, '07 11:26 PM
for everyone
Mau Cari-Cari Buku Coba Disini


NoteNotex Temen
   
aburizki wrote on Feb 17, '09
assalamu'alaikum,
content nya oke, tapi background-nya too light.....sakit mata membacanya
ayashi4 wrote on Dec 12, '08
ayashi4 wrote on Sep 26, '08
umur awk berapa??ambil jurusan apa??panggil ja azyan...apa nama betul awk??
selamat hari raya..maaf,zahir&batin...
ayashi4 wrote on Sep 26, '08

This Mix is designed by ayashi4dita
ayashi4 wrote on Sep 5, '08
study ok ja...tgh buat apa sekarang??/
ayashi4 wrote on Sep 5, '08


This Mix is designed by ayashi4dita
xnuxon wrote on Aug 5, '08
sangat berguna konten2 di sini. terima kasih
ayashi4 wrote on May 25, '08
ayashi4 wrote on May 25, '08
Assalamulaikum apa kabar??
walaikummussalam,c-hat...
keluarga awk tinggal di sabah??
awk pernah ke sabah??
ayashi4 wrote on May 25, '08