Pengenalan MySQL

Sejarah MySQL

MySQL dikembangkan oleh sebuah perusahaan Swedia bernama MySQL AB, yang kala itu bernama TcX DataKonsult AB, sejak sekitar 1994–1995, meski cikal bakal kodenya bisa disebut sudah ada sejak 1979. Tujuan mula-mula TcX membuat MySQL pada waktu itu juga memang untuk mengembangkan aplikasi Web untuk klien—TcX adalah perusahaan pengembang software dan konsultan database. Kala itu Michael Widenius, atau “Monty”, pengembang satu-satunya di TcX, memiliki aplikasi UNIREG dan rutin ISAM yang dibuat sendiri dan sedang mencari antarmuka SQL untuk ditempelkan di atasnya. Mula-mula TcX memakai mSQL, atau “mini SQL” (akan kita kunjungi nanti). Barangkali mSQL adalah satu-satunya kode database open source yang tersedia dan cukup sederhana saat itu, meskipun sudah ada Postgres (juga akan dibahas sesaat lagi). Namun ternyata, menurut Monty, mSQL tidaklah cukup cepat maupun fleksibel. Versi pertama mSQL bahkan tidak memiliki indeks. Setelah mencoba menghubungi David Hughes—pembuat mSQL—dan ternyata mengetahui bahwa David tengah sibuk mengembangkan versi dua, maka keputusan yang diambil Monty yaitu membuat sendiri mesin SQL yang antarmukanya mirip dengan mSQL tapi memiliki kemampuan yang lebih sesuai kebutuhan. Lahirlah MySQL.

Nama MySQL (baca: mai és kju él) tidak jelas diambil dari mana. Ada yang bilang ini diambil dari huruf pertama dan terakhir nama panggilan Michael Widenius, Monty. Ada lagi yang bilang kata My diambil dari nama putri Monty, yang memang diberi nama My—karena Monty memang aslinya seorang Finlandia. Tapi sebetulnya kalau source code MySQL dilirik, prefiks my memang sudah terbubuhi di mana-mana—prefiks ini sering menjadi prefiks umum kalau seseorang membuat kode kustom tersendiri untuk sesuatu. Kalau Anda betul-betul penasaran mana yang benar, mungkin bisa bertanya langsung kepada Monty.

MySQL versi 1.0 dirilis Mei 1996 secara terbatas kepada empat orang. Baru di bulan Oktober versi 3.11.0 dilepas ke publik. Namun mula-mula kode ini tidak diberikan di bawah lisensi General Public License, melainkan lisensi khusus yang intinya kurang lebih begini: “Source code MySQL dapat dilihat dan gratis, serta server MySQL dapat dipakai tanpa biaya tapi hanya untuk kebutuhan nonkomersial. Untuk kebutuhan komersial (mis: mengemas dan menjual MySQL, atau menyertakan MySQL dalam program komersial lain) Anda harus bayar lisensi.” Sementara distribusi Windows MySQL sendiri dirilis secara shareware. Barulah pada Juni 2000 MySQL AB mengumumkan bahwa sejak versi 3.23.19, MySQL adalah software bebas berlisensi GPL. Artinya, “Source code MySQL dapat dilihat dan gratis, serta server MySQL dapat dipakai tanpa biaya untuk kebutuhan apa pun. Tapi jika Anda memodifikasi source code, Anda juga harus melepasnya di bawah lisensi yang sama, yaitu GPL.” Kini perusahaan MySQL AB, yang beranggotakan sekitar 10 programer dan 10 karyawan lain itu, memperoleh pemasukan terutama dari jasa konsultasi seputar MySQL.

Versi publik pertama, yang hanya berjalan di Linux dan Solaris serta sebagian besar masih belum terdokumentasi itu, dengan berangsur-angsur diperbaiki dan ditambah fitur demi fiturnya—tapi tetap dengan fokus utama pengembangan pada kelangsingan dan kecepatan. Artinya, fitur yang menyebabkan MySQL menjadi lambat tidaklah ditambahkan, atau ditunda dulu, atau ditambahkan tapi menjadi fitur yang opsional.

Versi awal MySQL ini, meski sudah bisa dipakai untuk aplikasi Web sederhana, belumlah memadai sama sekali untuk aplikasi bisnis. Contohnya, JOIN sederhana sudah ada, tapi tidak ada HAVING—baru di bulan Desember ditambahkan. Sudah ada tipe data TIMESTAMP dan kolom autoupdate, tapi tidak ada system-generated number (sequence)—baru di akhir 1996 juga ditambahkan modifier kolom AUTO_INCREMENT. Sudah ada LIMIT tapi GROUP BY dan ORDER BY memiliki keterbatasan. Dan seterusnya.

Barulah di versi-versi akhir 3.22—sepanjang 1998–1999—MySQL menjadi semakin popular dan dilirik orang. Stabilitasnya sudah baik. Kecepatannya meningkat. Sudah tersedia di berbagai platform, termasuk Windows. Seri 3.22 ini banyak dipakai di berbagai instalasi, mungkin hingga sekarang, sehingga MySQL AB tetap memberikan dukungan technical support untuk seri ini.

MySQL Terus Berkembang

Kalau di seri 3.22 MySQL mulai diadopsi banyak orang dan meningkat populasi penggunanya, maka di seri 3.23 dan 4.0-lah terjadi banyak peningkatan dari sisi teknologi. Ini tidak terlepas dari tuntutan pemakai yang semakin mengandalkan MySQL, namun membutuhkan fitur-fitur yang lebih banyak lagi. Sejak dari sebelum 3.22 dan awal 3.23, MySQL terus dikritik praktisi database maupun penggunanya mengenai tidak adanya fasilitas transaksi (COMMIT danROLLBACK). Pengembang MySQL menyarankan penggunaan LOCK TABLES untuk mengatasi masalah update atomik, tapi ini tentu saja bukan pengganti transaksi, karena tidak adanya kemampuan membatalkan efek perubahan di tengah jalan. Di seri 3.23-lah MySQL mulai memiliki kemampuan transaksi, row-level locking, dan foreign key constraint. Meski beberapa fasilitas popular lainnya masih belum ada—seperti subselek, view, dan trigger—ini sudah direncanakan dan akan mulai ditambahkan di seri 4.x.

Seri 3.23. Di seri 3.23 MySQL menambahkan tiga jenis tabel baru: pertama MyISAM, yang sampai sekarang menjadi tipe tabel default; kedua BerkeleyDB, yang pertama kali menambahkan kemampuan transaksi pada MySQL; dan ketiga InnoDB, primadona baru yang potensial. MySQL memang memiliki arsitektur yang memungkinkan tiap tabel ditangani oleh handler yang berbeda. Handler ini menerima perintah akses dan modifikasi dari lapisan MySQL yang lebih atas dan mewujudkannya secara fisik dari dan ke disk. Tabel tipe MyISAM merupakan tabel yang lebih cepat dari tabel ISAM, karena pola aksesnya telah disesuaikan dan dioptimasi untuk pola akses SQL. Selain itu MyISAM mendukung indeks pada kolom bertipe TEXT dan BLOB, serta mendukung tipe indeks FULLTEXT. Tabel tipe BerkeleyDB, atau BDB, menggunakan database embedded BerkeleyDB yang sudah terkenal itu untuk memanfaatkan kemampuan transaksinya. Sejak memiliki handler BDB, MySQL naik statusnya menjadi database yang ACID compliant, sesuatu yang amat penting bagi keamanan data. Namun BerkeleyDB tidaklah terlalu optimal untuk sebuah database SQL, sehingga akhirnya sebuah perusahaan Finlandia Innobase Oy membuat handler table baru bagi MySQL yang menggunakan database embedded InnoDB-nya—kala itu bernama Innobase, namun berganti nama karena masalah trademark produk Innobase yang sudah ada sebelumnya.

InnoDB membuat MySQL menarik karena peningkatan kecepatan dan kemampuan tambahan yang dimungkinkannya. Pertama-tama, InnoDB memiliki fitur transaksi dengan sistem multiversi. Artinya, jika sebuah klien memulai transaksi, maka perubahan yang dilakukan klien tersebut tidak akan terlihat oleh klien lain. Klien lain akan melihat kondisi tabel sebelum transaksi. Barulah jika transaksi oleh klien pertama dicommit, perubahan ini menjadi terlihat di semua klien lain. Bandingkan ini dengan tabel BDB misalnya, di mana klien yang ingin mengakses sebuah tabel yang sedang dipakai dalam sebuah transaksi akan diblok. Dengan kata lain, multiversi menghindari bloking yang tidak perlu. Ini ditambah lagi dengan row-level locking yang disediakan InnoDB, sehingga mempertinggi konkurensi dan mencegah terlalu banyak bloking. Handler tabel MySQL yang lain hanya mendukung table-level locking, sehingga sebuah klien hanya bisa memblok dengan tingkat granulasi tabel dan berpotensi memblok banyak klien lain yang ingin mengakses tabel yang sama. PostgreSQL dan beberapa database komersial sudah memiliki kemampuan-kemampuan ini. Berkat InnoDB, MySQL pun kini memiliki keduanya. Selain itu, InnoDB menambahkan foreign key constraint, sesuatu yang sering didambakan pengguna MySQL karena bisa menyederhanakan logika pemrograman dan menjaga kekonsistenan database mereka.

Seri 4.x. Di seri yang baru berjalan hingga 4.0 tahap alfa ini, pengembang MySQL berjanji akan menjadikan MySQL satu derajat lebih tinggi lagi. Fitur-fitur yang sejak dulu diminta akan dikabulkan, seperti subselek (di 4.1), union (4.0), foreign key constraint (4.0 atau 4.1—meski InnoDB sudah menyediakan ini di 3.23.x), stored procedure (4.1), view (4.2), cursor (4.1 atau 4.2), trigger (4.1). MySQL AB tetap berdedikasi mengembangkan dan memperbaiki MySQL, serta mempertahankan MySQL sebagai database open source terpopuler.

Di versi 3.23 dan selanjutnya MySQL semakin menarik untuk dilirik oleh pengguna non-Web. Situs mysql.com di halaman depannya dengan bangga memajang profil para pengguna MySQL yang terkenal, seperti Yahoo! Finance (yang mulai mengaku menggunakan MySQL beberapa waktu lalu di milis mysql), NASA (yang membuang Oracle demi memotong budget), atau perusahaan sekuritas Jepang Aizawa. MySQL tidak lagi sekedar dipercaya menyimpan data posting komentar pengunjung situs Web (seperti di slashdot.org, pengguna veteran MySQL) atau hit atau log Web, tapi juga kini sebagai tempat menyimpan data keuangan dan transaksi bisnis. Meskipun demikian, karakteristik pengguna database—yang biasanya terdiri dari perusahaan—adalah cenderung konvensional dalam mengadopsi produk baru. Jadi jangan terkejut kalau misalnya sampai sekarang Anda akan masih menjumpai orang yang menganggap MySQL belum ACID-compliant atau belum bisa melakukan transaksi. Padahal sudah dua tahun fitur ini ada di MySQL.

Kerikil Di Tengah Jalan

Sebetulnya babak baru pengembangan MySQL—yaitu saat MySQL dirilis sebagai produk open source sejati—dimulai saat perusahaan kecil MySQL AB ini menjalin kerja sama dengan sebuah perusahaan database Amerika bernama Progress Software di tahun 2000. Progress membantu meyakinkan Monty dkk agar mengganti lisensi produk MySQL menjadi GPL. Selain itu, Progress juga memasuki bisnis open source dengan membentuk NuSphere, yang akan menjual distribusi MySQL khusus. Model bisnis mengemas software open source nampaknya cukup laik di mata Progress, melihat kesuksesan distro-distro Linux dan perusahaan seperti Red Hat. Karena itu Progress juga berencana menyuntikkan dana hingga $2,5 juta dolar kepada MySQL AB, dengan tujuan agar MySQL bisa menjadi lebih baik lagi. Satu lagi, Nusphere juga akan membuat table handler baru bernama Gemini, yang didasarkan pada software database Progress. Gemini akan menambahkan row-level locking dan transaksi pada MySQL.

So far so good. Tapi ternyata, beberapa tindakan yang dilakukan oleh Nusphere membuat MySQL AB kesal. Pertama, Nusphere mengambil domain mysql.org (MySQL AB sendiri memiliki mysql.com hasil pemberian Patrick Lynch) dan tidak membuat pernyataan yang jelas di situs tersebut bahwa MySQL dikembangkan oleh MySQL AB, bukan oleh Nusphere. Dengan kata lain Nusphere memakai nama MySQL dan seolah mengaku menjadi pengembang MySQL, padahal MySQL sejak awal dikembangkan oleh MySQL AB. Kedua, Nusphere dengan distribusinya yang bernama “Nusphere MySQL Advantage” melanggar GPL. Ini ironis, karena perusahaan induknya Progress-lah yang setahun sebelumnya membantu MySQL menjadi GPL. Distribusi binary Nusphere ini megandung kode Gemini yang dilink statik ke MySQL. Menurut lisensi GPL, ini memang berarti kode Gemini pun harus dirilis sebagai GPL. Nyatanya, Nusphere tidak memberikan source code Gemini, tapi hanya berjanji akan melepasnya nanti. MySQL AB mencoba meminta kembali domain mysql.org dan mendesak Nusphere merilis source code Gemini, tanpa hasil.

Perselisihan kemudian menjadi memanas ketika pada tanggal 15 Juni 2001 Nusphere dan Progress mengajukan tuntutan ke pengadilan atas David Axmark (salah satu karyawan awal dan “penginjil” MySQL), Monty, dan MySQL AB, dengan tuduhan melanggar kontrak perjanjian. MySQL AB tidak mau kalah, ia menuntut balik Nusphere atas tuduhan pelanggaran trademark, perjanjian, dan lisensi GPL. Hingga hari artikel ini ditulis, proses pengadilan masih berlangsung. Oleh beberapa pihak keputusan akhir pengadilan akan sangat dinanti, karena jika MySQL AB menang maka supremasi dan validitas lisensi GPL akan benar-benar terbukti “di lapangan.” Ingin mengetahui lebih lanjut mengenai hal ini? Coba lihat FAQ MySQL AB di www.mysql.com/news/article-75.html. Kalau ada waktu, kunjungi juga slashdot.org dan carilah kata kunci “nusphere”.

Di luar masalah ini, MySQL terus dikembangkan secara aktif oleh MySQL AB. Dan untung bagi para pemakai, Gemini kini praktis telah digantikan oleh InnoDB yang memberikan kemampuan serupa. Saat ini domain mysql.org juga telah diambil alih oleh MySQL AB.

 

 

PostgreSQL

Di bawah popularitas MySQL, membayanglah PostgreSQL. Kalau MySQL disebut-sebut sebagai database open source paling popular, maka PostgreSQL sering dijuluki database open source paling mutakhir (advanced). Kedua database ini kadang begitu terlihat kontras satu sama lain, sehingga tidaklah mewakili sama sekali kalau kita katakan keduanya “bersaing.” Kalau MySQL dikembangkan terutama di Eropa, PostgreSQL mula-mula di Amerika (di Universitas of California di Berkeley, sama seperti sistem operasi Unix). Kalau latar belakang pengembangan MySQL adalah untuk kebutuhan bisnis klien, maka PostgreSQL berawal dari proyek akademik. Kalau MySQL berfokus pada kelangsingan dan kecepatan, maka PostgreSQL pada kelengkapan fitur, portabilitas, dan reliabilitas (meski ironis bahwa kini MySQL lebih portabel dalam hal ketersediaan di Windows). Kalau MySQL merupakan sebuah database relasional (RDBMS), maka PostgreSQL disebut objek-relasional (ORDBMS) karena fitur OO-nya seperti pewarisan tabel dan tipe data. [Lihat artikel MySQL vs PostgreSQL].

PostgreSQL memiliki sejarah yang lebih panjang dan berliku. Pertama memulai hidupnya dalam wujud bernama Ingres (“Interactive Graphics and Retrieval System”), yang dikembangkan di Universitas Berkeley mulai tahun 1977 hingga 1985. Pemimpin proyek Ingres adalah Profesor Michael Stonebraker dan Eugene Wong. Ingres mula-mula dikembangkan di atas platform komputer mini PDP-11. Belum ada SQL waktu itu, dan Ingres memiliki bahasa query tersendiri yang disebut QUEL.

Kode Ingres kemudian dikomersilkan sehingga berdirilah Relational Technologies (yang lalu berganti nama menjadi Ingres Corporation, dan kini berada di bawah perusahaan Computer Associates). Sementara itu, dari universitas yang sama, didirikan pulalah perusahaan Sybase dan Illustra (yang lalu bernama Informix, dan kini telah dibeli oleh IBM) oleh para alumninya. Profesor Stonebraker sempat terlibat di ketiga perusahaan ini. Salah satu pendiri Ingres juga merupakan pendiri Illustra. Jadi dari Ingres lahir berbagai produk database: Ingres sendiri, Sybase, dan Informix. Database komersial Ingres (yang mengalami berbagai metamorfosis nama, mulai dari Ingres II, Ingres NET, CA-Ingres, CA-OpenIngres, CA Advantage Ingres) masih ada dan dijual hingga kini.

Dari proyek Ingres juga lahirlah proyek penerusnya, Postgres (1986–1994). Dipimpin juga oleh Stonebraker, proyek ini bertujuan membuat Ingres agar menjadi lebih berorientasi objek. Kode Postgres inilah yang diambil menjadi Illustra dan Informix.

Tahun 1995 dua mahasiswa S2 di universitas yang sama, Jolly Chen dan Andrew Yu, menambahkan SQL pada Postgres untuk menggantikan QUEL. Hasilnya adalah Postgres95. Akhirnya kedua mahasiswa pun lulus dan meninggalkan Berkeley, namun Chen masih terus memaintain Postgres95. Produk ini memiliki komunitas yang aktif berdiskusi di mailing list. Setahun berikutnya, Postgres95 jadi bertambah popular. Anggota mailing list telah mencapai 1000 orang. Seseorang bernama Marc G. Fournier dari Kanada menawarkan sebuah server untuk dipakai menjadi host mailing list dan CVS. Hingga saat itu, ada empat orang yang menjadi pengembang utama Postgres95: Chen, Fournier, dan dua orang lain yaitu Thomas Lockhart di California, AS dan Vadim Mikheev di Rusia. Namun Postgres95 dikembangkan bersama-sama lewat Internet dan sumbangan patch dan berbagai orang di seluruh pelosok dunia.

Sayangnya, proyek ini belum terkelola secara baik, apalagi profesional. Semua pengembang utamanya punya karir masing-masing. Mereka hanya mengembangkan Postgres95 sebagai kerja hobi atau sampingan. Padahal jumlah pemakai sudah cukup banyak. Laporan-laporan bug banyak yang tidak tertangani dengan baik. Menurut Chen, keluarga Postgres secara tradisional dikembangkan dalam suasana akademik, dan belum siap untuk menerima sumbangan kode dan laporan bug yang begitu banyak. Lagipula, kode turun-temurun dari Ingres dan Postgres ini belum sepenuhnya dimengerti, bahkan oleh Chen. Untungnya, para pengembang Postgres95 berdedikasi untuk berbenah diri.

Pertengahan 1996, nama Postgres95 sepakat dianggap sudah basi, maka lahirlah PostgreSQL (baca: post-grés-kju-él), dengan label versi dimulai dari angka 6.0 (versi terakhir dari Postgres/Berkeley adalah 4.2, dan Postgres95 dianggap versi 5.x). Di sinilah, dan juga berlanjut di keluarga 7.0–7.1, banyak terjadi peningkatan dalam hal skalabilitas, fitur, dan kecepatan.

Meskipun demikian, perbaikan berlangsung tidak secara tiba-tiba, melainkan berangsur-angsur. Para pengembangnya perlu terlebih dulu masih perlu membenahi kode-kode lama dan kode yang belum sepenuhnya dimengerti. Hingga versi 6.4 (1998) misalnya—di mana banyak ditambahkan fitur baru seperti dukungan karakter internasional, bahasa stored procedure baru, view, dan beberapa sintaks SQL tambahan—banyak terjadi masalah stabilitas. Beberapa pemakai melaporkan menjalankan proses server PostgreSQL yang lalu secara misterius tiba-tiba mati tanpa laporan apa-apa di log—alias crash. Sebagian yang lain melaporkan diskonek secara acak. Dan sebagian lagi mengeluhkan kurang memuaskannya kinerja PostgreSQL. Bahkan ada pemakai yang membelot ke MySQL. Periode ini merupakan saat-saat yang cukup mengkhawatirkan bagi popularitas PostgreSQL. Contohnya, lihatwww.phpbuilder.com/columns/tim20000705.php3 di mana Tim Perdue menceritakan bahwa di tahun 1999, ia terpaksa beralih ke MySQL dalam membangun SourceForge. Kinerja PostgreSQL terlalu berbeda dengan MySQL sehingga mau tak mau pengguna setia PostgreSQL ini harus berganti database.

Versi 6.5 menurut pengembang PostgreSQL merupakan babak baru pemahaman mereka terhadap keseluruhan source code PostgreSQL. Versi ini juga merupakan versi perbaikan bug yang penting; ada banyak bug seperti berbagai kasus crash, kebocoran memori, dan kejanggalan/kekurangan pada sintaks SQL-nya diperbaiki. Selain itu, di versi 6.5 ditambahkan MVCC oleh Vadim, yang berpotensi meningkatkan kinerja PostgreSQL secara signifikan. MVCC, atau Multi Version Concurrency Control, serupa dengan InnoDB pada MySQL dalam hal memberikan kemampuan PostgreSQL memperlihatkan lebih dari satu versi tampilan data bagi klien. Perubahan data yang dibuat oleh klien yang sedang melakukan transaksi tidak akan terlihat dulu oleh klien lain sebelum transaksi dicommit. Ini menghindari locking yang tidak perlu.

Versi 6.5.x (1999, seri terakhir dari 6.x) cukup berhasil dan memuaskan bagi para pemakainya. Namun masih ada beberapa kekurangan PostgreSQL yang dirasakan mengganjal bagi banyak orang. Kekurangan-kekurangan ini lambat laun diperbaiki di seri 7.x, dan menurut Bruce Momjian, di seri 7.3 ia berharap PostgreSQL akan sepenuhnya layak dan sebanding dengan database komersial dalam hal fitur penting. Satu keterbatasan yang paling menyebalkan yaitu ukuran data maksimum sebuah field hanya 8–32KB. Ini menyebabkan orang sulit menyimpan teks panjang atau gambar di dalam database. Keterbatasan ini akhirnya dihapuskan di 7.1. Penambahan penting lainnya antara lain foreign key constraint (ditambahkan di 7.0), write-ahead logging untuk peningkatan keamanan dan kinerja (7.1), serta OUTER JOIN. Masih ada lagi fitur seperti replikasi yang rencananya akan ditambahkan setelah 7.2.

Pengguna setia PostgreSQL boleh berbangga dengan seri 7.x. Di seri ini PostgreSQL mulai menantang dan bahkan mengungguli MySQL dalam hal kecepatan, terutama di query-query kompleks dan pada kondisi load tinggi. Dalam artikelnya Tim Perdue melaporkan hasil benchmark MySQL 3.23 dan PostgreSQL 7.0 dan kesimpulannya adalah: PostgreSQL memang telah menjadi semakin baik. Dan kecepatannya cukup mengagumkan. Stabil pula.

Versi terbaru PostgreSQL saat artikel ini ditulis yaitu 7.2 (dirilis Februari lalu). PostgreSQL dikembangkan dengan siklus rilis sekitar 4 bulan, jadi kita bisa mengharapkan rilis berikutnya sekitar bulan Juni 2002. Hingga sekarang, di antara pengembang inti PostgreSQL yang paling aktif antara lain Thomas, Vadim, Tom Lane (AS), Tatsuo Ishii (Jepang), Hiroshi Inoue (Jepang), Philip Warner (Australia), dan Bruce Momjian (AS).

Fitur OO PostgreSQL

Yang membedakan PostgreSQL dan MySQL adalah kemampuan OO. Di PostgreSQL, kita dapat mendefinisikan sebuah tabel yang mewarisi definisi tabel lain. Misalnya, ada tabel Karyawan yang memiliki field partyId dan currentSalary. Kita dapat mendefinisikan tabel KaryawanDivisiA dengan hanya mendefinisikan field tambahan postId dan ditambah klausa SQL INHERITS (Karyawan). Field-field lain akan otomatis diambil dari tabel induknya, Karyawan. Bukan tabel saja, tipe data baru pun dapat didefinisikan. Dan uniknya, PostgreSQL pun memiliki tipe data geometri (seperti titik, garis, lingkaran, poligon) yang mungkin berguna bagi aplikasi ilmiah tertentu. Satu lagi, anehnya, PostgreSQL memberikan kita kemampuan mendefinisikan sebuah field sebagai array. MySQL mungkin tidak akan memiliki semua ini dalam waktu dekat.

Dari segi kekayaan SQL, para pengembang database mungkin akan lebih tergiur. PostgreSQL memiliki hampir semua fasilitas standar yang biasanya diinginkan: view (tabel virtual), trigger, subselek, stored procedure (dalam beberapa bahasa), dan foreign key constraint. PostgreSQL juga memiliki apa yang disebut rule, yaitu tindakan custom yang bisa kita definisikan dieksekusi saat sebuah tabel di-INSERT, UPDATE, atau DELETE. Sistem rule ini memungkinkan kita mengendalikan bagaimana data kita diubah atau diambil. Misalnya, kita dapat membuat sebuah tabel mernjadi bersifat append-only dengan membuat rule yang membatalkan efek DELETE dan UPDATE. Atau kita bisa melakukan pengecekan data sebelum terjadinya perubahan pada tabel. Atau melindungi row tertentu agar tidak bisa diambil datanya, dsb. Rule ini dipakai untuk mengimplementasi view. Meski begitu mungkin Anda perlu menghindari menggunakan rule secara eksplisit karena fasilitas ini tidak ada dalam standar (SQL92).

Lebih jauh mengenai perbandingan MySQL dan PostgreSQL bisa dilihat di artikel mwmag MySQL vs PostgreSQL.

Bisnis Database Open Source Juga

Keluarga Ingres/Postgres telah melahirkan beberapa perusahaan penjual produk komersial yang sukses—meski saat ini semua perusahaan tersebut telah dimakan oleh raksasa IBM/Microsoft dan CA. Lisensi Ingres/Postgres/Postgres95/PostgreSQL memang sejak dulu amat liberal, ala BSD. Artinya, dibandingkan dengan GPL yang mewajibkan produk turunan menjadi GPL pula, maka lisensi Postgres membolehkan kita memakai produk tersebut untuk tujuan apa pun, termasuk mengemas dan menjualnya sebagai produk komersial yang closed-source. Syaratnya hanya dua: pertama, nama penulis aslinya tetap disebutkan; dan kedua, pengembang awal—termasuk University of California, Berkeley—dibebaskan dari segala tanggung jawab yang terjadi akibat penggunaan software.

Di awal tahun 2000, sebuah perusahaan bernama Landmark Communications Inc. di Amerika mendirikan Great Bridge, yang bertujuan mengembangkan sebuah versi PostgreSQL komersial untuk dijual. Great Bridge merekrut Bruce Momjian menjadi wakil presiden di perusahaan tersebut. Selain itu dua pengembang inti PostgreSQL lainnya juga ikut bergabung. Total tim sekitar 25 orang.

Gerakan ini diikuti sekitar satu tahun kemudian oleh Red Hat, distributor Linux terbesar. Sebelumnya Frank Batten, salah satu investor di Red Hat dan yang lalu menjadi komisaris di Great Bridge, telah menyarankan agar Red Hat memasuki pasar database sejak akhir 1999. Namun waktu itu Red Hat memutuskan untuk tidak masuk ke dalam persaingan dengan Oracle dan IBM, sehingga akhirnya Frank pun keluar. Namun bulan Juni 2001, Red Hat menyatakan akan meluncurkan produk dan solusi database open source. Database yang akan dipakai masih dirahasiakan ketika itu, tapi banyak yang sudah bisa menebak bahwa PostgreSQL-lah yang akan dipakai. Dan benar, sebelumnya memang Red Hat sudah sempat menghubungi Great Bridge untuk mendiskusikan kemungkinan kerja sama (Red Hat mensubkontrak Great Bridge). Namun perundingan gagal, dan Red Hat akhirnya membentuk tim sendiri di bawah tajuk Red Hat Database Project. Tujuannya, ikut mengembangkan PostgreSQL dan menawarkan solusi database open source komersial.

Sayangnya, komersialisasi database open source nampaknya tidak, atau belum, berhasil. Setelah 16 bulan beroperasi dan tidak menghasilkan pemasukan yang memadai, akhirnya pada bulan September 2001 Great Bridge tutup. Ini menunjukkan kembali bahwa pasar database adalah pasar yang konvensional, yang belum akan mengadopsi sesuatu yang baru secara cepat. Bukan berarti database open source tidak bisa dikomersilkan, hanya saja. Dan bukan berarti PostgreSQL gagal secara komersial. Produk ini sudahbagaimana prospek usaha tersebut.

 

 

Firebird

Berdirilah grup IBPhoenix yang diprakarsai oleh Ann dan Paul Beach, yang terakhir menjabat sebagai GM unit bisnis divisi Interbase di Borland. Grup ini menyediakan layanan support Interbase dan berdedikasi terus memperbaiki Interbase open source. Dan lahir pulalah proyek baru yang merupakan fork Interbase, bernama Firebird. Firebird adalah proyek yang bermula dari source code Interbase 6.0 namun dikembangkan oleh para pengembang di luar Borland. Keduanya masih memiliki banyak persamaan hingga sekarang, namun sejak versi 6.0 dan seterusnya keduanya akan berjalan masing-masing. Saat ini bisa dikatakan bahwa Interbase open source = Firebird, dan Interbase semula (milik Borland) telah menjadi produk komersial lagi.

Firebird dirilis dengan lisensi IPL yang serupa dengan GPL. Anda diperbolehkan melihat dan memodifikasi source codenya, tapi dengan catatan perubahan tersebut harus juga dirilis dengan source code di bawah lisensi yang sama.

Fitur dan Stabilitas

Interbase adalah sebuah produk database yang matang, terbukti stabil, dan telah malang-melintang di industri selama belasan tahun. Interbase juga tersedia di Windows maupun Unix. Semua fitur standar yang Anda perlukan dimilikinya: view, stored procedure, trigger, dan dukungan SQL yang cukup kuat. Bahkan IBPhoenix mengatakan MySQL dan PostgreSQL belumlah jadi database tingkat komersial seperti Interbase. Meskipun demikian, Interbase belum tentu cocok bagi aplikasi Web Anda, karena pemakaian resource dan overhead koneksinya relatif lebih tinggi.

SAP DB

Database open source relasional keempat yang penting disebutkan adalah SAP DB. Database ini tidak begitu popular di Web, karena tidak terlalu cocok untuk aplikasi kecil hingga menengah. Namun jika Anda mencari database yang skalabel mendukung jumlah data dan kompleksitas yang tinggi, SAP menjanjikan database yang satu ini tidak akan mengecewakan.

Seperti kita ketahui, SAP AG (kepanjangan: Systems, Applications, and Products in Data Processing), berbasis di Jerman, adalah perusahaan ERP terbesar di dunia. Perusahaan-perusahaan besar internasional menggunakan produk SAP R/3 untuk mengelola proses bisnis mereka. SAP R/3 ini adalah sebuah produk yang besar dan kompleks. Meskipun arsitekturnya menggunakan database tunggal—karena inilah konsep dasar SAP R/3: satu database untuk satu perusahaan—namun jumlah tabelnya mencapai lebih dari 8000 buah. Pada umumnya database yang digunakan oleh SAP R/3 adalah Oracle, namun untuk menekan ongkos total implementasi SAP R/3 bagi sebagian klien, akhirnya SAP mengembangkan sendiri databasenya.

Tidak dari nol, tentu saja, karena itu akan membutuhkan waktu yang terlampau lama. Melainkan, SAP melisensi produk ADABAS yang dibuat oleh perusahaan Jerman juga, Software AG. ADABAS sendiri cikal bakalnya sudah ada sejak tahun 1977, sejak menjadi proyek riset di sebuah universitas di Berlin. Kode hasil proyek ini dikomersilkan menjadi produk DDB/4 oleh Nixdorf Computer AG. Nixdorf dibeli oleh Siemens beberapa tahun kemudian, dan Siemens melisensi database ini kepada Software AG. Maka jadilah ADABAS-D. Hingga saat ini, menurut SAP, ada lebih dari 100 pengembang yang mengerjakan SAP DB.

Sekitar setahun yang lalu, SAP memutuskan untuk melepas source code SAP DB 7.2. Dengan ini maka bertambah lagilah satu alternatif. Yang menarik dari SAP DB adalah skalabilitas dan fitur-fiturnya untuk menangani aplikasi kompleks, buktinya: SAP DB mampu digunakan untuk aplikasi sekompleks SAP R/3. Beberapa fitur yang tidak dimiliki MySQL dan PostgreSQL misalnya, yaitu view yang dapat di-UPDATE, tidak sekedar di-SELECT. Sama seperti PostgreSQL, SAP DB juga memiliki fitur OO. Kalau MySQL baru merencanakan HotBackup pada InnoDB, maka SAP telah memiliki fitur online backup ini. Seperti halnya Interbase, SAP DB pun dilengkapi dengan tool-tool grafis. Satu-satunya alasan utama untuk tidak menggunakan SAP DB barangkali karena komunitasnya jauh lebih kecil dibandingkan MySQL dan PostgreSQL.

SAP DB dirilis di bawah lisensi GPL.

Database Lain

Empat database yang telah dibahas sebelumnya ini secara umum menjadi pilihan utama kebanyakan orang. Namun nasih ada beberapa database open source yang ada di luar sana dan akan saya sebutkan sebagian di antaranya satu persatu.

GNU SQL. Inilah proyek database dari GNU, superproyek yang bertujuan akhir membentuk sistem operasi lengkap yang sepenuhnya dibangun dari software bebas (GPL). Banyak software yang dikembangkan GNU berhasil menjadi popular. Di antaranya adalah gcc (kompiler C), bash (shell Unix), emacs (editor teks), dan GNOME (lingkungan GUI untuk Unix). Ada juga beberapa yang gagal atau terhenti. GNU SQL boleh dibilang masuk ke dalam kategori kedua. Produk ini tidak pernah popular dan pengembangannya telah tertunda/berhenti sama sekali tahun-tahun terakhir ini. Tujuan proyek GNU SQL adalah untuk membuat server database yang portabel dan mendukung dialek SQL89–SQL92 (sebagian). Tidak ada alasan bagi Anda untuk menggunakan database ini, kecuali untuk bermain-main atau jika Anda berminat terlibat dalam pengembangannya. www.gnusql.org.

mSQL. Alias “mini-SQL”. Produk ini bermula dari tesis doktoral seorang mahasiswa di Australia bernama David Hughes di awal 1990-an. Meski hingga saat ini mSQL tidaklah berkembang dari segi tim, fitur, maupun skalabilitas—bagaikan anak kecil yang tidak lagi tumbuh menjadi dewasa—namun produk ini sempat berjasa, antara lain karena mendorong Michael Widenius mengembangkan MySQL. Kala itu memang tidak ada database SQL gratis yang tersedia. Postgres sudah ada, tapi belum memiliki bahasa SQL. www.hughes.com.au.

Gadfly. Sebuah database SQL in-memory yang diimplementasi dalam Python. Bukan untuk keperluan generik memang, tapi lebih untuk diembed dan mengolah data aplikasi yang muat seluruhnya di memori. Uniknya, meskipun kecil tapi Gadfly mendukung cukup banyak subset SQL dan juga memiliki fitur transaksi. Sekarang tidak lagi dikembangkan secara aktif. Barangkali karena sedikit penggunanya. www.chordate.com/gadfly.html.

ArunaDB. Kalau Python punya Gadfly, bahasa skripting Ruby pun punya ArunaDB. ArunaDB direncanakan akan menjadi database yang cukup generik dan memiliki fitur-fitur dari transaksi hingga view, dari trigger hingga stored procedure (yang akan Anda tulis dalam Ruby, tentu saja). Hingga artikel proyek ini belum rampung. www.arunadb.com.

Database Non-SQL

Kalau kita melihat keluar konteks database relasional, maka pilihan yang akan Anda dapatkan lebih banyak lagi. Mulai dari mesin persistensi, database objek (meski tidak terlalu banyak pilihan untuk yang ini), hingga database khusus. Berikut ini saya sebutkan beberapa yang [setidaknya menurut pandangan saya] menarik untuk dilihat:

BerkeleyDB. Meskipun mungkin tidak sefamiliar di telinga kita seperti halnya MySQL atau PostgreSQL, tapi database ini punya track record yang cukup banyak, seperti dipakai oleh BIND (software name server paling dominan di Internet), Sendmail (mail server yang juga paling banyak ada di Internet hingga saat ini), dan juga oleh perusahaan dari mulai Amazon hingga Netscape hingga Motorola. Sleepycat, perusahaan vendor BerkeleyDB, dengan bangga menyebut produknya: “database yang ada di mana-mana.” Ingat bahwa MySQL pun memakai BerkeleyDB untuk mendapatkan kemampuan transaksi pertamanya. BerkeleyDB, atau BDB singkatnya, adalah sebuah library database yang ringan, dengan tujuan utama untuk diembed di dalam aplikasi lain. Dengan library ini, sebuah aplikasi dapat menangani data berukuran besar lengkap dengan kemampuan transaksi. Hingga kini BDB didistribusikan dengan lisensi ganda (seperti halnya MySQL dulu). Penggunaan komersial harus bayar, sementara nonkomersial tidak. Tapi jika aplikasi kita tidak melink BDB secara statik, maka kita tidak diwajibkan membayar. www.sleepycat.com.

Keluarga DBM (gdbm, ndbm, sdbm). Jika Anda membutuhkan hash table yang disimpan di disk, maka sejak dahulu telah tersedia library DBM di Unix. Yang paling banyak digunakan sekarang adalah gdbm dari GNU. Sebagai pemakai akhir mungkin kita jarang berurusan dengan library ini, karena dbm umumnya dipakai sebagai backend oleh aplikasi lain. Sebutlah htdig (full text indexer dan search engine) misalnya, atau praktis berbagai aplikasi lain yang ingin melakukan lookup tabel secara cepat (mis: Apache, Postfix, Squid, database lain, dsb). www.gnu.org/software/gdbm/gdbm.html.

rdfDB. Sebuah proyek menarik oleh mantan CTO Epinions.com. Tujuan database ini yaitu untuk menyimpan data graph yang nanti dapat diekstrak melalui bahasa query mirip SQL. Backendnya saat ini menggunakan DBM.www.guha.com/rdfdb.

FastDB. Library lain untuk mengolah in-memory database, tapi kali ini dalam C++. www.geocities.com/SiliconValley/Orchard/5802/fastdb.html

 

ZODB. Sebuah mesin persistensi untuk Python. www.amk.ca/zodb/.

 

Struktur Bahasa MySQL

Bahasa strutrektur di MySQL dikanal dengan SQL, (Structure Query Language). Pada bagiian ini akan dibahas tentang statemen dengan SQL pada MySQL.

Nilai Literal 

Nilia literal antaranain  strings, angka desima, angka  hexadecimal , boolean  danNULL. 

Strings

string adalah  akarakter yang dituliskan dengan menggunakan tanda petik tunggal (“'”)  atau petik ganda  (")  Contoh:

'a string'
"Badiyanto"
SELECT N'some text';
SELECT n'some text';
SELECT _utf8'some text';

ada sejumlah karakter khusus yang mengandung arti dalam SQL atau juga desebut spesial kararakter. Maka untuk menuliskan karakter tersebut menggunakan awalan backslash("\")

\0

nilai ASCII 0 (NUL) character.

\'

karakter petik tunggal  (“'”) c.

\"

karakter petik gandda (“"”)

\b

karakter backspace

\n

kareter baris baru  (linefeed)

\r

karakter enter (carriage return) .

\t

karater Tabulasi.

\Z

karekter ASCII 26 (Control-Z)..

\\

karakter backslash (“\”) c.

\%

karakter persen “%

\_

karakter garis bawah “_” .

 

Angka

Anga berupa anggka desimal bulat tipenya adalah integer, untuk angka pecahan  dipisahkan dengan  “.” . Sebuah angka secara default bilangan postitf tanpa tanda, atau tanda "+"  dan untuk negatif dengan tanda  “-” 

Contoh angka  integer

1221
0
-32

Contoh angka untuk bilangan pecahan:

294.42
-32032.6809e+10
148.00

Bilangan Hexadesmal

Mysql juga mendukung penggunaan angka  hexadesimal, Dalam konteks bilangan mengunakan bilangan integer (64-bit precision). Dituliskan dengan format string dan dikonversikan ke bilangan biner (string). Contoh:

mysql> SELECT x'4D7953514C';
-> 'MySQL'

mysql> SELECT 0x0a+0;
-> 10

mysql> SELECT HEX('cat');
        -> '636174'
mysql>
 
SELECT 0x636174;
        -> 'cat'

Boolean

Tipe data atau nilai logika boolean bernilai dengan memanggil kontata TRUE dan FALSE hasil select bernia 1 dan 0. Lihat Contoh berikut :

mysql> SELECT TRUE, true, FALSE, false;
        -> 1, 1, 0, 0

Nilai Bit-Field

 MySQL 5.0.3 mulai menggunakan, nilai bit-field dan dapat ditulis menggunkan  perintah  b 'value' atau notasi 0b nilainya adalah biner ditulis menggunakan tambahan bilangan 0 untuk melakukan konversi.

mysql> CREATE TABLE t (b BIT(8));
mysql> INSERT INTO t SET b = b'11111111';
mysql> INSERT INTO t SET b = b'1010';
mysql> INSERT INTO t SET b = b'0101';

mysql> SELECT b+0, BIN(b+0), OCT(b+0),       -> HEX(b+0) FROM t;
+------+----------+----------+----------+
| b+0  | BIN(b+0) | OCT(b+0) | HEX(b+0) |
+------+----------+----------+----------+
|  255 | 11111111 | 377      | FF       | 
|   10 | 1010     | 12       | A        | 
 
|    5 | 101      | 5        | 5        | 
+------+----------+----------+----------+
 
mysql> SET @v1 = b'1000001';
mysql> SET @v2 = CAST(b'1000001' AS UNSIGNED @v3 = b'1000001'+0;
 
mysql> SELECT @v1, @v2, @v3;
 
+------+------+------+
| @v1  | @v2  | @v3  |
+------+------+------+
| A    |   65 |   65 | 
+------+------+------+

 Nilai NULL

NULL adalah data blank atau karakter NULL, biasanya dituliskan dengan \N

 

BahasaQuery Formal

 

AljabarRelational:

 

OPERASI -OPERASI DASAR :

-SELECT

-PROJECT

-CARTESIAN PRODUCT

-UNION

-SET DIFFERENCE

OPERASI -OPERASI TAMBAHAN:

-NATURAL JOIN

-THETA JOIN

-INTERSECTION

-DIVISION

 

a. Select/Restrict

 

Memperolehtupel-tupeldarisuaturelasiyang memenuhipredikattertentu

Simbol: σ(sigma )

OperasiSELECT akanmelibatkan:

Operand : konstanta/ bilangan

Operator aritmatika: <, =, >, , ,

Operator logika: (and), (or), _(not)

ContohQueri:

SkemarelasiMAHASISWA (npm,nama,alamat,kota,jkel)

DicariInformasimengenaimahasiswayang mempunyai

NPM = “10296126”

σnpm=“10296126”(MAHASISWA)

Hasilnya: ???

 

b. Project

 

Memperolehatribut-atributtertentudarisuaturelasi

Simbol:Π(pi)

ContohQueri:

SkemaRelasiMAHASISWA (npm,nama,alamat,kota,jkel)

Dicariinformasimengenainamadankotamahasiswa

Πnama,kota(MAHASISWA)

Hasilnya: ???

 

c. Cartesian Product

 

Membentuksuaturelasidariduarelasiyang

terdiridarikombinasitupel-tupelyang mungkin

Simbol:X (cros)

ContohQueri:

SkemaRelasiMAHASISWA(npm,nama,alamat,kota,jkel)

SkemaRelasiMKULMI(kdmk,mtkul,sks)

Kombinasikandata darirelasiMAHASISWA dengandata

darirelasiMKULMI.

MAHASISWA X MKULMI

Hasilnya: ???

 

d. Union

 

Membentuksuaturelasiyang terdiridaritupel-

tupelyang beradapadasalahsaturelasiatau

padakeduarelasi, dengansyarat:

•-MisalkanadarelasiR danS, makajumlahatributrelasiR danS harussama

•-Domain dariatributkei dariR harussama dengandengandomain dariatributkei dariS.

Simbol: (union)

ContohQueri

SkemarelasiMAHASISWA (npm,nama,alamat,kota,jkel)

SkemarelasiDOSEN (nip,nama,alamat,kota,jkel)

Gabungkandata darirelasiMAHASISWA dengandata

darirelasiDOSEN

MAHASISWA DOSEN

Hasilnya:???

 

e. Set Difference

 

Membentuksuaturelasiyang terdiridaritupel-tupel

yang beradapadarelasipertamadantidakberadapada

relasikeduaataukedua-duanya.

Simbol: (minus )

ContohQueri:

SkemarelasiMAHASISWA (npm,nama,alamat,kota,jkel)

SkemarelasiDOSEN (nip,nama,alamat,kota,jkel)

Dicarinamamahasiswayang beradapadakotayang sama dengankotadosen.

Πnama(σkota=‘Jakarta’(MAHASISWA)) −Πnama(σkota=‘Jakarta’(DOSEN))

Hasilnya: ???

 

f. Natural Join

 

Membentuksuaturelasidariduarelasiyang terdiri

darikombinasiyang mungkindarirelasi-relasi.

Simbol: Χ

Contohnya:

SkemarelasiMAHASISWA (npm,nama,alamat,kota,jkel)

SKEMA relasiKRS (npm,kdmk,kelas)

Dicarinamamahasiswayang mengambilmatakuliahdengankodematakuliah“KK021”

Πnama(σkdmk=“KK021”(MAHASISWA X KRS))

Hasilnya: ???

 

g. Theta Join

 

Membentuksuaturelasidariduarelasiyang terdiri

darikombinasiyang mungkindarirelasi-relasidengan

kondisitertentu.

Simbol: Χ

θ

ContohQueri:

SkemarelasiMAHASISWA (npm,nama,alamat,kota,jkel)

SkemarelasiDOSEN (nip,nama,alamat,kota,jkel)

Dicaripasangantupelnamamahasiswadannamadosenyang tinggaldikotayang sama.

ΠMAHASISWA.nama, DOSEN.nama(MAHASISWA X DOSEN)

MAHASISWA.kota= DOSEN.kota

Hasilnya: ???

 

h. Intersection

 

Membentuksuaturelasiyang terdiriatastupel-tupel

yang sama dariduarelasi.

Simbol:

ContohQueri:

SkemarelasiMKULMI (kdmk,namamk,sks)

SkemarelasiMKULTK(kdmk,namamk,sks)

Dicarinamamatakuliahdengankodematakuliah“KK021”yang beradapadajurusanMI danTK.

Πnamamk(σkdmk=“KK021”(MKULMI)) ∩Πnamamk(σkdmk=“KK021”(MKULTK))

Hasilnya: ???

 

i. Division

 

Untukmendapatkannilaiyang adapadasalahsatuatributdari

relasi‘pembilang’yang nilaiatributlainnyasama dengannilai

atributrelasi‘penyebut’.

Simbol: _

Contohnya:

SkemarelasiMAHASISWA (npm,nama,alamat,kota,jkel)

SkemarelasiKRS (npm,kdmk,kelas)

Dicarisemuanamamahasiswayang mengambilmatakuliahdengankodematakuliah“KK021”

Πnpm,nama(MAHASISWA) _Πnpm(σkdmk=“KK021”(KRS))

Hasilnya: ???

Menjalankan mysql

Menjalankan mysql dapat dilakukan melalui menu Windows: Start -> Programs -> mysql ->

mysql Server 5.0 -> mysql Command Line Client. Kemudian Anda masukkan password

yang telah Anda buat pada saat instalasi mysql.

Enter password: ******

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

Your mysql connection id is 60

Server version: 5.0.45-community-nt mysql Community Edition (GPL)

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

mysql >

 

Menampilkan database

 

Kita coba dengan perintah "SHOW DATABASES" yang akan menampilkan database yang ada di

dalam sistem mysql kita.

mysql> show databases ;

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

| Database

|

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

| information_schema |

| mysql

|

| test

|

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

3 rows in set (0.00 sec)

Catatan: Istilah database perlu dipahami dengan baik. Database di dalam mysql adalah

sekumpulan tabel-tabel. Jumlah tabel minimal satu buah, dan maksimalnya tidak terbatas.

Semakin banyak tabel, maka akan semakin besar ukuran database Anda. Yang membatasi besarnya

database adalah kemampuan sistem operasi kita, dan juga jumlah kapasitas ruang dalam haarddisk

dan memori komputer Anda. Keterangan selengkapnya mengenai hal ini dapat dilihat pada situs mysql (http://www.mysql.com).

Membuat database baru

Sudah ada 3 buah database di dalam sistem mysql. Sekarang kita akan membuat sebuah database

untuk latihan kita. Gunakan perintah "CREATE DATABASE" untuk membuat sebuah database.

mysql> create database latihan1 ;

Query OK, 1 row affected (0.02 sec)

Anda perhatikan dari dua perintah mysql di atas,bahwa setiap perintah selalu diakhiri dengan

tanda ";" (titik-koma). Memang pada umumnya perintah-perintah mysql diakhiri oleh tanda ";"

ini. Perhatikan perintah dibawah ini bila ditulis tanpa tanda titik-koma ";'.

mysql> create database latihan2

->

Sistem mysql akan menampilkan tanda panah '->' yang menyatakan bahwa perintah mysql

tersebut dianggap belum selesai (karena belum diakhiri dengan tanda titik-koma ';').

Sekarang kita lengkapi perintah sebelumnya dengan tanda titik-koma ';'

 mysql> create database latihan2

-> ;

Query OK, 1 row affected (0.02 sec)

 

Nah, semuanya berjalan normal bukan? :) Mari kita lanjutkan tutorialnya...

Kita periksa lagi hasil dari perintah di atas dengan "SHOW DATABASE".

mysql> show databases ;

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

| Database

|

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

| information_schema |

| latihan1

|

| latihan2

|

| mysql

|

| test

|

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

5 rows in set (0.00 sec)

Menghapus database

Kita tidak memerlukan database latihan2, maka kita dapat menghapusnya dengan perintah DROP

DATABASEHati-hati dalam menggunakan perintah DROP DATABASE ini, karena database

beserta seluruh isinya akan lenyap dari muka bumi tanpa bisa kita kembalikan lagi! Parahnya lagi,

sistem mysql tidak memberikan pertanyaan konfirmasi kepada Anda sebelum melakukan proses

penghapusan database ini!

Mysql> drop database latihan2 ;

Query OK, 0 row affected (0.02 sec)

Anda bisa memeriksanya lagi hasil dari perintah di atas dengan "SHOW DATABASE".

mysql> show databases ;

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

| Database

|

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

| information_schema |

| latihan1

|

| mysql

|

| test

|

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

4 rows in set (0.00 sec)

Anda perhatikan, database latihan2 sudah menghilang. Sekali lagi, hati-hati dalam menggunakan

perintah DROP DATABASE!

Memilih dan membuka sebuah database

Sekarang kita pilih database "latihan1" dan kita buka dengan perintah "USE"

mysql> use latihan1 ;

Database change

 

Melihat isi sebuah database

Untuk melihat apa isi dari sebuah database, kita gunakan perintah "SHOW TABLES". Mari kita

coba.

 mysql> show tables ;

Empty set (0.00 sec)

Hasil dari perintah SHOW TABLES diatas adalah "Empty Set", yang berarti belum ada tabel

apapun didalam database latihan1.

Membuat tabel baru

Kita akan membuat sebuah tabel baru dengan menggunakan perintah "CREATE TABLE".

Contohnya sebagai berikut..

mysql > create table karyawan ;

ERROR 1113 (42000): A table must have at least 1 column

Ternyata ada kesalahan yang terjadi. Untuk membuat sebuah tabel di mysql, kita harus

menentukan minimal satu buah field/kolom di dalamnya. Sekrang kita ubah perintah di atas menjadi

sebagai berikut...

mysql > create table karyawan

-> (nopeg INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,

-> nama VARCHAR(50) NOT NULL)

-> ;

Query OK, 0 rows affected (0.14 sec)

Cukup panjang ya perubahan perintahnya. Mungkin sintaks perintahnya agak membingungkan pada

awalnya. Tidak apa-apa, nanti akan kita bahas artinya. Secara umum, kita akan membuat sebuah

tabel Karyawan dengan 2 buah kolom/field. Kolom pertama adalah NOPEG dengan jenis data

bilangan bulat (INTeger), tanpa tanda negatif (UNSIGNED), yang akan bertambah nilainya secara

otomatis (AUTO_INCREMENT), dan kolom NOPEG adalah kolom utama (PRIMARY KEY).

Kemudian pada kolom kedua, NAMA akan menampung nama karyawan, dengan jenis data

VARiabel CHARacter, lebar datanya dapat menampung maksimal 50 karakter, dan tidak boleh

dikosongkan (NOT NULL). Kurang lebih seperti itulah ceritanya.. :)

Kita lihat kembali apa isi dari database latihan1:

mysql> show tables ;

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

| Tables_in_latihan1 |

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

| karyawan

|

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

1 row in set (0.00 sec)

Dari hasil perintah di atas, kita lihat bahwa database latihan1 telah memiliki sebuah tabel yang

bernama karyawan. Selanjutnya kita akan lihat apa struktur dari tabel karyawan tersebut.

1 komentar:

Anonim mengatakan...

perlu memeriksa:)