Artikelmysql

my website slogan here

Buildings

Sejarah MySQL

MySQL pada awalnya diciptakan pada tahun 1979, oleh Michael "Monty" Widenius, seorang programmer komputer asal Swedia. Monty mengembangkan sebuah sistem database sederhana yang dinamakan UNIREG yang menggunakan koneksi low-level ISAM database engine dengan indexing. Pada saat itu Monty bekerja pada perusahaan bernama TcX di Swedia. TcX pada tahun 1994 mulai mengembangkan aplikasi berbasis web, dan berencana menggunakan UNIREG sebagai sistem database. Namun sayangnya, UNIREG dianggagap tidak cocok untuk database yang dinamis seperti web. TcX kemudian mencoba mencari alternatif sistem database lainnya, salah satunya adalah mSQL (miniSQL). Namun mSQL versi 1 ini juga memiliki kekurangan, yaitu tidak mendukung indexing, sehingga performanya tidak terlalu bagus. Dengan tujuan memperbaiki performa mSQL, Monty mencoba menghubungi David Hughes (programmer yang mengembangkan mSQL) untuk menanyakan apakah ia tertarik mengembangkan sebuah konektor di mSQL yang dapat dihubungkan dengan UNIREG ISAM sehingga mendukung indexing. Namun saat itu Hughes menolak, dengan alasan sedang mengembangkan teknologi indexing yang independen untuk mSQL versi 2. Dikarenakan penolakan tersebut, David Hughes, TcX (dan juga Monty) akhirnya memutuskan untuk merancang dan mengembangkan sendiri konsep sistem database baru. Sistem ini merupakan gabungan dari UNIREG dan mSQL (yang source codenya dapat bebas digunakan). Sehingga pada May 1995, sebuah RDBMS baru, yang dinamakan MySQL dirilis. David Axmark dari Detron HB, rekanan TcX mengusulkan agar MySQL di ‘jual’ dengan model bisnis baru. Ia mengusulkan agar MySQL dikembangkan dan dirilis dengan gratis. Pendapatan perusahaan selanjutnya di dapat dari menjual jasa “support” untuk perusahaan yang ingin mengimplementasikan MySQL. Konsep bisnis ini sekarang dikenal dengan istilah Open Source. Pada tahun 1995 itu juga, TcX berubah nama menjadi MySQL AB, dengan Michael Widenius, David Axmark dan Allan Larsson sebagai pendirinya. Titel “AB” dibelakang MySQL, adalah singkatan dari “Aktiebolag”, istilah PT (Perseroan Terbatas) bagi perusahaan Swedia.[3]

Keistimewaan MySQL

MySQL memiliki beberapa keistimewaan, antara lain :

  • Portabilitas. MySQL dapat berjalan stabil pada berbagai sistem operasi seperti Windows, Linux, FreeBSD, Mac Os X Server, Solaris, Amiga, dan masih banyak lagi.
  • Perangkat lunak sumber terbuka. MySQL didistribusikan sebagai perangkat lunak sumber terbuka, dibawah lisensi GPL sehingga dapat digunakan secara gratis.
  • Multi-user. MySQL dapat digunakan oleh beberapa pengguna dalam waktu yang bersamaan tanpa mengalami masalah atau konflik.
  • 'Performance tuning', MySQL memiliki kecepatan yang menakjubkan dalam menangani query sederhana, dengan kata lain dapat memproses lebih banyak SQL per satuan waktu.
  • Ragam tipe data. MySQL memiliki ragam tipe data yang sangat kaya, seperti signed / unsigned integer, float, double, char, text, date, timestamp, dan lain-lain
  • Perintah dan Fungsi. MySQL memiliki operator dan fungsi secara penuh yang mendukung perintah Select dan Where dalam perintah (query).
  • Keamanan. MySQL memiliki beberapa lapisan keamanan seperti level subnetmask, nama host, dan izin akses user dengan sistem perizinan yang mendetail serta sandi terenkripsi.
  • Skalabilitas dan Pembatasan. MySQL mampu menangani basis data dalam skala besar, dengan jumlah rekaman (records) lebih dari 50 juta dan 60 ribu tabel serta 5 miliar baris. Selain itu batas indeks yang dapat ditampung mencapai 32 indeks pada tiap tabelnya.
  • Konektivitas. MySQL dapat melakukan koneksi dengan klien menggunakan protokol TCP/IP, Unix soket (UNIX), atau Named Pipes (NT).
  • Lokalisasi. MySQL dapat mendeteksi pesan kesalahan pada klien dengan menggunakan lebih dari dua puluh bahasa. Meski pun demikian, bahasa Indonesia belum termasuk di dalamnya.
  • Antar Muka. MySQL memiliki antar muka (interface) terhadap berbagai aplikasi dan bahasa pemrograman dengan menggunakan fungsi API (Application Programming Interface).
  • Klien dan Peralatan. MySQL dilengkapi dengan berbagai peralatan (tool)yang dapat digunakan untuk administrasi basis data, dan pada setiap peralatan yang ada disertakan petunjuk online.
  • Struktur tabel. MySQL memiliki struktur tabel yang lebih fleksibel dalam menangani ALTER TABLE, dibandingkan basis data lainnya semacam PostgreSQL ataupun Oracle.

Alasan Menggunakan MySQL

MySQL merupakan salah satu database yang paling banyak digunakan dalam membangun aplikasi berbasis desktop maupun berbasis web. Alasan umum mengapa menggunakan MySQL adalah karena database ini bersifat Open Source sehingga dapat digunakan olah siapapun tanpa dibebani biaya lisensi yang lumayan tinggi. Selain alasan itu, ada yang bilang kalo MySql mampu menangani data yang cukup besar dan memiliki kecepatan yang stabil. Selain beberapa alasan serta pertimbangan diatas, ada beberapa alasan lagi yang patut anda ketahui.

  • Dapat bekerja di beberapa platform yang berbeda, seperti LINUX, Windows, MacOS dll.
  • Dapat dijadikan aplikasi database yang portable dan memiliki ukuran database yang cukup kecil.
  • MySQL dapat diperoleh dengan mudah dan gratis.
  • Sintaksnya lebih mudah dipahami dan tidak rumit serta Pengaksesan database dapat dilakukan dengan mudah.
  • Memiliki lebih banyak type data seperti : signed/unsigned integer yang memiliki panjang data sebesar 1,2,3,4 dan 8 byte, FLOAT, DOUBLE, CHAR, VARCHAR, TEXT, BLOB, DATE, TIME, DATETIME, TIMESTAMP, YEAR, SET dan tipe ENUM.
  • Mendukung penuh terhadap perintah/query SQL GROUP BY dan ORDER BY. Mendukung fungsi ( COUNT ( ),COUNT (DISTINCT), AVG ( ), STD ( ), SUM ( ), MAX ( ) AND MIN ( ) ).
  • Mendukung terhadap LEFT OUTHER JOIN dengan ANSI SQL dan sintak ODBC.
  • Dapat dengan mudah di Backup dan Restore database dari satu sistem ke sistem yang lain.
  • Mendukung ODBC(Open Database Connectivity) dalam lingkungan Windows. Sebagai contoh kita dapat menggunakan Access untuk connect ke MySQL server.
  • MySQL merupakan program yang multithreaded, sehingga dapat dipasang pada server yang memiliki multiCPU.
  • Dapat dikoneksikan dengan banyak bahasa pemrograman seperti bahasa C, C++, Java, Perl, PHP dan Python.
  • Privilege (hak) dan password sangat fleksibel dan aman serta mengijinkan ‘Host-Based’ Verifikasi.

Menggabung beberapa field dalam query saat ditampilkan

Pada tulisan ini saya akan berbagi tentang bagaimana menggabung beberapa field database saat ditampilkan ke layar. Untuk melakukan hal ini saya menggunakan teknik penggabungan field dengan fungsi string yang tersedia dalam mysql database. Misal anda punya sebuah tabel pegawai dengan susunan nip, namadepan, namatengah, namabelakang seperti gambar berikut :

Kemudian anda mempunyai data yang sudah tersimpan seperti gambar berikut :

Biasanya untuk menampilkan data tersebut kita menggunakan query seperti berikut :

atau

Dimana output contoh kedua query tersebut diatas terdiri dari 4 field yang terpisah sehingga laporannya seperti gambar diatas. Bagaimana jika dari susunan tabel diatas, kita ingin membuat laporan berbeda misal ingin menampilkan laporan dengan format seperti berikut :

Secara programming dalam php, mungkin anda bisa gunakan teknik penggabungan field yang ditampilkan dengan operator string seperti berikut :

Akan tetapi cara tersebut kurang optimal karena harus menggabung lagi/ada proses tambahan dalam php. Alternatif lain yang menurut saya lebih optimal adalah menggabungnya langsung dalam query yang digunakan. Berikut ini cara menggabung beberapa field dalam query :

Dari query diatas, maka hasil outputnya terdiri dari 2 field yaitu nip dan nama lengkap yang merupakan hasil penggabungan dari 3 field nama.

8 Hal Yang Harus Diketahui Seorang Programmer Tentang Mysql

Php+Mysql. Siapa yang tidak tahu bahwa duosejoli ini adalah pasangan terpopuler didunia open soure, bahkan diseluruh internet. Php telah menggeser Perl sebagai bahasa dalam membuat aplikasi Web, terutama pemula. Bahkan sebeltulnya Mysql juga banyak memiliki kekurangan dalam ahal fitur SQL. Sehingga programmer Php tidakbisa memahami dan memanfaatkan kekuatan penuh database relasional+ SQL. Buat Anda para programmer pemula yang memang masih awam dengan Mysql dan konsep database pada umumnya, tidak perlu minder atau khawatir. Ketika mulai belajar Mysql saya hanya mempunyai skill atau mengetahui tentang SQL hanya Select, Update, Create Table, dan Drop Table. Apa itu join bagaimana mengubah skema tabel, bagaimanamendesain database yang baik dan ternormalisasi, semuanya masih blank. Dan semuanya harus dipelajari sambil jalan, tapi toh akhirnya semua baik-baik saja. Lewat artikel ini kita kan membahas tentang hal-hal apa yang perlu diketahui agar bisa memakai Mysql dengan efektif dan efisien.

  • Tabel MYSQL Bukanlah Array
  • Programmer PHP atau perl tentu saja familiar dengan array dan hash, yang biasnya dipakai untuk menyimpan sekumpulan data terkait. Sebagian dari mereka yanng tidak familiar dengan MYSQL akan cenderung menganalogikan tabel database dengan array/hash (tepatnya, array of array atau array 2 dimensi ). Tabel dipandang sama seperti sebuah array, hanya saja bisa berukuran besar sekali dan parsisten (disimpan di disk). Cara pandang mereka yang seperti ini tidak sepenuhnya salah, karena toh dalam record dari tabel biasanya ditampung kedalam array/ hash. Hanya saja biasanya seorang programmer PHP cara pandangnya berbeda dan melakukan sesuatu seperti :

    atau membuat tabel seperti:

    Kode programmer diatas bertujuan mencari jumlah record dalam sebuah tabel. Si programmer yang terobsesi menganggap tabel Mysql sebagai sebuah array, mencoba membangun dulu arraynya dan mengisi satu persatu elemen dari hasul query agar nantinya bisa menggunakan fungsi array count ( ), selesai dicount ( ) variabel $rows langsung dibuang lagi, ini adalah cara yang lebih efisien :

    Lalu apa yang salah dengan kode SQL kedua, si programmer perlu, dalam hal ini ingin mengambil tiap record ditabel dengan fungsi DBI $sth->fetchrow_array()

    Enak bukan? Elemen elemen ke-0 berisi nilai field f0, elemen ke-1 f1,dst. Masalahanya kemudahan ini mengorbankan nama field yang menjadi sangat tidak deskriptif.

  • Bahasa SqL dan Fungsi Fungsi Mysql
  • MYSQL adalah database Sql. Sebadai programmer kita harus rajin mempelajari database MysqL dengan efektif, dan tidak boleh malah mempelajari bahasa keduanya yaitu SQL. Jika tidak belajar SQL maka ada kemungkinan anda akan melakukan kesalahan seperti dibawah ini :

    Salah atau benarkah program diatas??? Programmer diatas hanya ingi mencoba mensimulasikan klausa WHERE Sql dengan melakukan pengujian kondisi dikode php. Padahal yang seharusnya dilakukan adalah:

    Sql sudah menyediakan cara untuk menyortir data, menformat tampilan, mengelompokan dan memfilter record, dsb. Mysql juga terkenal banyak menyediakan fungsi-fungsi , mulai dari manipulasi tanggal, angka string , dsb. Ini adalah contoh lain Programmer PHP yang memanfaatkan fasillitas dari MYSQL :

  • Limit, Limit, Limit
  • Salah satu alasan mengapa MYSQL sangat cocok untuk aplikasi Web adalah karena mendukung klausa LIMIT. Karena untuk membatasi jumlah record hasil yang diinginkan dalam satu perintah SQL. Juga didukung oleh database lain seperti PostgreSQL, Firebird dan funsional LIMIT.

  • Tipe Data
  • Seorang programmer PHP yang tidak kenal dengan MYSQL kadang- kadang cenderung memilih jenis data yang salah ( umumnya : memilih VARCHAR () padahal ada tipe data yang lebih tepat) dikarenakan tidak mengenal jenis data yang tersedia. Berikut ini beberapa contoh kurang tepatnya pemilihan tipe data :

      1. Memilih Char(8), atau Varchar(10) dan bukanya Date untuk menyimpan tanggal; kerugianya, lebih boros tempat dan tidak bisa memanfaatkan fungsi- fungsi khusus tanggal.
      2. Memilih Char(3), atau Char (6) ketimbang Tyinyint Unsigned untuk menyimpan data boolean (“Yes “ dan “No”; atau “True” dan “False “; padahal jauh lebih dinyatakan dengan 1 dan 0 yang hanya menempai 1 byte)
      3. Memilih Float dan Double dan bukanya Decimal untuk menyimpan jumlah uang; kerugiannya, Float dan Double adalah berbasis biner dan seringkali tidak eksak dalam menyimpan pecahan Desimal.
  • Normalisasi dan Pemodelan
  • Normalisasi , skema , entiti-atribut , primary key (PK) dan foreign key (FK), tabel entiti, tabel relasi, OLTP & OLAP semuanya adalah istilah- istilah yang umumnya dijumpai dalam pemodelan fisik database.

      Langkah pertama

    Dalam pemodelan adalah menemukan entiti-entiti. Enetiti bisa dibilang “objek” yang akan kita geluti. Misalnya, costumer, produk, dan transaksi. Seriap entiti biasanya ditaruh dalam satu tabel, tabel ini disebut tabel entiti.

    Mencari atribut-atribut entiti tersebut. Misalnya tabel costumer memiliki atribut sapaan , nama, alamat( jalan, kota , kodepos, propinsi,& negara), tanggal record ini ditambahkan, dsb.

    Mencari relasi diantara entiti-entiti. Umumnya relasi adalah satu dari 1-1, 1- many, many-many. Misalnya, relasi antara transaksi dan produk adalah many-many, artinya sebuahnya transaksi pembelian dapat berisi produk dan sebuah produk tentu saja dapat dibeli dalam lebih dari satu transaksi. Setiap relasi juga ditepkan pada tabel yaitu tabel relasi.

      Langkah kedua

    Dalam permodelan tidak ada yang benar dan salah . yang ada adalah model yang tepat dan tidak tepat untuk keperluan tertentu. Misalnya untuk aplikasi sederhana modelnya sederhana. Semakin komplek aplikasi, model pun semakin rumit (jumlah entiti, relasi, dan atribut akan bertambah ).

    Tabel customet memiliki atribut alamat. Jika kita ingin mendukung banyak alamat untuk satu customers,maka alamat akan menjadi entiti dan menempati tabel sendiri. Lalu kita membuat tabel relasi customers alamat.

  • Indeks
  • Indeks adalah sesuatu yang berkaitan erat dengan implementasi, bukan modeling. Tapi intinya indeks adalah setiap kolom yang:

      1. Memiliki rentang nilai cukup banyak
      2. Terletak pada tebl yang berisi banyak record;
      3. Sering kali disebutkan diklausa Where dan /atau Order By dan/atau Group By; perlu diberi indeks. Ini dikarenakan indeks membantu mencari secara cepat sebuah nilai dari banyak nilai yang ada.

    Beberapa contonhya:

      Setiap primary key umumnya otomatis diberi oleh database server, meskipun tabelnya masih berisi sedikit record atau bahkan kosong. Dikarenakan database harus sealalu mengecek keberadaan sebuah nilai field manakala ada sebuah record yang ditambahkan ( ingat, PK artinya tak boleh ada dua record yang mengandung nilai field ini yang sama). Tampa indexing, pengecekan akan memakan waktu yang lama.
      Field tanggal lahir dalam tabel customers kemungkinan besar harus diindeks. Bahkan dayofyear()field ini juga mungkin perlu diindeks. Mengapa? Karena 1. Rentang nilai cukup besar (365 hari dalam setahun * + – 60 jumlah tahun) 2. Tabel customer potensial ukuranya besar. 3. Sering disebutkan di klausa Where (misalnya mencari customers yang ultah hari ini).
      Field jenis kelamin mungkin tidak perlu diindeks, kecualai perbandingan pri:wanita amat drastis bedanya. Mengapa? Sebab 1. Rentang nilai yang ada hanyalah dua:L ( Lelaki) dan P (Perempuan). Meskipun ada indeks tetap tidak mempengaruhi kinerja.
  • Konkurensi, Locking, dan Transaksi
  • Programmer kadang tidak menyadari bahwa program/ skrip yang dinuatnya tidaklah seperti program dekstop yang dijalankan oleh satu user. Melaikan, dalam satu waktu bisa saja ada 10 atau 100 user yang “menembak” skrip anda diWeb. Kerena itu, isu locking dan konkurensi penting sekali. Contohnya :

    Untuk kasus diatas pemecahannya adalah

    Tapi dalam kasus ini kadang-kadang harus melakukan locking terhadap tabel record untuk menjamin bahwa selama ini kita // do something else… Klien 2, klien3, dan klien4 tidak bisa seenaknya menaikkan counter:

    atau lebih karena kita tidak perlu melock keseluruhan tabel

    ingat,locking dapat berakibat samping yaitu deadlock.

    Transaksi. Transaksi pun sesuatu yang dipergunakan secara meluas didunia database, hampir tidak pernah kita jumpai dibahasa pemrograman ( karena data bahasa pemrograman ditaruh dalam variabel dimemori semua; tidak ada isu disk yang crash /lambat/ rusak / harus disinkronkan dengan data dimemori ). Karena itu anda perlu memahami konsep ini dari buku-buku tentang database.

  • Jenis Tabel
  • Di Mysql dikenal istilah tabel handler dan jenis tabel. Sekarang ada 3 jenis tabnel yang bisa dipakai di Mysql: MyiSam (default), BekeleyDB, dan InnoDB.

    Yang perlu diketahui ada 3 hal yaitu:

      1.Tidak semua tabel mendukung transaksi ( MyISAM tidak mendukung transaksi, jadi COMMIT dan RoolBack tidak melakukan sesuatu yang semestinya jika anda menerapkkan pada tabel MyIsAM)
      2.Tidak semua tabel punya karakteristik performace yang sama(BerkeleyDB misalnya, lambat jika ukuran tabel besar) dan disimpan dengan cara yang sama ( tabel MyISAM misalnya, disimpan dalam 3 file: MYI, MYD, frm sementara tabel-tabel dan database-database InnoDB disimpan bersama dalam daerah disk yang disebut tabelspace;
      3.Distribusi Mysql yang bukan – Max tidak kompile dengan dukungan terhadap BerkeleyDB dan InnoDB.

    Nomer 3 atau C perlu anda ketahui karena jika kita ingin mengitruksikan Mysql untuk database dengan jenis tertentu :

    Dan Mysql tidak kompilr untuk mendukung BerkeleyDB, maka Mysql tidak akan protes dengan error, melainkan membuatkan tabel yang tersebut untuk kita tapi dengan tipe default yaitu MyIsAm. Jadi anda perlu mengecek dulu dengan menggunakan SHOW TABLE STATUS: