MySQL merupakan salah satu aplikasi database paling populer di dunia, terutama dalam pengembangan web. Hampir setiap proyek pembuatan website menggunakan MySQL, termasuk berbagai CMS (Content Management System) seperti WordPress, Joomla, Drupal, dll menggunakan MySQL.
Dalam pembahasan MySQL dasar ini akan mengakses MySQL menggunakan Command Prompt Windows. Walaupun agak sedikit repot karena harus mengetik seluruh query secara manual, tetapi dengan menggunakan CMD Windows, bisa dengan mudah menguasai dan belajar cara penulisan query MySQL. Atau bisa juga menggunakan aplikasi berbasis GUI seperti Phpmyadmin yang juga akan pelajari nantinya.
Pengertian MySQLSejarah MySQLSpeedSebuah studi dari eWeek di February 2002 yang membandingkan performa kecepatan MySQL dengan RDBMS lainnya, seperti Microsoft SQL Server 2000, IBM DB2, Oracle 9i dan Sybase :MySQL memiliki kecepatan yang lebih dibandingkan pesaing yang berbayar.ReliabilityBiasanya sesuatu yang gratis susah diandalkan, bahkan banyak bug dan sering hang. Tidak demikian dengan MySQL, karena sifatnya yang open source, setiap orang dapat berkontribusi memeriksa bug dan melakukan test case untuk berbagai skenario yang memerlukan sistem 24 jam online, multi-user dan data ratusan GB. Hasilnya, MySQL merupakan RDBMS yang reliabel namun memiliki performa diatas rata-rata.SkalabilityMySQL dapat memproses data yang sangat besar dan kompleks, tanpa ada penurunan performa yang berarti, juga mendukung sistem multi-prosesor. MySQL juga dipakai oleh perusahaan-perusahaan besar di dunia, seperti Epson, New York Times, Wikipedia, Google, Facebook, bahkan NASA.User FriendlyInstalasi dan mempelajari MySQL cukup mudah dan tidak dipusingkan dengan banyak settingan. Cukup download aplikasi MySQL dan install.Portability and Standard ComplianceDatabase MySQL dapat dengan mudah berpindah dari satu sistem ke sistem lainnya. Misalkan dari sistem Windows ke Linux. Aplikasi MySQL juga dapat berjalan di multi OS.Multiuser SupportDengan menerapkan arsitektur client-server. Ribuan pengguna dapat mengakses database MySQL dalam waktu yang bersamaan.InternationalizationMendukung beragam bahasa. Dengan dukungan penuh terhadap unicode, maka aksara non-latin seperti jepang, cina, dan korea bisa digunakan di dalam MySQL.Wide Application SupportBiasanya database RDBMS tidak digunakan sendirian, namun ditemani dengan aplikasi atau bahasa pemrograman lainnya untuk menyediakan interface, seperti C, C++, C#, Java, Delphi, Visual Basic, Perl Python dan PHP. Ke semua itu di dukung oleh API (Application Programming Interface) oleh MySQL.Open Source CodeDapat mengembangkan MySQL dengan mempelajari kode programnya. MySQL di kembangkan dengan bahasa C and C++. Bahkan sudah terdapat berbagai variasi rasa RDBMS baru yang dikembangkan dari code MySQL, diantaranya: Drizzle, MariaDB, Percona Server dan OurDelta.
Asal penamaan MySQL sendiri agak unik. Monty berkata :
Berbagai sumber menyatakan, bahkan juga di situs MySQL sendiri bahwa “My” dari MySQL berasal dari nama anak perempuan Monty. Namun seperti kutipan diatas, Monty pun mengakui bahwa selama ia di TcX, library dan aplikasi yang dikembangkan perusahaan itu juga banyak dimulai dengan awalan “My”.
Logo lumba-lumba dalam lambang MySQL di namai Sakila, yang berasal dari sebuah kontest “Name the Doplhin” yang diadakan MySQL AB. Nama Sakila ini diajukan oleh Ambrose Twebaze, seorang programmer open source dari Swaziland, Afrika. ‘Sakila‘ memiliki akar dari bahasa Siswati, bahasa yang digunakan di Swaziland.
MySQL dan MySQL AB
MySQL AB juga memegang hak copyright dari source code MySQL dan pemilik hak merk dagang “MySQL”. Dengan kata lain, walaupun memiliki source code MySQL, namun sistem database maupun aplikasi yang dibuat tidak boleh menggunakan merk “MySQL” tanpa membayar royalti kepada pihak MySQL AB. Hal ini pula yang menjelaskan mengapa salah satu aplikasi administrasi MySQL berbasis web PhpMyAdmin, tidak menggunakan kata “MySQL” pada nama programnya.
Mårten Mickos, CEO MySQL AB yang selama ini memimpin MySQL juga meninggalkan SUN tahun 2009. Sehingga MySQL praktis telah kehilangan pemimpin bisnis dan pendiri yang telah membuat MySQL sesukses sekarang. Dan akhirnya April 2009, raksasa di industri database: Oracle, mulai mendekati Sun Microsystems untuk mengakuisisinya.
Untuk web programming seperti PHP, seluruh fungsi MySQL yang ada juga sudah otomatis didukung di dalam MariaDB. Fungsi seperti mysqli_connect() bisa langsung terhubung ke MySQL maupun MariaDB, tanpa perubahan code apapun. Selain itu, hampir seluruh fitur yang ada di MySQL, juga tersedia di MariaDB.
Pengertian DatabasePengertian Database
Pengertian database adalah sekumpulan data yang dikelola berdasarkan ketentuan tertentu yang saling berkaitan sehingga memudahkan dalam pengelolaannya.
Pengertian Database Model
database model adalah teori seputar bagaimana data itu akan disimpan, disusun, dan dimanipulasi dalam sebuah sistem database.
Dari awal konsep database mulai banyak digunakan (sekitar tahun 1960an – di amerika sana), berbagai teori dikemukakan tentang bagaimana cara menyajikan data agar mudah digunakan. Mudah digunakan disini mencakup: membuat, membaca, memperbaharui, dan menghapus data, atau istilah kerennya : CRUD (Create, Read, Update and Delete).
Database Model : Relation
Konsep Relational Database Model diajukan pertama kali oleh peneliti IBM, Dr. Edgar F. Codd pada tahun 1969, dan merupakan database model yang paling banyak digunakan saat ini.
Dr. Codd mengajukan ide tentang relational model ini dalam sebuah paper berjudul “A Relational Model of Data for Large Shared Databanks” pada Juni 1970. Relational Database model berasal dari 2 cabang ilmu matematika : set theory dan first-order predicate logic.
Sebuah relational database menyimpan data dalam ‘relasi’, atau yang disebut juga tabel. Setiap tabel terdiri dari tuple atau record dan atribut atau field. Urutan penyusunan dalam media penyimpanan fisik tidak berpengaruh dalam model ini, dan setiap record di dalam tabel diidentifikasi dengan sebuah field unik.RDBMS : Relational Database Management Systems
Relational Database Management Systems (RDBMS) adalah software/aplikasi yang menggunakan relational database model sebagai dasarnya. Sejak 1970an, RDBMS sudah banyak digunakan oleh berbagai vendor, dan dalam berbagai sistem hardware. Dua RDBMS pertama adalah System R, yang dikembangkan oleh IBM, dan INGRES (Interactive Graphics Retrieval System) yang dikembangkan oleh University of California di Berkeley. Keduanya pada awal 1970an.
Setelah keunggulan Relational Database banyak dikenal, berbagai perusahaan mulai berlalih dari hierarchical dan network database model ke relational database model. Pada tahun 1980an, Oracle RDBMS lahir, dan diikuti oleh pesaingnya saat itu, IBM DB2 RDBMS.
Jika pada tahun 1980an RDBMS hanya dapat digunakan dalam sistem mainframe perusahaan besar, namun saat ini dengan semakin majunya perkembangan teknologi di sisi hardware, PC-based RDBMS sudah banyak tersedia. MySQL RDBMS dapat diinstall di komputer/laptop biasa.
Client-Server RDBMS Arsitektur
Kebutuhan akan database yang dapat diakses bersama-sama oleh banyak pengguna mulai muncul di sekitar awal 1990an. Sebuah database terpusat, namun dapat diakses dari tiap komputer yang berjauhan, membuat banyak RDBMS dikembangkan dengan arsitektur Client-Server.
Dalam arsitektur Client-Server, sebuah komputer bertindak sebagai Database Server pusat. Server inilah yang akan melayani segala permintaan dari komputer (Client) yang membutuhkan akses ke database. Namun fisik database itu sendiri juga tidak harus di dalam Server, bisa saja berada di tempat lain, namun terhubung ke Database Server untuk memprosesnya.
MySQL juga menggunakan arsitektur Client-Server. Jika menjalankan MySQL Server di komputer, setiap komputer yang terhubung kedalam jaringan dapat mengaksesnya dengan menggunakan MySQL Client.
Setelah Relational Database Model : Object-Oriented Database Model
Walaupun RDBMS sudah populer, dan digunakan pada hampir semua keperluan seperti bisnis, inventory, bank, dll, namun untuk kasus-kasus tertentu, Relational Database Model dianggap masih kurang mendukung, khususnya untuk aplikasi baru seperti sistem informasi geografis, dan multimedia. Sehingga mulailah dikembangkan berbagai model database lainnya, seperti Object-Oriented Database dan Object-Relational Database.
Konsep Database Objek Model ini berasal dari dunia programming: OOP (Object Oriented Programming), dimana setiap data dikaitkan dengan objek dari data tersebut. ODBMS (Object Database Management System) juga sudah banyak beredar, seperti Versant ODBMS oleh Versant Corporation, UniData dari IBM, dan VelocityDB.
Pengertian Relational DatabasePengertian Database dalam Relational Database
Dalam relational database model, sebuah database adalah kumpulan relasi yang saling terhubung satu sama lainnya. Relasi adalah istilah dalam relational database, tapi lebih disebut sebagai tabel. Selayaknya tabel yang memiliki kolom dan baris, dalam relational database, kolom (column) disebut attribute, sedangkan baris (row) disebut tuple.
Candidate Key (Kunci Kandidat)
Database dalam relational database dapat di sederhanakan sebagai sekumpulan tabel yang saling terhubung. Setiap baris dari dalam tabel setidaknya harus memiliki sebuah kolom yang unik. Unik disini maksudnya tidak boleh sama. Contohnya, dalam tabel 4.1 : tabel "data mahasiswa", kolom NIM (Nomor Induk Mahasiswa) akan menjadi kandidat yang bagus, karena tidak mungkin ada 2 mahasiswa yang memiliki NIM yang sama. NIM disini disebut juga dengan Candidate Key (Kunci Kandidat). Candidate Key adalah satu atau beberapa kolom dalam tabel yang bisa mengidentifikasi tiap baris dari tabel tersebut.
NIM | Nama | Tanggal Lahir | No KTP | Tempat Lahir | Kode Jurusan |
---|---|---|---|---|---|
101401030 | Alex Ferdinand | 29 Juni 1992 | 1373022906870002 | Padang | Ilmu Komputer |
120502045 | Joko Suprianto | 4 Maret 1994 | 3173020403940004 | Jakarta | Manajemen |
110901033 | Susi Sulastri | 17 September 1993 | 1273024709930001 | Medan | Kedokteran |
100301021 | Suparman | 23 Februari 1992 | 3173022302920006 | Jakarta | Teknik Elektro |
121401074 | Tania Mutia | 5 Oktober 1993 | 1373024510930006 | Padang | Ilmu Komputer |
110501023 | Aprilia Susanti | 7 Oktober 1993 | 1693024710930002 | Pekanbaru | Manajemen |
Beberapa karakteristik Candidate key : unik (tidak boleh berulang), tidak boleh memiliki nilai null (kosong), nilai dari candidate key akan sangat jarang berubah.
Primary Key (Kunci Utama)
Dalam sebuah tabel, akan terdapat beberapa candidate key, namun hanya ada 1 Primary key (kunci utama). Primary key adalah salah satu candidate key yang dinobatkan sebagai kolom unik untuk identifikasi baris dalam tabel. Kolom ini tidak boleh berulang, dan tidak boleh kosong (null). Dari tabel "data mahasiswa", NIM dapat ditetapkan sebagai primary key.
Foreign Key (Kunci Tamu)
Dalam sebuah database, biasanya akan terdapat beberapa tabel. Tabel-tabel ini dapat dihubungkan satu dengan yang lainnya dengan kolom yang merupakan bagian dari tabel lain. Foreign Key (Kunci Tamu) adalah Primary key dari tabel lainnya yang terdapat di tabel saat ini. Di dalam contoh tabel 4.2 : Tabel "data mahasiswa" dapat terlihat bahwa NIM adalah primary key dari tabel "data mahasiswa", dan kode jurusan adalah primary key pada tabel "kode jurusan". Kedua tabel tersebut dihubungkan oleh kolom kode jurusan.
NIM | Nama | Tanggal Lahir | No KTP | Tempat Lahir | Kode Jurusan |
---|---|---|---|---|---|
101401030 | Alex Ferdinand | 29 Juni 1992 | 1373022906870002 | Padang | 14 |
120502045 | Joko Suprianto | 4 Maret 1994 | 3173020403940004 | Jakarta | 05 |
110901033 | Susi Sulastri | 17 September 1993 | 1273024709930001 | Medan | 09 |
100301021 | Suparman | 23 Februari 1992 | 3173022302920006 | Jakarta | 03 |
121401074 | Tania Mutia | 5 Oktober 1993 | 1373024510930006 | Padang | 14 |
110501023 | Aprilia Susanti | 7 Oktober 1993 | 1693024710930002 | Pekanbaru | 05 |
Kode Jurusan | Jurusan | Alamat |
---|---|---|
01 | Teknik Mesin | Jl. Teknik No.01 |
02 | Teknik Arsitektur | Jl. Teknik No.02 |
03 | Teknik Elektro | Jl. Teknik No.03 |
04 | Akuntansi | Jl. Ekonomi No. 01 |
05 | Manajemen | Jl. Ekonomi No. 02 |
06 | Ekonomi Pembangunan | Jl. Ekonomi No. 03 |
07 | Kesehatan Masyarakat | Jl. Kesehatan No.01 |
08 | Psikologi | Jl. Kesehatan No.02 |
09 | Kedokteran | Jl. Kesehatan No.03 |
10 | Matematika | Jl. MIPA No. 01 |
11 | Kimia | Jl. MIPA No. 02 |
12 | Fisika | Jl. MIPA No. 03 |
13 | Farmasi | Jl. MIPA No. 04 |
14 | Ilmu Komputer | Jl. MIPA No. 05 |
Dalam tabel "data mahasiswa", kolom NIM adalah primary key, dan kolom kode jurusan adalah foreign key.
Referential Integrity
Referential Integrity berkaitan erat dengan foreign key. Pada dasarnya Referential Integrity adalah penerapan aturan bahwa untuk setiap foreign key yang terdapat pada suatu tabel, harus ada nilainya di tabel asal kolom tersebut. Dalam contoh, pada tabel 4.2 dan 4.3 setiap kode jurusan dalam tabel data mahasiswa harus ada nilainya dalam tabel kode jurusan. Di dalam tabel data mahasiswa tidak bisa memasukkan nilai 20, karena di tabel kode jurusan, kode jurusan 20 belum diinput. Dan jika ingin menghapus suatu jurusan dari tabel data jurusan, semua mahasiswa harus terlebih dahulu sudah tidak ada yang memiliki kode jurusan tersebut.
Index
Index dalam database adalah sebuah struktur data yang diimplementasikan oleh RDBMS untuk mempercepat proses pembacaan data. Index lebih kepada penerapan algoritma dari masing-masing aplikasi database, dan diterapkan ke dalam kolom dari tabel yang diinginkan. Mirip Index yang ada di belakang buku, index seolah-olah daftar cepat untuk mencari sesuatu oleh RDBMS.
Untuk MySQL, kolom yang ditetapkan sebagai primary key akan otomatis di-index. Tetapi dalam satu tabel, bisa saja terdapat beberapa kolom yang di index.
Ketika data baru ditambahkan atau terdapat data yang akan dirubah, index yang tersimpan untuk tabel tersebut harus dibuat ulang, sehingga memperlama proses penambahan data. Namun untuk tabel yang jarang bertambah, index menawarkan perfoma yang cepat untuk pembacaan data.
Normalisasi Database
Normalisasi database (Database normalization) adalah proses penyusunan kolom dan tabel untuk meminimalkan redundansi data (data yang berulang). Normalisasi biasanya akan membagi tabel besar menjadi beberapa tabel kecil yang saling terhubung. Hal ini dilakukan agar mudah dalam mengatur, dan mengorganisasi data yang ada.
Entity Relationship Diagram (ERD)
Entity Relationship Diagram adalah diagram untuk menggambarkan desain database yang akan dibuat. Di dalam ERD akan terlihat semua tabel yang akan dirancang, primary key masing-masing tabel, serta foreign key, dan kolom-kolom apa saja yang nantinya tersedia. ERD memiliki berbagai versi, baik yang berbentuk balon, maupun tabel. ERD inilah sebagai blueprint dari database yang akan dirancang.
Pengertian Structured Query Language (SQL)
SQL (Structured Query Language) adalah bahasa pemrograman khusus yang digunakan untuk memanajemen data dalam RDBMS. SQL berupa perintah sederhana yang berisi instruksi-instruksi untuk manipulasi data. Perintah SQL disingkat dengan ‘query‘.
Sejarah SQL
Bersamaan dengan paper Dr. Edgar F. Codd pada tahun 1969 tentang Teori Database Relational, ia pun mengajukan sebuah bahasa yang disebut DSL/Alpha untuk memanajemen data dalam relational database. Berdasarkan ide Dr.Codd ini, beberapa saat setelah itu IBM mencoba merancang bahasa prototipe sederhana DSL/Alpha yang disebut SQUARE.
Pada tahun 1970, team yang beranggotakan peneliti IBM Donald D. Chamberlin dan Raymond F. Boyce, mengembangkan SQUARE lebih lanjut menjadi SEQUEL (Structured English Query Language). SEQUEL digunakan untuk mengoperasikan prototipe RDBMS pertama IBM, System R. Di kemudian hari, SEQUEL berubah nama menjadi SQL karena permasalahan merk dagang (trademark) dengan sebuah perusahaan pesawat di inggris yang terlebih dahulu telah memakai nama SEQUEL.
Pada akhir 1970an, perusahaan Relational Software, Inc. (sekarang Oracle Corporation) melihat potensi bahasa SQL dan mengembangkan sendiri versi SQL untuk RDBMS mereka. Oracle V2 (versi 2) yang dirilis Juni 1979 adalah RDBMS komersial pertama yang mengimplementasikan SQL.
Dengan kemudahan yang ditawarkan, SQL mulai diimplementasikan oleh berbagai RDBMS dengan versi SQL mereka masing-masing. Namun hal ini menimbulkan permasalahan karena perbedaan penerapan SQL dari satu aplikasi dengan aplikasi database lainnya yang tidak seragam.Sehingga pada tahun 1986, badan standar amerika, ANSI (American National Standards Institute) merancang sebuah standar untuk SQL. Satu tahun setelahnya, ISO (International Organization for Standardization) juga mengeluarkan standar untuk SQL. Versi terakhir standar SQL dirilis pada 2011, yang dinamakan SQL 2011. Dengan standar ini diharapkan ada keseragaman SQL antar aplikasi RDBMS.
Akan tetapi walaupun sudah ada standar tentang SQL, banyak perusahaan RDBMS yang menambahkan ‘fitur’ SQL selain standar yang ada. MySQL juga memiliki SQL yang tidak standar, yang tidak ada pada Oracle, begitu juga sebaliknya. Namun setidaknya bahasa SQL hampir sama untuk perintah-perintah dasar antar RDBMS. Perintah SQL untuk membuat tabel misalnya, dapat digunakan baik di Oracle maupun MySQL.
Jenis-jenis perintah SQL
Perintah atau instruksi SQL dapat dikelompokkan berdasarkan jenis dan fungsinya. Terdapat 3 jenis perintah dasar SQL : Data Definition Language, Data Manipulation Language dan Data Control Language.
- Data Definition Language (DDL) adalah jenis instruksi SQL yang berkaitan dengan pembuatan struktur tabel maupun database. DDL : CREATE, DROP, ALTER, dan RENAME.
- Data Manipulation Language (DML) adalah jenis instruksi SQL yang berkaitan dengan data yang ada dalam tabel, tentang bagaiman menginput, menghapus, memperbaharui serta membaca data yang tersimpan di dalam database. DML : SELECT, INSERT, DELETE, dan UPDATE.
- Data Control Language (DCL) adalah jenis instruksi SQL yang berkaitan dengan manajemen hak akses dan pengguna (user) yang dapat mengakses database maupun tabel. DCL : GRANT dan REVOKE.
Selain ketiga jenis perintah SQL, terdapat juga 2 jenis SQL tambahan : Transaction Control Language, dan Programmatic SQL.
- Transaction Control Language (TCL) adalah perintah SQL untuk proses transaksi. Proses transaksi ini digunakan untuk perintah yang lebih dari 1, namun harus berjalan semua, atau tidak sama sekali. Misalnya untuk aplikasi critical seperti transfer uang dalam sistem database perbankan. Setidaknya akan ada 2 perintah, yaitu mengurangi uang nasabah A, dan menambah uang nasabah B. Namun jika terjadi kesalahan sistem, kedua transaksi ini harus dibatalkan. Tidak bisa hanya satu perintah saja. Termasuk ke dalam TCL adalah perintah : COMMIT, ROLLCABK, dan SET TRANSACTION.
- Programmatic SQL berkaitan dengan sub program (stored procedure) maupun penjelasan mengenai struktur database. Seperti : DECLARE, EXPLAIN, PREPARE, dan DESCRIBE