MySQL Databases Dasar-dasar MySQL dan Implementasi MySQL kedalam pemrograman PHP Jakarta, 16 April 2011 Oleh: M. Awaludin, S.Kom
DDL (Data Definition Language) Definisi DDL Adalah merupakan sub bahasa SQL yang digunakan untuk membangun kerangka dari sebuah database, ada 3 perintah yang termasuk dalam DDL tersebut, yaitu CREATE, ALTER dan DROP
DDL (Data Definition Language) CREATE: Perintah yang digunakan untuk membuat, termasuk diantaranya database baru, tabel baru, view baru, dan kolom. ALTER: Perintah ini digunakan untuk merubah struktur tabel yang telah dibuat. Melingkupi mengganti nama tabel, menambah kolom, mengubah kolom, menghapus kolom, maupun membersihkan atribut pada kolom. DROP: Perintah ini digunakan untuk menghapus database dan tabel.
DML (Data Manipulation Language) Definisi DML Adalah merupakan sub bahasa SQL yang digunakan untuk memanipulasi dalam database yang telah dibuat, perintah yang digunakan diantaranya adalah: INSERT, SELECT, UPDATE, DELETE
DML (Data Manipulation Language) INSERT: Perintah ini digunaka untuk memasukkan data kedalam tabel yang sudah dibuat. SELECT: Perintah ini digunakan untuk menampilkan isi dari tabel atau relasinya. Data yang tampil dapat melalui console MySQL atau pada aplikasi. UPDATE: Perintah ini digunakan untuk memperbaharui data lama menjadi yang terkini. DELETE: Perintah ini digunakan untuk menghapus isi dari tabel. Pada saat perintah ini dijalankan, data yang sudah terhapus tidak dapat dikembalikan lagi.
Jenis tipe data pada MySQL Dibawah ini tipe data yang sering digunakan dalam aplikasi PHP NAMA TIPE DATA INT DECIMAL DATE DATETIME TIME VARCHAR TEXT ENUM 0 s.d 4294967295 (UNSIGNED) -1.7976931348623157E+308 s.d -2.2250738585072014E-308 untuk nilai negatif, 0, dan 2.2250738585072014E-308 hingga 1.7976931348623157E+308 untuk nilai positif. YYYY-MM-DD, 1000-01-01 s.d 9999-12-31 YYYY-MM-DD HH:MM:SS, 1000-01-01 00:00:00 s.d 9999-12-31 23:59:59 HH:MM:SS, -838:59:59 s.d 838:59:59 1 s.d 255 65535 PANJANG DAN NILAI MAKSIMALNYA 65535 jenis nilai pilihan (misal pilihan: user, operator,admin) Ref. http://www.mysql.com
Contoh Penggunaan DDL Studi kasus Database Test Online, kerangka database sbb: 1. Buat database dengan nama testonline dengan mode konsole atau DOS Command: C:\Users\vitux>cd c:\xampp\mysql\bin Tipe dan panja ng data c:\xampp\mysql\bin>mysql -u root -p Enter password: ****** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 56 Server version: 5.1.41 Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
Contoh Penggunaan DDL CREATE DATABASE testonline; Query OK, 1 row affected (0.00 sec) 2. Membuat tabel peserta, dalam database testonline USE testonline; Database changed CREATE TABLE `peserta` ( -> `kode_user` int(10) NOT NULL, -> `nama` varchar(255) NOT NULL, -> `email` varchar(40) NOT NULL DEFAULT '', -> `instansi` text NOT NULL, -> `user_id` varchar(20) NOT NULL DEFAULT '', -> `password` varchar(32) NOT NULL DEFAULT '', -> `akses` enum('user','op') NOT NULL DEFAULT 'user', -> PRIMARY KEY (`kode_user`) -> ); Query OK, 0 rows affected (0.09 sec)
Contoh Penggunaan DDL 3. Menambah field no_hp pada tabel peserta ALTER TABLE `peserta` ADD `no_hp` varchar(25) -> AFTER `akses`; Query OK, 0 rows affected (0.15 sec) Records: 0 Duplicates: 0 Warnings: 0 DESCRIBE `peserta`; +-----------+-------------------+------+-----+---------+----------------+ Field Type Null Key Default Extra +-----------+-------------------+------+-----+---------+----------------+ kode_user int(10) NO PRI NULL nama varchar(255) NO NULL email varchar(40) NO instansi text NO NULL user_id varchar(20) NO password varchar(32) NO akses enum('user','op') NO user no_hp varchar(25) YES NULL +-----------+-------------------+------+-----+---------+----------------+ 8 rows in set (0.04 sec)
Contoh Penggunaan DDL 4. Merubah nama atau type data field atau kolom menggunakan ALTER ALTER TABLE `peserta` CHANGE `no_hp` -> `nohp` varchar(25) NOT NULL DEFAULT ''; Query OK, 0 rows affected (0.20 sec) Records: 0 Duplicates: 0 Warnings: 0 DESCRIBE `peserta`; +-----------+-------------------+------+-----+---------+----------------+ Field Type Null Key Default Extra +-----------+-------------------+------+-----+---------+----------------+ kode_user int(10) NO PRI NULL nama varchar(255) NO NULL email varchar(40) NO instansi text NO NULL user_id varchar(20) NO password varchar(32) NO akses enum('user','op') NO user nohp varchar(25) NO +-----------+-------------------+------+-----+---------+----------------+ 8 rows in set (0.01 sec)
Contoh Penggunaan DDL 5. Merubah nama tabel peserta menjadi user ALTER TABLE `peserta` RENAME TO `user`; Query OK, 0 rows affected (0.01 sec) show tables; +----------------------+ Tables_in_testonline +----------------------+ user +----------------------+ 1 row in set (0.00 sec)
Contoh Penggunaan DDL 6. Menambahkan PRIMARY KEY pada tabel peserta ALTER TABLE `peserta` -> ADD PRIMARY KEY(kode_user); Query OK, 0 rows affected (0.09 sec) Records: 0 Duplicates: 0 Warnings: 0 DESC peserta; +-----------+-------------------+------+-----+---------+-------+ Field Type Null Key Default Extra +-----------+-------------------+------+-----+---------+-------+ kode_user int(10) NO PRI NULL nama varchar(255) NO NULL email varchar(40) NO instansi text NO NULL user_id varchar(20) NO password varchar(32) NO akses enum('user','op') NO user nohp varchar(25) NO +-----------+-------------------+------+-----+---------+-------+ 8 rows in set (0.01 sec)
Contoh Penggunaan DDL 7. Menghapus PRIMARY KEY pada tabel peserta ALTER TABLE `peserta` DROP PRIMARY KEY; Query OK, 0 rows affected (0.09 sec) Records: 0 Duplicates: 0 Warnings: 0 DESC `peserta`; +-----------+-------------------+------+-----+---------+-------+ Field Type Null Key Default Extra +-----------+-------------------+------+-----+---------+-------+ kode_user int(10) NO NULL nama varchar(255) NO NULL email varchar(40) NO instansi text NO NULL user_id varchar(20) NO password varchar(32) NO akses enum('user','op') NO user nohp varchar(25) NO +-----------+-------------------+------+-----+---------+-------+ 8 rows in set (0.02 sec)
Contoh Penggunaan DDL 8. Menghapus field atau kolom nohp pada tabel peserta ALTER TABLE `peserta` DROP `nohp`; Query OK, 0 rows affected (0.20 sec) Records: 0 Duplicates: 0 Warnings: 0 DESC `peserta`; +-----------+-------------------+------+-----+---------+-------+ Field Type Null Key Default Extra +-----------+-------------------+------+-----+---------+-------+ kode_user int(10) NO PRI NULL nama varchar(255) NO NULL email varchar(40) NO instansi text NO NULL user_id varchar(20) NO password varchar(32) NO akses enum('user','op') NO user +-----------+-------------------+------+-----+---------+-------+ 7 rows in set (0.01 sec)
Contoh Penggunaan DDL 9. Merubah PRIMARY KEY supaya nilai datanya otomatis ALTER TABLE `peserta` CHANGE `kode_user` -> `kode_user` int(10) NOT NULL AUTO_INCREMENT; Query OK, 0 rows affected (0.07 sec) Records: 0 Duplicates: 0 Warnings: 0 DESC `peserta`; +-----------+-------------------+------+-----+---------+----------------+ Field Type Null Key Default Extra +-----------+-------------------+------+-----+---------+----------------+ kode_user int(10) NO PRI NULL auto_increment nama varchar(255) NO NULL email varchar(40) NO instansi text NO NULL user_id varchar(20) NO password varchar(32) NO akses enum('user','op') NO user +-----------+-------------------+------+-----+---------+----------------+ 7 rows in set (0.01 sec)
Contoh Penggunaan DDL 10. Menghapus database testonline DROP DATABASE `testonline`; Query OK, 0 rows affected (0.01 sec) SHOW DATABASES; +--------------------+ Database +--------------------+ information_schema data_user demo mysql +--------------------+ 4 rows in set (0.01 sec)
Contoh Penggunaan DML 1. Input data peserta kedalam tabel peserta DESC `peserta`; +-----------+-------------------+------+-----+---------+----------------+ Field Type Null Key Default Extra +-----------+-------------------+------+-----+---------+----------------+ kode_user int(10) NO PRI NULL auto_increment nama varchar(255) NO NULL email varchar(40) NO instansi text NO NULL user_id varchar(20) NO password varchar(32) NO akses enum('user','op') NO user +-----------+-------------------+------+-----+---------+----------------+ 7 rows in set (0.01 sec) INSERT INTO `peserta` SET -> nama = 'Alan', -> email = 'alan@antix.or.id', -> instansi = 'ICT', -> user_id = 'alan', -> password = '123456', -> akses = 'op'; Query OK, 1 row affected (0.00 sec)
Contoh Penggunaan DML 2. Menampilkan semua isi tabel peserta SELECT * FROM `peserta`; +-----------+-------+------------------+----------+---------+----------+-------+ kode_user nama email instansi user_id password akses +-----------+-------+------------------+----------+---------+----------+-------+ 1 Alan alan@antix.or.id ICT alan 123456 op 2 Rosit r05it@yahoo.com SMKN 45 rosit 654321 user +-----------+-------+------------------+----------+---------+----------+-------+ 2 rows in set (0.00 sec) 3. Menampilkan kolom yang kita pilih saja, misal nama, email, instansi SELECT `nama`,`email`,`instansi` FROM `peserta`; +-------+------------------+----------+ nama email instansi +-------+------------------+----------+ Alan alan@antix.or.id ICT Rosit r05it@yahoo.com SMKN 45 +-------+------------------+----------+ 2 rows in set (0.00 sec)
Contoh Penggunaan DML 4. Menampilkan data yang berkondisi dengan klausa WHERE SELECT * FROM `peserta` WHERE `kode_user` = 1; +-----------+------+------------------+----------+---------+----------+-------+ kode_user nama email instansi user_id password akses +-----------+------+------------------+----------+---------+----------+-------+ 1 Alan alan@antix.or.id ICT alan 123456 op +-----------+------+------------------+----------+---------+----------+-------+ 1 row in set (0.00 sec) Contoh, dengan kondisi, tampilkan yang aksesnya adalah user saja SELECT * FROM `peserta` WHERE `akses` = 'user'; +-----------+-------+-----------------+----------+---------+----------+-------+ kode_user nama email instansi user_id password akses +-----------+-------+-----------------+----------+---------+----------+-------+ 2 Rosit r05it@yahoo.com SMKN 45 rosit 654321 user +-----------+-------+-----------------+----------+---------+----------+-------+ 1 row in set (0.00 sec)
Contoh Penggunaan DML 5. Merubah data dengan perintah UPDATE, perhatikan nilai passwordnya SELECT * FROM `peserta` WHERE `akses` = 'user'; +-----------+-------+-----------------+----------+---------+----------+-------+ kode_user nama email instansi user_id password akses +-----------+-------+-----------------+----------+---------+----------+-------+ 2 Rosit r05it@yahoo.com SMKN 45 rosit 654321 user +-----------+-------+-----------------+----------+---------+----------+-------+ 1 row in set (0.00 sec) Setelah dilakukan update, perhatikan nilai passwordnya UPDATE `peserta` SET `password`='123456' WHERE `kode_user` = 2; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 SELECT * FROM `peserta` WHERE `akses` = 'user'; +-----------+-------+-----------------+----------+---------+----------+-------+ kode_user nama email instansi user_id password akses +-----------+-------+-----------------+----------+---------+----------+-------+ 2 Rosit r05it@yahoo.com SMKN 45 rosit 123456 user +-----------+-------+-----------------+----------+---------+----------+-------+ 1 row in set (0.00 sec)
Contoh Penggunaan DML 6. Menghapus data atau record dengan menggunakan DELETE SELECT * FROM `peserta`; +-----------+-------+------------------+----------+---------+----------+-------+ kode_user nama email instansi user_id password akses +-----------+-------+------------------+----------+---------+----------+-------+ 1 Alan alan@antix.or.id ICT alan 123456 op 2 Rosit r05it@yahoo.com SMKN 45 rosit 123456 user +-----------+-------+------------------+----------+---------+----------+-------+ 2 rows in set (0.00 sec) Tetap menggunakan klause WHERE, jika tidak maka semua record akan terhapus DELETE FROM `peserta` WHERE `kode_user` = 2; Query OK, 1 row affected (0.00 sec) SELECT * FROM `peserta`; +-----------+------+------------------+----------+---------+----------+-------+ kode_user nama email instansi user_id password akses +-----------+------+------------------+----------+---------+----------+-------+ 1 Alan alan@antix.or.id ICT alan 123456 op +-----------+------+------------------+----------+---------+----------+-------+ 1 row in set (0.00 sec)
Contoh Penggunaan DML 7. Melihat data secara multiple (join), buatlah tabel nilai sbb: CREATE TABLE IF NOT EXISTS `nilai` ( -> `id` int(5) unsigned NOT NULL AUTO_INCREMENT, -> `kode_user` int(5) unsigned NOT NULL, -> `nilai` decimal(10,2) NOT NULL, -> PRIMARY KEY (`id`) -> ); Query OK, 0 rows affected (0.06 sec) show tables; +----------------------+ Tables_in_testonline +----------------------+ nilai peserta +----------------------+ 2 rows in set (0.01 sec)
Contoh Penggunaan DML 8. Input data pada tabel nilai yang sudah kita buat. INSERT INTO `nilai` SET -> `kode_user` = '1', -> `nilai` = '72.50'; Query OK, 1 row affected (0.00 sec) SELECT * FROM `nilai`; +----+-----------+-------+ id kode_user nilai +----+-----------+-------+ 1 1 72.50 +----+-----------+-------+ 1 row in set (0.00 sec) Perhatikan pada bagian kode_user, tabel nilai, nilainya adalah kode_user pada tabel peserta, yaitu milik Alan.
Contoh Penggunaan DML 9. Jalankan perintah join, dengan menggunakan id tabel dan fieldnya, perhatikan contoh dibawah ini: SELECT nilai.id,peserta.nama,nilai.nilai -> FROM peserta,nilai -> WHERE peserta.kode_user = nilai.kode_user; +----+------+-------+ id nama nilai +----+------+-------+ 1 Alan 72.50 +----+------+-------+ 1 row in set (0.00 sec) Data diatas adalah, perpaduan antara tabel peserta berupa field nama dari tabel peserta, dan field nilai dari tabel nilai.
Sub Query ( multiple SELECT) Subquery biasanya digunakan untuk memanggil data dalam tabel yang sama, atau bergantung pada tabel itu sendiri. SELECT nama, email -> FROM peserta -> WHERE instansi = ( -> -> SELECT instansi -> FROM peserta -> WHERE akses = 'op' -> ); +------+------------------+ nama email +------+------------------+ Alan alan@antix.or.id +------+------------------+ 1 row in set (0.00 sec)
Implementasi MySQL dalam PHP 1. Buatlah file dengan nama koneksi.php isi filenya : <?php // File koneksi ke database MySQL // Deklarasi variable include error_reporting(0); $username = "root"; $password = ""; //umumnya blank jika tidak instalasi baru $host = "localhost"; $database = "testonline"; // Variable koneksi $koneksi = mysql_connect($host,$username,$password); // Cek jika gagal koneksi if($koneksi){ mysql_select_db($database); return; } else { echo "Koneksi Gagal"; };?>
Implementasi MySQL dalam PHP 2. Penggunaan Function include, buat file misal include.php <?php // include.php include "koneksi.php"; // contoh penggunaan query mysql $query = mysql_query("select * from `peserta` where status='user'"); $jumlah=mysql_num_rows($query); echo "Jumlah peserta $jumlah";?> 3. Penggunaan Function require, buat file misal require.php <?php // require.php require koneksi.php"; // contoh penggunaan query mysql $query = mysql_query("select * from `peserta` where status='user'"); $jumlah=mysql_num_rows($query); echo "Jumlah peserta $jumlah";?>
Sekian dan Terimakasih Sampai bertemu di part selanjutnya.