Jumat, 23 Agustus 2013

Belajar SQL dengan MySQL

Create Database
Diasumsikan anda telah login sebagai user root MySQL,
Jalankan perintah berikut untuk create database KLINIK
mysql> create database klinik;
Query OK, 1 row affected (0.00 sec)
 
Menggunakan Database 
Jalankan perintah berikut untuk menggunakan database KLINIK
mysql> use klinik
Database changed
Create Tabel
Dalam latihan ini akan membuat tabel Spesialis dan Dokter seperti gambar berikut ini:
Gunakan perintah \e untuk membuka editor Vi
Berikut perintah SQL untuk membuat tabel Spesialis
CREATE TABLE spesialis
( id integer not null auto_increment,
  nama varchar(32) not null,
    primary key (id)
);
Jalankan perintah dengan menekan tombol Esc dilanjutkan dengan perintah :wq
mysql> \e
    -> ;
    Query OK, 0 rows affected (0.06 sec)
Berikut perintah SQL membuat tabel Dokter
CREATE TABLE dokter
(
    id integer not null auto_increment primary key,
    nama varchar(64) not null,
    gender varchar(20),
    alamat varchar(255),
    telp varchar(20),
    id_spesialis integer
);
Melihat Tabel-Tabel Database
mysql> show tables;
+------------------+
| Tables_in_klinik |
+------------------+
| dokter           |
| spesialis        |
+------------------+
2 rows in set (0.00 sec)
Melihat Schema Tabel
mysql> describe dokter;
+--------------+--------------+------+-----+---------+----------------+
| Field        | Type         | Null | Key | Default | Extra          |
+--------------+--------------+------+-----+---------+----------------+
| id           | int(11)      |      | PRI | NULL    | auto_increment |
| nama         | varchar(64)  |      |     |         |                |
| gender       | varchar(20)  | YES  |     | NULL    |                |
| alamat       | varchar(255) | YES  |     | NULL    |                |
| telp         | varchar(20)  | YES  |     | NULL    |                |
| id_spesialis | int(11)      | YES  |     | NULL    |                |
+--------------+--------------+------+-----+---------+----------------+
6 rows in set (0.00 sec)
Query INSERT
Berikut perintah SQL untuk menambahkan record ke dalam tabel Spesialis
mysql> insert into spesialis (nama) values ('Penyakit Dalam');
Query OK, 1 row affected (0.00 sec)
Berikut perintah SQL untuk menambahkan record ke dalam tabel Dokter
mysql> insert into dokter (nama,gender,alamat,telp,id_spesialis)
    -> values ('Rosalie Naurah Husna','Jl. Rawajati Timur II No.21',
    -> 'Wanita','021-7943333',4);
Perhatikan pada tabel Spesialis dan Dokter, Field Id tidak ada pada SQL INSERT, karena Field id adalah Field dengan tipe auto_increment / id akan di generate langsung oleh MySQL
Query SELECT
Menampilkan seluruh record tabel spesialis
mysql> select * from spesialis;
+----+----------------+
| id | nama           |
+----+----------------+
|  1 | Umum           |
|  2 | Jantung        |
|  3 | Penyakit Dalam |
|  4 | Anak           |
|  5 | Genekologi     |
+----+----------------+
5 rows in set (0.00 sec)
Menampilkan Record untuk Field id,nama,gender,telp pada tabel Dokter
mysql> select id,nama,gender,telp from dokter;
+----+-------------------------+--------+-------------+
| id | nama                    | gender | telp        |
+----+-------------------------+--------+-------------+
|  1 | Rosalie Naurah Husna    | Wanita | 021-7943333 |
|  2 | Defghi Arsy M           | Pria   | 021-7891111 |
|  3 | Iffa Arsy Cahya Nisrina | Wanita | 021-7891111 |
+----+-------------------------+--------+-------------+
3 rows in set (0.01 sec)
Query SELECT lebih dari 1 Tabel
Menampilkan seluruh record dokter dan spesialisasinya
mysql> select dokter.id,dokter.nama,spesialis.nama from dokter, spesialis
    -> where dokter.id_spesialis=spesialis.id;
+----+-------------------------+---------+
| id | nama                    | nama    |
+----+-------------------------+---------+
|  1 | Rosalie Naurah Husna    | Anak    |
|  2 | Defghi Arsy M           | Jantung |
|  3 | Iffa Arsy Cahya Nisrina | Umum    |
+----+-------------------------+---------+
3 rows in set (0.00 sec)
Query UPDATE
Berikut perintah SQL untuk mengupdate record telpon dokter Defghi
mysql> update dokter set telp='021-7894444' where id=2;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from dokter where id=2;
+----+---------------+--------+---------------------------+-------------+--------------+
| id | nama          | gender | alamat                    | telp        | id_spesialis |
+----+---------------+--------+---------------------------+-------------+--------------+
|  2 | Defghi Arsy M | Pria   | Kebagusan IV Pasar Minggu | 021-7894444 |            2 |
+----+---------------+--------+---------------------------+-------------+--------------+
1 row in set (0.00 sec)
Query DELETE
Berikut perintah SQL untuk menghapus record tabel spesialis untuk data spesialis Dokter Umum
mysql> delete from spesialis where id=1;
Query OK, 1 row affected (0.00 sec)
 
mysql> select * from spesialis;
+----+----------------+
| id | nama           |
+----+----------------+
|  2 | Jantung        |
|  3 | Penyakit Dalam |
|  4 | Anak           |
|  5 | Genekologi     |
+----+----------------+
4 rows in set (0.00 sec)
Perhatikan, seharusnya record pada tabel spesialis untuk id=1 tidaklah bisa dihapus, karena masih digunakan oleh tabel lain yaitu tabel dokter. MySQL (4.01) yang digunakan dalam latihan ini (MyISAM) masih belum support foreign key, menurut dokumentasi dari MySQL fitur foreign key dengan gunakan MyISAM baru akan di realisasikan pada MySQL 5.01. Namun demikian Anda bisa menggunakan fitur foreign key pada MySQL 4.01 dengan engine InnoDB.
Latihan SQL
Perhatikan Skema tabel berikut :
  1. Buat Tabel kota dan Tabel Pasien sesuai skema Gambar diatas
  2. Isi data tabel Kota dan tabel Pasien
  3. Cobalah latihan untuk Edit data dan Hapus data

Tidak ada komentar :

Posting Komentar