Dasar-dasar MySQL untuk Pemrograman Web
Sekilas tentang Database
Singkatnya, database adalah tempat dimana kita akan “menyimpan” data yang dibutuhkan web kita. Mengapa harus menggunakan database? Bukankah lebih mudah dalam bentuk file seperti kita biasa menyimpan data dokumen MS Word dalam sebuah file .doc? Untuk menjawabnya, Anda harus membaca dan mecobanya (baca: benar-benar mempraktekkannya) sampai tuntas.
Macam-macam Database
Lain ladang lain belalang, lain data lain pula databasenya. Untuk data yang teramat besar dan kompleks, biasa digunakan Oracle, IBM DB2, PostgreSQL. Sedang untuk alasan kecepatan dan kesederhanaan, tetapi masih mendukung data yang relatif besar, MySQL lah jawabannya. MySQL bisa didapatkan secara gratis di
www.mysql.com baik untuk keperluan pribadi, maupun komersial.
Apa hubungan fungsi MySQL dengan PHP?
Tidak ada. PHP adalah sebuah bahasa pemrograman, sedang MySQL adalah sebuah sistem database. Sistem database MySQL terdiri dari server dan client. Nah, PHP adalah salah satu dari MySQL client. Singkatnya, PHP sebagai client akan melakukan query (baca: permintaan / perintah) ke sebuah MySQL server.
Menjalankan MySQL di komputer Anda
Jika Anda menggunakan MS Windows 95/98/Me/2000/XP, MySQL for Windows dapat Anda download di
www.mysql.com, dan kemudian install-lah seperti meng-install program pada umumnya. Karena MySQL telah umum digunakan untuk membuat web dengan dukungan PHP dan Web Server Apache, Anda dapat menginstall ke-TIGA software tersebut secara langsung dan mudah menggunakan PHPTriad yang dapat anda download di
http://sourceforge.net/projects/phptriad/.MySQL Server
Jika Anda membayangkan MySQL Server adalah sebuah aplikasi dengan icon di bagian kanan atas seperti aplikasi Windows pada umumnya, Anda sebaiknya memahami benar apa MySQL itu dan mencoba mempraktekkannya. MySQL server adalah sebuah daemon (program tersembunyi / service).
Untuk menjalankan MySQL Server, jika Anda menggunakan PHPTriad, jalankan MYSQL-D (untuk MS Windows 9x/ME) atau MYSQL-D NT (untuk MS Windows NT/2000/XP) dari . Cara lain untuk menjalankan MySQL Server adalah dengan WinMySQLadmin. Carilah file winmysqladmin.exe di hardisk Anda (biasanya di c:\mysql\bin\winmysqladmin.exe), kemudian jalankan. Akan muncul icon lampu traffic light di bagian kanan bawah. Jika lampu hijau telah menyala, MySQL Server telah berjalan di localhost (komputer lokal dimana mysql server berjalan / komputer Anda sendiri) dan siap digunakan.
Untuk keamanan, tidak sembarang orang dapat melakukan koneksi / menggunakan database yang terdapat dalam MySQL Server yang baru saja Anda install. Koneksi ke MySQL Server membutuhkan ‘username’ dan ‘password’. Secara default, MySQL Server memiliki username ‘root’ dan passwordnya masih kosong.
MySQL Client
Jika Anda menggunakan PHPTriad, maka Anda akan mendapatkan 2 buah MySQL Client, yaitu MySQL Console Client, dan phpMyAdmin. Jika Anda menggunakan MySQL original dari
www.mysql.com, maka Anda hanya akan mendapatkan MySQL Console Client. Untuk permulaan kita akan menggunakan MySQL Console Client. Jalankan mysql.exe (biasanya terltetak di c:\mysql\bin\mysql.exe) untuk melakukan koneksi ke MySQL Server. Secara default, mysql.exe akan melakukan koneksi ke localhost, dengan username ‘root’, dan password kosong. Setelah koneksi terjadi, Anda akan masuk ke mysql> prompt. Kini Anda siap melakukan query ke MySQL Server.
SQL (Structured Query Language)
Semua database menggunakan bahasa SQL. Tetapi bahasa SQL yang digunakan tidak selalu sama antara database satu dengan database lain, tergantung fitur-fitur yang didukung oleh database tersebut. Penulisan perintah dalam bahasa SQL adalah incasesensitive. Artinya, perintah ‘create database test’ sama dengan perintah ‘CREATe DaTaBaSE test’, tetapi tidak sama dengan ‘create database Test’ (nama database-nya berbeda).
Membuat Database
Untuk membuat database baru, perintahnya adalah:
mysql> CREATE DATABASE inventaris;
Query OK, 1 row affected (0.01 sec)
mysql>
Untuk menghapus database dan menghapus seluruh datanya, kita gunakan perintah DROP diikuti dengan nama database yang akan kita hapus.
mysql> DROP DATABASE inventaris;
Query OK, 0 rows affected (0.00 sec)
mysql>
Untuk memulai menggunakan database kita gunakan perintah USE diikuti dengan nama database yang telah kita buat sebelumnya dengan CREATE DATABASE. Jika Anda menghapus database inventaris dengan perintah DROP, buat lah kembali database inventaris.
mysql> USE inventaris;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql>
Tipe data MySQL
Setiap data pasti memiliki tipe. MySQL mendukung data berupa bilangan bulat (int, tinyint, smallint, mediumint, bigint, decimal), bilangan real (float), karakter (varchar, char), teks (tinytext, mediumtext, text, longtext), waktu (time, date, datetime, year, timestamp), binary file (tinyblob, mediumblob, blob, longblob), dan beberapa tipe data lain. Tipe data berguna untuk membedakan jenis data.
Tipe data karakter, teks, dan waktu selalu diawali dan diakhiri dengan tanda ‘'’. Jika kebetulan datanya mengandung tanda ‘'’ juga, maka kita perlu menambah tanda escape ‘\’. Contoh:
'This is Sam's book' à salah
'This is Sam\'s book' à benar
Tipe data tanggal (date) memiliki format: YYYY-MM-DD. Contoh: '2003-05-02' berarti tanggal 2 bulan 5 tahun 2003. Sedang tipe data time memiliki format HH:MM:SS. Timestamp adalah sebuah tipe data yang nilainya akan selalu berubah menjadi waktu saat terjadi query INSERT atau UPDATE.
Membuat Tabel
Setelah kita mempunyai database, kita harus membuat tabel terlebih dahulu untuk menyimpan data kita. Data yang tersimpan sering disebut dengan record. Sebuah tabel memiliki field-field yang memiliki tipe data tertentu. Untuk memudahkan pengoperasian database, terkadang kita membutuhkan sebuah field utama sebagai acuan (baca: id / primary key). Setiap data yang masuk akan memiliki id yang berbeda. Sehingga walaupun ada dua atau lebih data yang sama, akan tetap dianggap berbeda oleh MySQL karena memiliki id yang berbeda. Supaya id setiap data berbeda-beda, dapat digunakan fungsi auto_increment, sehingga nilai id setiap data akan bertambah 1 dari nilai id data sebelumnya.
Sebagai contoh, kita akan membuat database tentang inventaris komputer di kantor Anda. Rancangan databasenya adalah sebagai berikut.
Database inventaris memiliki 3 tabel: inventaris, pegawai, dan komputer. Jika Anda masih bingung tentang arti tanda panah dan kunci pada gambar di atas, jangan khawatir, kita akan membahasnya dalam bab berikutnya.
Untuk membuat ketiga tabel tersebut perintahnya adalah:
mysql> CREATE TABLE inventaris (
-> inventaris_id int(5) NOT NULL auto_increment,
-> tgl_beli date NOT NULL default '0000-00-00',
-> computer_id int(5) NOT NULL default '0',
-> pegawai_id int(5) NOT NULL default '0',
-> comments varchar(255) NOT NULL default '',
-> PRIMARY KEY (inventaris_id)
-> );
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE TABLE komputer (
-> computer_id int(5) NOT NULL auto_increment,
-> computer_desc varchar(255) NOT NULL default '',
-> PRIMARY KEY (computer_id)
-> );
Query OK, 0 rows affected (0.01 sec)
mysql> CREATE TABLE pegawai (
-> pegawai_id int(5) NOT NULL auto_increment,
-> first_name varchar(32) NOT NULL default '',
-> last_name varchar(32) NOT NULL default '',
-> PRIMARY KEY (pegawai_id)
-> );
Query OK, 0 rows affected (0.00 sec)
mysql>
Catatan:
Tanda -> pada query mysql di atas tidak perlu Anda tulis. Tanda ini menandakan baris baru. Setiap perintah baru akan dieksekusi setelah diakhiri dengan tanda ‘;’.
Untuk melihat properti tiap tabel yang baru saja kita buat, gunakan perintah DESCRIBE.
mysql> describe inventaris;
+---------------+--------------+------+-----+------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+------------+----------------+
| inventaris_id | int(5) | | PRI | NULL | auto_increment |
| tgl_beli | date | | | 0000-00-00 | |
| computer_id | int(5) | | | 0 | |
| pegawai_id | int(5) | | | 0 | |
| comments | varchar(255) | | | | |
+---------------+--------------+------+-----+------------+----------------+
5 rows in set (0.00 sec)
mysql>
Untuk melihat tabel apa saja yang ada dalam sebuah database kita gunakan perintah SHOW.
mysql> SHOW TABLES;
+----------------------+
| Tables_in_inventaris |
+----------------------+
| inventaris |
| komputer |
| pegawai |
+----------------------+
3 rows in set (0.01 sec)
mysql>
Manipulasi Data
INSERT
Untuk memasukkan data, perintah yang digunakan adalah INSERT. Perhatikan beberapa perbedaan penggunaan INSERT berikut ini.
mysql> INSERT INTO komputer VALUES ('', 'Dell Optiplex');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO komputer VALUES ('', 'Sun Ultra 1');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO komputer (computer_desc) VALUES ('Dell Inspiron');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO komputer (computer_desc) VALUES ('Hp Vectra 500');
Query OK, 1 row affected (0.01 sec)
mysql>
Nilai field pertama pada dua perintah INSERT pertama adalah kosong atau ‘’. Hal ini dikarenakan field pertama (computer_id) sudah auto_increment. Hal ini sama dengan dua perintah INSERT terakhir, dimana field computer_id tidak diberi nilai.
SELECT
SELECT digunakan untuk mengambil data yang telah dimasukkan. Perintah ini lah yang akan sering kita gunakan untuk menampilkan halaman web. Karena pada dasarnya, sebuah web adalah sebuah operasi pengambilan data dari database yang kemudian ditampilkan di layar komputer. Untuk pencarian lebih detail dapat digunakan klausa WHERE, IN, LIMIT, ORDER BY, dsb. Jika nama field terlalu panjang, kita dapat menyederhanakannya dengan AS. Berikut beberapa contoh penggunaan perintah SELECT.
mysql> SELECT * FROM komputer;
+-------------+---------------+
| computer_id | computer_desc |
+-------------+---------------+
| 1 | Dell Optiplex |
| 2 | Sun Ultra 1 |
| 3 | Dell Inspiron |
| 4 | Hp Vectra 500 |
+-------------+---------------+
4 rows in set (0.00 sec)
mysql> SELECT computer_desc, computer_id, computer_desc AS c FROM komputer;
+---------------+-------------+---------------+
| computer_desc | computer_id | c |
+---------------+-------------+---------------+
| Dell Optiplex | 1 | Dell Optiplex |
| Sun Ultra 1 | 2 | Sun Ultra 1 |
| Dell Inspiron | 3 | Dell Inspiron |
| Hp Vectra 500 | 4 | Hp Vectra 500 |
+---------------+-------------+---------------+
4 rows in set (0.00 sec)
mysql> SELECT * FROM komputer ORDER BY computer_id DESC;
+-------------+---------------+
| computer_id | computer_desc |
+-------------+---------------+
| 4 | Hp Vectra 500 |
| 3 | Dell Inspiron |
| 2 | Sun Ultra 1 |
| 1 | Dell Optiplex |
+-------------+---------------+
4 rows in set (0.01 sec)
mysql> SELECT * FROM komputer ORDER BY computer_id ASC LIMIT 0,3;
+-------------+---------------+
| computer_id | computer_desc |
+-------------+---------------+
| 1 | Dell Optiplex |
| 2 | Sun Ultra 1 |
| 3 | Dell Inspiron |
+-------------+---------------+
3 rows in set (0.00 sec)
mysql> SELECT * FROM komputer WHERE computer_id IN (1,4);
+-------------+---------------+
| computer_id | computer_desc |
+-------------+---------------+
| 1 | Dell Optiplex |
| 4 | Hp Vectra 500 |
+-------------+---------------+
2 rows in set (0.00 sec)
mysql> SELECT computer_desc AS comp FROM komputer WHERE computer_id > 2;
+---------------+
| comp |
+---------------+
| Dell Inspiron |
| Hp Vectra 500 |
+---------------+
2 rows in set (0.00 sec)
mysql> SELECT computer_desc comp FROM komputer WHERE computer_id = 4;
+---------------+
| comp |
+---------------+
| Hp Vectra 500 |
+---------------+
1 row in set (0.00 sec)
mysql>
UPDATE
Perintah UPDATE digunakan untuk mengubah nilai suatu record. Berikut adalah contoh penggunaan UPDATE.
mysql> UPDATE komputer SET computer_desc = 'Optiplex GX100' WHERE computer_id = 1;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> UPDATE komputer SET computer_desc = 'Beowolf Cluster II' WHERE computer_id IN (2,3);
Query OK, 2 rows affected (0.01 sec)
Rows matched: 2 Changed: 2 Warnings: 0
mysql> UPDATE komputer SET computer_id = 0, computer_desc = 'Mac G4' WHERE computer_id = 4;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> UPDATE komputer SET computer_desc = 'Mac G4'; ### Mengupdate SEMUA record;
Query OK, 3 rows affected (0.00 sec)
Rows matched: 4 Changed: 3 Warnings: 0
mysql>
DELETE
Untuk menghapus satu atau lebih data, kita menggunakan perintah DELETE. Berikut adalah beberapa contoh cara penghapusan record.
mysql> DELETE FROM komputer WHERE computer_id=2;
Query OK, 1 row affected (0.00 sec)
mysql> DELETE FROM komputer WHERE computer_id IN (1,3);
Query OK, 2 rows affected (0.00 sec)
mysql> ### Menghapus SEMUA record ###
mysql> DELETE FROM komputer;
Query OK, 0 rows affected (0.02 sec)
mysql>
SELECT…LIKE
Klausa LIKE dapat digunakan untuk mencari record jika digabungkan dengan perintah SELECT. Di dalam klausa LIKE biasanya digunakan wildcard (%) yang berguna untuk menyatakan semua karakter, mirip penggunaan wildcard (*) pada MS-DOS Prompt atau UNIX shell. Untuk fungsi pencarian lebih lanjut, Anda dapat membaca tentang MySQL FULLTEXT Search di MySQL Manual (http://www.phlab.net/myman/).
mysql> SELECT * FROM komputer WHERE computer_desc LIKE '%Dell%';
+-------------+---------------+
| computer_id | computer_desc |
+-------------+---------------+
| 1 | Dell Optiplex |
| 3 | Dell Inspiron |
+-------------+---------------+
2 rows in set (0.00 sec)
mysql> SELECT * FROM komputer WHERE computer_desc NOT LIKE '%Dell%';
+-------------+---------------+
| computer_id | computer_desc |
+-------------+---------------+
| 2 | Sun Ultra 1 |
| 4 | Hp Vectra 500 |
+-------------+---------------+
2 rows in set (0.00 sec)
mysql>