MySQL Databases Dasar-dasar MySQL dan Implementasi MySQL kedalam pemrograman PHP Jakarta, 16 April 2011 Oleh: M. Awaludin, S.Kom http://www.alan.web.id
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
http://www.alan.web.id
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. http://www.alan.web.id
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
http://www.alan.web.id
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.
http://www.alan.web.id
Jenis tipe data pada MySQL Dibawah ini tipe data yang sering digunakan dalam aplikasi PHP NAMA TIPE DATA
PANJANG DAN NILAI MAKSIMALNYA
INT
0 s.d 4294967295 (UNSIGNED)
DECIMAL
-1.7976931348623157E+308 s.d -2.2250738585072014E-308 untuk nilai negatif, 0, dan 2.2250738585072014E-308 hingga 1.7976931348623157E+308 untuk nilai positif.
DATE
YYYY-MM-DD, 1000-01-01 s.d 9999-12-31
DATETIME
YYYY-MM-DD HH:MM:SS, 1000-01-01 00:00:00 s.d 999912-31 23:59:59
TIME
HH:MM:SS, -838:59:59 s.d 838:59:59
VARCHAR
1 s.d 255
TEXT
65535
ENUM
65535 jenis nilai pilihan (misal pilihan: user, operator,admin)
Ref. http://www.mysql.com
http://www.alan.web.id
Contoh Penggunaan DDL • 1.
Studi kasus Database Test Online, kerangka database sbb: 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. mysql> http://www.alan.web.id
Contoh Penggunaan DDL mysql> CREATE DATABASE testonline; Query OK, 1 row affected (0.00 sec) mysql>
2. Membuat tabel “peserta”, dalam database “testonline” mysql> USE testonline; Database changed mysql> mysql> 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) mysql> http://www.alan.web.id
Contoh Penggunaan DDL 3. Menambah field “no_hp” pada tabel “peserta” mysql> ALTER TABLE `peserta` ADD `no_hp` varchar(25) -> AFTER `akses`; Query OK, 0 rows affected (0.15 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> 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) mysql> http://www.alan.web.id
Contoh Penggunaan DDL 4. Merubah nama atau type data field atau kolom menggunakan ALTER mysql> 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 mysql> 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) mysql> http://www.alan.web.id
Contoh Penggunaan DDL 5. Merubah nama tabel “peserta” menjadi “user” mysql> ALTER TABLE `peserta` RENAME TO `user`; Query OK, 0 rows affected (0.01 sec) mysql> show tables; +----------------------+ | Tables_in_testonline | +----------------------+ | user | +----------------------+ 1 row in set (0.00 sec) mysql>
http://www.alan.web.id
Contoh Penggunaan DDL 6. Menambahkan PRIMARY KEY pada tabel “peserta” mysql> ALTER TABLE `peserta` -> ADD PRIMARY KEY(kode_user); Query OK, 0 rows affected (0.09 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> 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) mysql> http://www.alan.web.id
Contoh Penggunaan DDL 7. Menghapus PRIMARY KEY pada tabel “peserta” mysql> ALTER TABLE `peserta` DROP PRIMARY KEY; Query OK, 0 rows affected (0.09 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> 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) mysql> http://www.alan.web.id
Contoh Penggunaan DDL 8. Menghapus field atau kolom “nohp” pada tabel “peserta” mysql> ALTER TABLE `peserta` DROP `nohp`; Query OK, 0 rows affected (0.20 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> 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) mysql> http://www.alan.web.id
Contoh Penggunaan DDL 9. Merubah PRIMARY KEY supaya nilai datanya otomatis mysql> 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 mysql> 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) mysql> http://www.alan.web.id
Contoh Penggunaan DDL 10. Menghapus database “testonline” mysql> DROP DATABASE `testonline`; Query OK, 0 rows affected (0.01 sec) mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | data_user | | demo | | mysql | +--------------------+ 4 rows in set (0.01 sec) mysql>
http://www.alan.web.id
Contoh Penggunaan DML 1. Input data peserta kedalam tabel “peserta” mysql> 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) mysql> INSERT INTO `peserta` SET -> nama = 'Alan', -> email = '
[email protected]', -> instansi = 'ICT', -> user_id = 'alan', -> password = '123456', -> akses = 'op'; Query OK, 1 row affected (0.00 sec) mysql> http://www.alan.web.id
Contoh Penggunaan DML 2. Menampilkan semua isi tabel “peserta” mysql> SELECT * FROM `peserta`; +-----------+-------+------------------+----------+---------+----------+-------+ | kode_user | nama | email | instansi | user_id | password | akses | +-----------+-------+------------------+----------+---------+----------+-------+ | 1 | Alan |
[email protected] | ICT | alan | 123456 | op | | 2 | Rosit |
[email protected] | SMKN 45 | rosit | 654321 | user | +-----------+-------+------------------+----------+---------+----------+-------+ 2 rows in set (0.00 sec) mysql>
3. Menampilkan kolom yang kita pilih saja, misal nama, email, instansi mysql> SELECT `nama`,`email`,`instansi` FROM `peserta`; +-------+------------------+----------+ | nama | email | instansi | +-------+------------------+----------+ | Alan |
[email protected] | ICT | | Rosit |
[email protected] | SMKN 45 | +-------+------------------+----------+ 2 rows in set (0.00 sec) mysql> http://www.alan.web.id
Contoh Penggunaan DML 4. Menampilkan data yang berkondisi dengan klausa WHERE mysql> SELECT * FROM `peserta` WHERE `kode_user` = 1; +-----------+------+------------------+----------+---------+----------+-------+ | kode_user | nama | email | instansi | user_id | password | akses | +-----------+------+------------------+----------+---------+----------+-------+ | 1 | Alan |
[email protected] | ICT | alan | 123456 | op | +-----------+------+------------------+----------+---------+----------+-------+ 1 row in set (0.00 sec) mysql>
Contoh, dengan kondisi, tampilkan yang aksesnya adalah “user” saja mysql> SELECT * FROM `peserta` WHERE `akses` = 'user'; +-----------+-------+-----------------+----------+---------+----------+-------+ | kode_user | nama | email | instansi | user_id | password | akses | +-----------+-------+-----------------+----------+---------+----------+-------+ | 2 | Rosit |
[email protected] | SMKN 45 | rosit | 654321 | user | +-----------+-------+-----------------+----------+---------+----------+-------+ 1 row in set (0.00 sec) mysql>
http://www.alan.web.id
Contoh Penggunaan DML 5. Merubah data dengan perintah UPDATE, perhatikan nilai passwordnya mysql> SELECT * FROM `peserta` WHERE `akses` = 'user'; +-----------+-------+-----------------+----------+---------+----------+-------+ | kode_user | nama | email | instansi | user_id | password | akses | +-----------+-------+-----------------+----------+---------+----------+-------+ | 2 | Rosit |
[email protected] | SMKN 45 | rosit | 654321 | user | +-----------+-------+-----------------+----------+---------+----------+-------+ 1 row in set (0.00 sec) mysql>
Setelah dilakukan update, perhatikan nilai “passwordnya” mysql> UPDATE `peserta` SET `password`='123456' WHERE `kode_user` = 2; Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> SELECT * FROM `peserta` WHERE `akses` = 'user'; +-----------+-------+-----------------+----------+---------+----------+-------+ | kode_user | nama | email | instansi | user_id | password | akses | +-----------+-------+-----------------+----------+---------+----------+-------+ | 2 | Rosit |
[email protected] | SMKN 45 | rosit | 123456 | user | +-----------+-------+-----------------+----------+---------+----------+-------+ 1 row in set (0.00 sec) mysql> http://www.alan.web.id
Contoh Penggunaan DML 6. Menghapus data atau record dengan menggunakan DELETE mysql> SELECT * FROM `peserta`; +-----------+-------+------------------+----------+---------+----------+-------+ | kode_user | nama | email | instansi | user_id | password | akses | +-----------+-------+------------------+----------+---------+----------+-------+ | 1 | Alan |
[email protected] | ICT | alan | 123456 | op | | 2 | Rosit |
[email protected] | SMKN 45 | rosit | 123456 | user | +-----------+-------+------------------+----------+---------+----------+-------+ 2 rows in set (0.00 sec)
Tetap menggunakan klause WHERE, jika tidak maka semua record akan terhapus mysql> DELETE FROM `peserta` WHERE `kode_user` = 2; Query OK, 1 row affected (0.00 sec) mysql> SELECT * FROM `peserta`; +-----------+------+------------------+----------+---------+----------+-------+ | kode_user | nama | email | instansi | user_id | password | akses | +-----------+------+------------------+----------+---------+----------+-------+ | 1 | Alan |
[email protected] | ICT | alan | 123456 | op | +-----------+------+------------------+----------+---------+----------+-------+ 1 row in set (0.00 sec) mysql> http://www.alan.web.id
Contoh Penggunaan DML 7. Melihat data secara multiple (join), buatlah tabel “nilai” sbb: mysql> 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) mysql> show tables; +----------------------+ | Tables_in_testonline | +----------------------+ | nilai | | peserta | +----------------------+ 2 rows in set (0.01 sec) mysql> http://www.alan.web.id
Contoh Penggunaan DML 8. Input data pada tabel “nilai” yang sudah kita buat. mysql> INSERT INTO `nilai` SET -> `kode_user` = '1', -> `nilai` = '72.50'; Query OK, 1 row affected (0.00 sec) mysql> SELECT * FROM `nilai`; +----+-----------+-------+ | id | kode_user | nilai | +----+-----------+-------+ | 1 | 1 | 72.50 | +----+-----------+-------+ 1 row in set (0.00 sec) mysql>
Perhatikan pada bagian “kode_user”, tabel “nilai”, nilainya adalah “kode_user” pada tabel “peserta”, yaitu milik “Alan”. http://www.alan.web.id
Contoh Penggunaan DML 9. Jalankan perintah join, dengan menggunakan id tabel dan fieldnya, perhatikan contoh dibawah ini: mysql> 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) mysql>
Data diatas adalah, perpaduan antara tabel peserta berupa field nama dari tabel peserta, dan field nilai dari tabel nilai.
http://www.alan.web.id
Sub Query ( multiple SELECT) Subquery biasanya digunakan untuk memanggil data dalam tabel yang sama, atau bergantung pada tabel itu sendiri. mysql> SELECT nama, email -> FROM peserta -> WHERE instansi = ( -> -> SELECT instansi -> FROM peserta -> WHERE akses = 'op' -> ); +------+------------------+ | nama | email | +------+------------------+ | Alan |
[email protected] | +------+------------------+ 1 row in set (0.00 sec) mysql>
http://www.alan.web.id
Implementasi MySQL dalam PHP 1. Buatlah file dengan nama koneksi.php isi filenya :
= = = =
"root"; ""; //umumnya blank jika tidak instalasi baru "localhost"; "testonline";
// Variable koneksi $koneksi = mysql_connect($host,$username,$password); // Cek jika gagal koneksi if($koneksi){ mysql_select_db($database); return; } else { echo "Koneksi Gagal"; }; ?> http://www.alan.web.id
Implementasi MySQL dalam PHP 2. Penggunaan Function “include”, buat file misal include.php
3. Penggunaan Function “require”, buat file misal require.php http://www.alan.web.id
Sekian dan Terimakasih Sampai bertemu di part selanjutnya.
http://www.alan.web.id