penggunaan delimiter di mysql

93
Penggunaan Delimiter di MySQL Pada saat kita mendefinisikan objek yang tersimpan di database MySQL seperti stored procedure, trigger maupun function, ada problem yang akan muncul yaitu penggunaan titik koma ( ; ) pada statement SQL yang merupakan bagian dari objek tersebut. Kenapa begitu ? Karena MySQL secara default menganggap titik koma ( ; ) sebagai delimiter / pembatas akhir dari suatu perintah / statement. Akhirnya pembuatan objek yang memiliki beberapa statement tidak akan berjalan sempurna karena "berhenti di tengah jalan". Solusi terhadap masalah di atas adalah menggunakan delimiter selain tanda titik koma ( ; ) misalkan dengan garis pipa ( | ). Penggunaannya sangat sederhana, sebelum mendefinisikan objek tersebut kita gunakan statement "DELIMITER" diikuti tanda pemisah baru. Setelah di akhir pendefinisian kita kembalikan delimiter lagi kepada tanda titik koma. Contoh Penggunaan : 1. DELIMITER | 2. 3. CREATE TRIGGER hapus_tr_penjualan AFTER DELETE 4. ON tr_penjualan FOR EACH ROW 5. BEGIN 6. INSERT INTO tr_penjualan_hapus 7. ( tgl_transaksi, 8. kode_cabang, 9. kode_kasir, 10. kode_item, 11. kode_produk, 12. jumlah_pembelian, 13. tgl_perubahan, 14. nama_user 15. ) 16. VALUES 17. ( OLD.tgl_transaksi, 18. OLD.kode_cabang, 19. OLD.kode_kasir, 20. OLD.kode_item,

Upload: fanhyde

Post on 27-Nov-2015

533 views

Category:

Documents


3 download

DESCRIPTION

Mysql

TRANSCRIPT

Page 1: Penggunaan Delimiter Di MySQL

Penggunaan Delimiter di MySQL

Pada saat kita mendefinisikan objek yang tersimpan di database MySQL seperti stored procedure, trigger maupun function, ada problem yang akan muncul yaitu penggunaan titik koma ( ; ) pada statement SQL yang merupakan bagian dari objek tersebut. 

Kenapa begitu ? Karena MySQL secara default menganggap titik koma ( ; ) sebagai delimiter / pembatas akhir dari suatu perintah / statement. Akhirnya pembuatan objek yang memiliki beberapa statement tidak akan berjalan sempurna karena "berhenti di tengah jalan".

Solusi terhadap masalah di atas adalah menggunakan delimiter selain tanda titik koma ( ; ) misalkan dengan garis pipa ( | ). Penggunaannya sangat sederhana, sebelum mendefinisikan objek tersebut kita gunakan statement "DELIMITER" diikuti tanda pemisah baru. Setelah di akhir pendefinisian kita kembalikan delimiter lagi kepada tanda titik koma.

Contoh Penggunaan :

1. DELIMITER |

2.  

3. CREATE TRIGGER hapus_tr_penjualan AFTER DELETE

4.     ON tr_penjualan FOR EACH ROW

5. BEGIN

6.   INSERT INTO tr_penjualan_hapus

7.         (       tgl_transaksi,

8.                 kode_cabang,

9.                 kode_kasir,

10.                 kode_item,

11.                 kode_produk,

12.                 jumlah_pembelian,

13.                 tgl_perubahan,

14.                 nama_user

15.         )

16.   VALUES

17.         (       OLD.tgl_transaksi,

18.                 OLD.kode_cabang,

19.                 OLD.kode_kasir,

20.                 OLD.kode_item,

21.                 OLD.kode_produk,

22.                 OLD.jumlah_pembelian,

23.                 SYSDATE(),

24.                 CURRENT_USER

25.         );

26. END;

27.  

28. |

29.  

Page 2: Penggunaan Delimiter Di MySQL

30. DELIMITER ;

Keterangan Contoh :

Terlihat pada baris 1 delimiter / pemisah tanda garis pipa ( | ) digunakan sebelum pendefinisian trigger "hapus_tr_penjualan". Dan setelah pendefinisian selesai dilakukan maka tanda titik koma dikembalikan sebagai delimiter seperti terlihat pada baris 30.

Page 3: Penggunaan Delimiter Di MySQL

Membuat Trigger di MySQL

Contents

1. 1 Pendahuluan 2. 2 Pembuatan Trigger 3. 3 Referensi "OLD" dan "NEW" 4. 4 Contoh Penggunaan : Trigger After Delete 5. 5 Sumber Referensi

Pendahuluan

Trigger adalah suatu objek database yang merupakan aksi atau prosedur yang dilakukan jika terjadi perubahan pada row data suatu table. Trigger tidak dapat menjadi bagian dari temporary table atau view.

Beberapa contoh penggunaan trigger yang sangat berguna adalah jika kita ingin melakukan kalkulasi tertentu yang tidak perlu "diketahui" aplikasi luar, mencatat aktivitas operasi table misalkan untuk kepentingan change data capture (CDC), dan lain-lain.

Pembuatan Trigger

Kita dapat membuat trigger dengan perintah CREATE TRIGGER. Berikut adalah syntax lengkapnya :

CREATE    [DEFINER = { user | CURRENT_USER }]    TRIGGER trigger_name trigger_time trigger_event    ON tbl_name FOR EACH ROW trigger_body

Keterangan :

trigger_name : nama trigger. trigger_time : kapan kita mengeksekusi trigger,

apakah sebelum atau sesudah perubahan pada row data table. Jadi pilihannya adalah AFTER atau BEFORE.

trigger_event : merupakan event atau peristiwa yang menyebabkan trigger dilakukan. Pilihan event tersebut adalah INSERT, UPDATE, DELETE.

tbl_name : nama table. trigger_body : statement-statement perintah SQL yang

akan dilakukan. Jika perintahnya lebih dari satu maka

Page 4: Penggunaan Delimiter Di MySQL

gunakan dalam blok statement BEGIN ... END. Jika DEFINER dispesifikasikan maka kita memutuskan

trigger tersebut dijalankan hanya oleh user tertentu (dalam format penulisan user@host). Jika tidak dispesifikasikan, maka user yang melakukan perubahan (CURRENT_USER) adalah pilihan default.

Referensi "OLD" dan "NEW"

Karena trigger digunakan pada saat terjadi perubahan row data, maka kita perlu referensi ke row sebelum dan sesudah perubahan. Untuk ini ada dua alias yang berfungsi untuk hal tersebut yaitu OLD dan NEW. 

Sesuai namanya, OLD digunakan untuk referensi sebelum perubahan dan NEW untuk referensi sesudah perubahan.

Contoh Penggunaan : Trigger After Delete

Berikut adalah contoh penggunaan trigger untuk event setelah penghapusan (AFTER DELETE) pada table "tr_penjualan"  - database phi_minimart. Langkah yang akan kita lakukan adalah sebagai berikut :

1. Kita akan membuat satu table audit dengan nama "tr_penjualan_hapus" yang berisi row-row yang dihapus dari table "tr_penjualan" dengan tambahan dua field, yaitu tanggal penghapusan (tgl_perubahan) dan user MySQL yang melakukan hal tersebut (nama_user).

Berikut adalah perintahnya :

USE phi_minimart; CREATE TABLE `tr_penjualan_hapus` LIKE `tr_penjualan`; ALTER TABLE `tr_penjualan_hapus` ADD        (        `tgl_perubahan` DATETIME,        `nama_user` VARCHAR(200)        );

2. Tahap berikutnya adalah membuat trigger yang akan melakukan populasi data yang dihapus dari "tr_penjualan" ke table "tr_penjualan_hapus".

Berikut adalah perintahnya :

Page 5: Penggunaan Delimiter Di MySQL

DELIMITER | CREATE TRIGGER hapus_tr_penjualan AFTER DELETE    ON tr_penjualan FOR EACH ROWBEGIN  INSERT INTO tr_penjualan_hapus        (       tgl_transaksi,                kode_cabang,                kode_kasir,                kode_item,                kode_produk,                jumlah_pembelian,                tgl_perubahan,                nama_user        )  VALUES        (       OLD.tgl_transaksi,                OLD.kode_cabang,                OLD.kode_kasir,                OLD.kode_item,                OLD.kode_produk,                OLD.jumlah_pembelian,                SYSDATE(),                CURRENT_USER        );END; | 

DELIMITER ;

3. Setelah trigger di atas kita buat, sekarang saatnya kita melakukan pengujian. Coba hapus tiga row data dari table "tr_penjualan" dan lihat efeknya di table "tr_penjualan_hapus".

Jalankan perintah berikut :

DELETE FROM tr_penjualan LIMIT 3; SELECT * FROM tr_penjualan_hapus;

Page 6: Penggunaan Delimiter Di MySQL

Terlihat pada gambar di atas 3 row yang dihapus telah "pindah" ke table "tr_penjualan_hapus" dengan tambahan informasi waktu penghapusan dan user yang menghapus.

4. Selesai.

Page 7: Penggunaan Delimiter Di MySQL

Membuat Index di MySQL

Pendahuluan

Index adalah objek pada MySQL yang berisi data yang terurut - dari nilai-nilai pada satu atau lebih field dalam suatu table.

Sama seperti daftar isi pada sebuah buku, index terutama digunakan untuk mempercepat pencarian terhadap suatu set data dengan kondisi tertentu - yang melibatkan kombinasi field yang sudah didefinisikan dalam suatu index.

Tanpa index, pencarian data biasanya akan memakan waktu lama, terutama jika data sudah dalam skala jumlah yang sangat besar.

Syntax Pembuatan Index

Syntax pada MySQL untuk membuat suatu index adalah sebagai berikut :

CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name    [index_type]    ON tbl_name (index_col_name,...)    [index_type] index_col_name:    col_name [(length)] [ASC | DESC] index_type:    USING {BTREE | HASH}

Contoh Pembuatan Index dan Penggunaannya

Page 8: Penggunaan Delimiter Di MySQL

Table "tr_penjualan" pada database "phi-minimart" memiliki sekitar 400 ribu baris data. Dan jika kita perhatikan struktur table tersebut, terdapat banyak foreign key yang jika dilakukan join ke master table akan cukup lambat.

Sebagai gambaran, coba lakukan eksekusi join antara table "tr_penjualan", "ms_produk" dan "ms_cabang" dengan perintah SQL berikut:

SELECT t1.*, m1.nama_produk, m2.nama_cabang FROM 

tr_penjualan t1JOIN ms_produk m1 ON t1.kode_produk = m1.kode_produkJOIN ms_cabang m2 ON t1.kode_cabang = m2.kode_cabangLIMIT 0, 1000000;

dan perhatikan waktu eksekusi dan pengembalian hasilnya. Berikut adalah hasil catatan waktu yang saya dapat dalam 3 kali eksekusi dengan SQLYog :

Catatan Waktu Eksekusi Sebelum IndexEksekusi 1 

427058 row(s) returned

Execution Time : 00:00:00:000

Transfer Time  : 00:00:08:547

Total Time     : 00:00:08:547

Page 9: Penggunaan Delimiter Di MySQL

Eksekusi 2

427058 row(s) returned

Execution Time : 00:00:00:016

Transfer Time  : 00:00:08:547

Total Time     : 00:00:08:563

Eksekusi 3

427058 row(s) returned

Execution Time : 00:00:00:000

Transfer Time  : 00:00:08:469

Total Time     : 00:00:08:469

Sekarang mari kita lakukan index pada dua kolom join pada table "tr_penjualan" tersebut, yaitu "kode_produk" dan "kode_cabang" denga perintah SQL berikut ini :

CREATE INDEX nama_idx_tr_penj1ON tr_penjualan(kode_produk, kode_cabang) USING BTREE;

Tunggu beberapa saat sampai index tersebut selesai dibuat.

Page 10: Penggunaan Delimiter Di MySQL

Sekarang eksekusi kembali perintah "Select..." di atas dan lihat hasil catatan waktunya. Berikut adalah catatan waktu yang saya dapatkan untuk 3 kali eksekusi.

Catatan Waktu Eksekusi Setelah IndexEksekusi 1

427058 row(s) returned

Execution Time : 00:00:00:016

Transfer Time  : 00:00:08:297

Total Time     : 00:00:08:313

Eksekusi 2

427058 row(s) returned

Execution Time : 00:00:00:000

Transfer Time  : 00:00:08:062

Page 11: Penggunaan Delimiter Di MySQL

Total Time     : 00:00:08:062

Eksekusi 3

427058 row(s) returned

Execution Time : 00:00:00:000

Transfer Time  : 00:00:07:766

Total Time     : 00:00:07:766

Terlihat lebih baik bukan performanya ?

Contoh Penggunaan Pada Perintah Update

Efek index pada perintah "Select.." pada contoh di atas hanya memberikan perbedaan beberapa mili second, mari kita lihat dampak penggunaan index pada perintah update.

Pertama kita hapus kembali index yang sudah kita buat di atas dengan perintah berikut ini :

DROP INDEX nama_idx_tr_penj1 ON tr_penjualan;

Setelah itu, coba lakukan perintah update berikut ini dimana kita akan memberikan nilai baru ke kolom "jumlah_pembelian" untuk produk apel, kentang, nangka di semua cabang PHI.

UPDATE tr_penjualan t1, ms_produk m1, ms_cabang m2SET t1.jumlah_pembelian = 2 * t1.jumlah_pembelianWHEREt1.kode_produk = m1.kode_produk ANDt1.kode_cabang = m2.kode_cabang AND(    m1.nama_produk = 'apel 1 kg' OR

Page 12: Penggunaan Delimiter Di MySQL

    m1.nama_produk = 'kentang 1 kg' OR    m1.nama_produk = 'nangka 1 kg') ANDm2.nama_cabang LIKE 'PHI%';

Catat waktu eksekusi dari perintah tersebut setelah selesai dilakukan. Berikut ini adalah 3 kali catatan waktu hasil eksekusi tanpa index.

Catatan Waktu Eksekusi Sebelum IndexEksekusi 1

32360 row(s) affected

Execution Time : 00:00:09:079

Transfer Time  : 00:00:00:000

Total Time     : 00:00:09:079

Eksekusi 2

32360 row(s) affected

Execution Time : 00:00:09:062

Transfer Time  : 00:00:00:000

Total Time     : 00:00:09:062

Eksekusi 3

32360 row(s) affected

Page 13: Penggunaan Delimiter Di MySQL

Execution Time : 00:00:08:297

Transfer Time  : 00:00:00:000

Total Time     : 00:00:08:297

Dan sekarang, coba buat lagi index untuk kedua kolom sama dengan perintah sebelumnya.

CREATE INDEX nama_idx_tr_penj1ON tr_penjualan(kode_produk, kode_cabang) USING BTREE;

Tunggu beberapa saat sampai dengan selesai. Jika sudah, coba lakukan kembali perintah update di atas. Apakah catatan waktu menunjukkan hasil yang lebih baik ?

Sebagai perbandingan kembali, berikut adalah 3 kali hasil pencatatan waktu eksekusi perintah update setelah dilakukan index. Terlihat hasil yang jauh lebih baik.

Catatan Waktu Eksekusi Setelah IndexEksekusi 1

32360 row(s) affected

Execution Time : 00:00:08:109

Transfer Time  : 00:00:00:000

Total Time     : 00:00:08:109

Eksekusi 2

Page 14: Penggunaan Delimiter Di MySQL

32360 row(s) affected

Execution Time : 00:00:07:218

Transfer Time  : 00:00:00:000

Total Time     : 00:00:07:218

Eksekusi 3

32360 row(s) affected

Execution Time : 00:00:06:891

Transfer Time  : 00:00:00:000

Total Time     : 00:00:06:891

Kesimpulan

Dengan contoh pembuatan index dan efektivitasnya pada kedua contoh dengan "Select" dan "Update" terlihat penggunaan index berperan signifikan dalam meningkatkan performa jika terjadi join, lookup atau pencarian data referensi. Dengan demikian, biasakan gunakan index terutama untuk foreign key yang digunakan untuk join ke table lain dari table Anda.

Semoga artikel ini bermanfaat.

Page 15: Penggunaan Delimiter Di MySQL

Membuat Stored Procedure di MySQL

Contents

1. 1 Pendahuluan 2. 2 Pembuatan Stored Procedure 3. 3 Contoh Penggunaan 4. 4 Sumber Referensi

Pendahuluan

Stored procedure adalah salah satu objek routine yang tersimpan pada database MySQL dan dapat digunakan untuk menggantikan berbagai kumpulan perintah yang sering kita gunakan, seperti misalkan sejumlah row ke table lain dengan filter tertentu.

Stored procedure sangat berguna ketika kita tidak ingin user mengakses table secara langsung, atau dengan kata lain membatasi hak akses user dan mencatat operasi yang dilakukan. Dengan demikian resiko kebocoran dan kerusakan data dapat lebih diminalisir.

Pembuatan Stored Procedure

Kita dapat membuat trigger dengan perintah CREATE PROCEDURE. Berikut adalah syntax lengkapnya :

CREATE    [DEFINER = { user | CURRENT_USER }]    PROCEDURE sp_name (proc_parameter[,...])    [characteristic ...] routine_body

Keterangan :

sp_name : nama stored procedure. proc_parameter : parameter input / output dari stored procedure tersebut

(opsional). characteristic : menjelaskan karakteristik dari stored procedure

(COMMENT, LANGUAGE SQL, dan lain-lain). routine_body : kumpulan perintah pada stored procedure tersebut. Jika DEFINER dispesifikasikan maka kita memutuskan trigger tersebut

dijalankan hanya oleh user tertentu (dalam format penulisan user@host). Jika tidak dispesifikasikan, maka user yang melakukan perubahan (CURRENT_USER) adalah pilihan default.

Contoh Penggunaan

Berikut adalah contoh pembuatan dan penggunaan stored procedure untuk menghapus data berdasarkan "kode produk" untuk tiga table yaitu table "ms_produk", "ms_harga_harian", dan "tr_penjualan".

Page 16: Penggunaan Delimiter Di MySQL

1. Buatlah satu stored procedure dengan nama HapusProduk, dengan satu argumen yaitu kode_produk_param bertipe teks (varchar) dengan perintah berikut :

DELIMITER | CREATE PROCEDURE HapusProduk(IN kode_produk_param VARCHAR(12))BEGIN       DELETE FROM ms_produk WHERE kode_produk = kode_produk_param;       DELETE FROM ms_harga_harian WHERE kode_produk = kode_produk_param;       DELETE FROM tr_penjualan WHERE kode_produk = kode_produk_param;END; | DELIMITER ;

2. Setelah selesai dieksekusi, pastikan stored procedure tersebut sudah terbentuk di database kita.

Page 17: Penggunaan Delimiter Di MySQL

3. Sebelum kita mengeksekusi stored procedure tersebut. Kita coba lihat hasil query untuk produk "PROD-0000002" untuk ketiga table yang disebutkan di atas. Ini untuk memastikan adanya row untuk produk tersebut.

Page 18: Penggunaan Delimiter Di MySQL

4. Sekarang coba panggil stored procedure HapusProduk dengan parameter "PROD-0000002" dan tunggu beberapa saat sampai eksekusi selesai.

CALL HapusProduk('PROD-0000002');

5. Coba lakukan kembali perintah pada point no. 3 dan terlihat bahwa sudah tidak terdapat data untuk produk  "PROD-0000002" pada ketiga table tersebut.

Page 19: Penggunaan Delimiter Di MySQL

6. Selesai

Page 20: Penggunaan Delimiter Di MySQL

Menggabungkan Table Transaksi dengan UNION

Pendahuluan

Di dalam berbagai kasus praktek di lapangan yang penulis temukan, ada kesalahan SQL umum yang dilakukan jika membaca diagram ERD (Entity Relationship Diagram) pada kasus relasi "many to many" - seperti pada gambar di bawah ini.

Terlihat ada dua table transaksi - tr_penjualan dan target_penjualan - yang memiliki referensi table yang sama, yaitu ms_produk.

Gambar 1 : Hubungan Antar Table Referensi / Master dengan Table Transaksi

Kesalahan Umum : Penggunaan JOIN

Kesalahan umum yang terjadi biasanya adalah para developer atau dba langsung menggunakan konstruksi join berdasarkan hubungan yang kelihatan sangat nyata pada diagram Gambar 1 - yakni key "kode_produk".

Perintah Select SQL yang dihasilkan menggunakan konstruksi JOIN kira-kira sebagai berikut :

SELECT *FROM   ms_produk,       tr_penjualan,       target_penjualan

Page 21: Penggunaan Delimiter Di MySQL

WHERE  ms_produk.kode_produk = tr_penjualan.kode_produk       AND ms_produk.kode_produk = target_penjualan.kode_produk

atau

SELECT *FROM   ms_produk       JOIN tr_penjualan         ON ms_produk.kode_produk = tr_penjualan.kode_produk       JOIN target_penjualan         ON ms_produk.kode_produk = target_penjualan.kode_produk

Dan jika menggunakan agregasi function seperti SUM akan seperti ini :

SELECT ms_produk.kode_produk,       SUM(jumlah_pembelian)       AS jumlah,       SUM(nilai_target_penjualan) AS nilaitargetFROM   ms_produk       JOIN tr_penjualan         ON ms_produk.kode_produk = tr_penjualan.kode_produk       JOIN target_penjualan         ON ms_produk.kode_produk = target_penjualan.kode_produkGROUP  BY ms_produk.kode_produk

Konstruksi ini jelas salah karena JOIN akan menghasilkan kombinasi perkalian dari table-table yang terlibat. Dan karena hubungan antar kedua table transaksi adalah many to many Ini akan mengakibatkan "distorsi" nilai. Kecuali jika masing-masing JOIN digrouping terlebih dahulu dengan level yang sama dan menghasilkan unique row untuk tiap grouping.

Solusi : Penggunaan UNION

Agar konsisten maka table-table ini perlu digabung dengan mekanisme UNION.

Syntax :

SELECT ...UNION [ALL | DISTINCT] SELECT ...[UNION [ALL | DISTINCT] SELECT ...]

Untuk selection, jumlah kolom dan tipe data dari table-table yang digabung harus sama.

Contoh :

SELECT tr_penjualan.kode_produk,       tr_penjualan.jumlah_pembelian,

Page 22: Penggunaan Delimiter Di MySQL

       NULL AS nilai_target_penjualanFROM   ms_produk,       tr_penjualanWHERE  ms_produk.kode_produk = tr_penjualan.kode_produkUNIONSELECT target_penjualan.kode_produk,       NULL AS jumlah_pembelian,       nilai_target_penjualanFROM   ms_produk,       target_penjualanWHERE  ms_produk.kode_produk = target_penjualan.kode_produk

dan untuk agregasi SUM akan seperti ini :

SELECT t1.kode_produk,       t1.nama_produk,       SUM(t1.jumlah_pembelian)       AS jumlah,       SUM(t1.nilai_target_penjualan) AS targetFROM   (SELECT tr_penjualan.kode_produk,               ms_produk.nama_produk,               tr_penjualan.jumlah_pembelian,               NULL AS nilai_target_penjualan        FROM   ms_produk,               tr_penjualan        WHERE  ms_produk.kode_produk = tr_penjualan.kode_produk        UNION        SELECT target_penjualan.kode_produk,               ms_produk.nama_produk,               NULL AS jumlah_pembelian,               nilai_target_penjualan        FROM   ms_produk,               target_penjualan        WHERE  ms_produk.kode_produk = target_penjualan.kode_produk) AS t1

Hasil UNION tanpa GROUP BY akan tampak seperti pada gambar di bawah ini.

Page 24: Penggunaan Delimiter Di MySQL

Membuat View di MySQL

Contents

1. 1 Pendahuluan 2. 2 Contoh Penggunaan

Pendahuluan

View adalah perintah query yang disimpan pada database dengan suatu nama tertentu, sehingga bisa digunakan setiap saat untuk melihat data tanpa menuliskan ulang query tersebut.

Syntax dasar perintah untuk membuat view adalah sebagai berikut :

CREATE    [OR REPLACE]    VIEW view_name [(column_list)]    AS select_statement

Kita menggunakan opsi OR REPLACE jika kita ingin mengganti view dengan nama yang sama dengan perintah tersebut. Jika tidak maka perintah CREATE VIEW akan menghasilkan error jika nama view yang ingin dibuat sudah ada sebelumnya.

Contoh Penggunaan

Kita akan membuat view dari relasi antara table "ms_harga_harian", "ms_cabang" dan "ms_produk" dari database phi-minimart dengan nama "view_harga". Perintahnya adalah sebagai berikut :

CREATE VIEW view_hargaASSELECT m1.kode_produk, m2.nama_produk,m1.kode_cabang, m3.nama_cabang,m1.tgl_berlaku, m1.harga_berlaku_cabangFROMms_harga_harian m1 JOIN ms_produk m2 ON m1.kode_produk = m2.kode_produkJOIN ms_cabang m3 ON m1.kode_cabang = m3.kode_cabang;

Eksekusi perintah berikut untuk memastikan view telah dibuat :

SELECT * FROM information_schema.views WHERE table_name = 'view_harga';

Page 26: Penggunaan Delimiter Di MySQL

Menggunakan Field Auto Increment di MySQL

Pendahuluan

Contents

1. 1 Pendahuluan 2. 2 Definisi Auto Increment Field 3. 3 Membuat Table dengan Auto Increment Field   4. 4 Menambahkan Auto Increment Field pada suatu Table   5. 5 Penutup

Auto increment field pada MySQL adalah suatu tipe field integer yang secara otomatis akan bertambah nilainya jika terjadi penambahan row pada table dimana field tersebut berada.

Otomatis disini artinya pada saat kita memasukkan data baik melalui stement INSERT maupun melalui mekanisme data access lainnya, field tersebut tidak perlu dimasukkan nilainya atau cukup diberi nilai NULL, maka MySQL akan menentukan sendiri nilai apa yang akan diberikan sebagai akibat penambahan baris data tersebut.

Definisi Auto Increment Field

Untuk menambahkan atau merubah suatu field sebagai auto increment, berikut adalah beberapa aturannya :

field tersebut harus didefinisikan sebagai primary key. menambahkan keyword AUTO_INCREMENT pada definisi field. harus bertipe numerik (TINYINT, INT, FLOAT, DECIMAL, dan lain-lain). hanya boleh ada satu field auto increment pada suatu table, tidak bisa lebih.

Sebagai contoh, berikut adalah definisi auto increment field dengan nama kode-transaksi :kode_transaksi INT NOT NULL AUTO_INCREMENT KEY

Membuat Table dengan Auto Increment Field 

Berikut adalah contoh statement SQL untuk membuat suatu table bernama "table_ai" dengan auto increment pada field  "kode_transaksi".

CREATE TABLE table_ai (        kode_transaksi INT NULL AUTO_INCREMENT KEY,        deskripsi VARCHAR(200));

Page 27: Penggunaan Delimiter Di MySQL

Sekarang mari kita menambahkan beberapa data pada table tersebut dan setelah itu kita membaca hasilnya dengan perintah berikut ini.

INSERT INTO table_ai(deskripsi) VALUES ('deskripsi 1');INSERT INTO table_ai(deskripsi) VALUES ('deskripsi 2');SELECT * FROM table_ai;

Hasil eksekusinya terlihat pada gambar berikut di bawah ini.

Sekarang mari kita coba eksekusi lagi perintah berikut ini.

INSERT INTO table_ai(kode_transaksi, deskripsi) VALUES (NULL,'deskripsi 3');SELECT * FROM table_ai;

Dan berikut adalah hasil eksekusi dari perintah tersebut.

Menambahkan Auto Increment Field pada suatu Table 

Jika kita ingin menambahkan field auto increment pada suatu table yang sudah ada, maka pastikan tidak ada definisi primary key sebelumnya pada table tersebut atau penambahan field akan gagal.

Berikut adalah contoh statement SQL untuk menambahkan field auto increment  "kode_transaksi" pada table "tr_penjualan" dari database phi_minimart.

ALTER TABLE tr_penjualan ADD kode_transaksi MEDIUMINT NOT NULL AUTO_INCREMENT KEY;

Berikut adalah isi data pada table tr_penjualan setelah eksekusi perintah tersebut di atas.

Page 28: Penggunaan Delimiter Di MySQL

Merubah Field menjadi Auto Increment

Ada kalanya field yang sudah kita definisikan sebelumnya ingin kita rubah menjadi auto increment dengan melihat efektivitasnya yang lebih baik sebagai unique identifier yang automate.

Sebagai contoh, misalkan kita memiliki suatu table dengan nama "suppliers" dan kita memiliki field "supplier_id" yang bertipe integer dan ingin kita rubah sebagai auto_increment maka perintahnya adalah sebagai berikut.

ALTER TABLE suppliers MODIFY COLUMN supplier_id INT NOT NULL AUTO_INCREMENT KEY;

Penutup

Auto increment field merupakan suatu tipe data numerik yang mengisi nilainya secara otomatis secara incremental  atau bertambah terus. Pada artikel ini telah ditunjukkan bagaimana kita mendefinisikan field tersebut dalam tiga skenario, yaitu :

pada saat pembuatan table baru. sebagai field tambahan pada table yang sudah ada. melakukan konversi field yang sudah ada menjadi auto increment.

Jika kita eksplorasi dan analisa lebih lanjut maka tipe field ini sangat berguna terutama untuk table yang perlu dikenali secara unik namun sebelumnya tidak memiliki key yang bisa

Page 29: Penggunaan Delimiter Di MySQL

digunakan untuk tujuan tersebut.

Demikian artikel mengenai auto increment field ini kami buat, semoga bisa bermanfaat banyak bagi Anda sebagai pengunjung situs ini.

Page 30: Penggunaan Delimiter Di MySQL

Penggunaan Variable di MySQL

Contents

1. 1 Variable dan Penamaannya di MySQL 2. 2 Inisialisasi Variable 3. 3 Urutan Pemberian Nilai Variable pada SELECT 4. 4 Penutup

Variable dan Penamaannya di MySQL

Pada berbagai kondisi, kita memiliki beberapa perintah atau statement SQL dan kita ingin menyimpan hasil eksekusi dari perintah yang satu ke perintah selanjutnya. Sebagai contoh :

kita mengambil suatu kode transaksi yang kita anggap tidak valid. dari kode transaksi yang sudah kita ketahui tersebut kita masukkan data ke suatu audit

table. kemudian kita hapus data transaksi dari header maupun detilnya, atau .. kita rubah saja data transaksi tersebut dengan status "tidak valid"

Bagaimana kita melakukan hal tersebut ? Jika Anda terbayang menggunakan subquery untuk melakukan hal tersebut tentunya akan sangat memberatkan server MySQL sendiri karena perlu banyak cache.

Solusinya adalah dengan menggunakan variable yang berfungsi sebagai "pengingat" nilai tersebut dan dapat direferensikan dengan suatu nama di statement-statement berikutnya yang independen. Tetapi ini tentunya hanya dalam satu sesi koneksi yang sama.

Penamaan variable pada sql memiliki prefix @, artinya setiap nama variable diawali dengan simbol @ diikuti nama variable. Sebagai contoh :  @var1, @kode_transaksi, @nilai_awal, dan lain-lain.

Inisialisasi Variable

Inisialisasi variable pada MySQL dapat dilakukan dengan penggunaan perintah SET dan dalam konstruksi perintah lainnya seperti SELECT, syntax dan perbedaannya adalah sebagai berikut :

SET digunakan untuk inisialisasi variable dengan satu nilai pada suatu waktu dengan penggunaan operator assignment " = " atau " := ".

Syntax :

   SET @namavar1 = nilai [, @namavar2 = nilai2 [, @namavar = nilai3] ]  ;

Page 31: Penggunaan Delimiter Di MySQL

atau

   SET @namavar1 := nilai [, @namavar2 = nilai2 [, @namavar := nilai3] ]  ;

Contoh :

o SET @kolom_pertama = 'kode_produk';o SET @nilai1 = 10, @nilai2 = 20, @kolom = "nila

i_penjualan";o dan seterusnya

SELECT digunakan untuk inisialisasi variable dengan operator assignment " := " dan mengisi variable dengan nilai lain sesuai iterasi hasil row dari eksekusi query. Operator " = " pada statement ini dianggap sebagai operator pembanding nilai (value omparison).

Syntax :

   SELECT @namavar1 := nilai [, @namavar2 := nilai2 [, @namavar := nilai3] ]  ;

Contoh :

o SELECT @nilai1 := 10, @nilai2 := 20, @kolom := "nilai_penjualan";

o SELECT @nilai1 from (SELECT @nilai1 := 20) T;o dan seterusnya

Urutan Pemberian Nilai Variable pada SELECT

Jika Anda sudah jelas dengan pemberian nilai variable, mari kita lihat proses urutan proses pemberian nilai ini pada SELECT statement :

Jika terdapat daftar variable dengan pemisah koma. Maka operasi variable di depan akan didahulukan dan memberi efek kepada variable di belakangnya.

Contoh :o SET @nilai := 10; SELECT @nilai, @nilai := 20; --

Hasilnya 10, 20o SET @nilai := 10; SELECT @nilai := 10, @nilai; --

Page 32: Penggunaan Delimiter Di MySQL

Hasilnya 10, 10

Jika operasi variable terdapat subquery maka operasi tersebut akan terjadi terlebih dahulu dibandingkan query yang memanggil subquery tersebut.

Contoh :o SET @nilai := 20; SELECT @nilai from (select @nilai := 

10) as T; -- Hasilnya 10

Penutup

Demikian artikel singkat mengenai penggunaan variable ini kami sajikan. Semoga bisa berguna buat kita semua dalam penggunaannya sehari-hari. Jika Anda ingin berdiskusi lebih lanjut silahkan bergabung ke user group belajar sql.

Dan untuk Anda yang ingin mengambil script SQL dari contoh-contoh pada artikel ini silahkan mengunjungi halaman Daftar Script SQL. Script yang terkait dengan artikel ini adalah

Page 33: Penggunaan Delimiter Di MySQL

penggunaan_variable.sql.

Page 34: Penggunaan Delimiter Di MySQL

enomoran Baris atau Row Number di MySQL

Salah satu kelemahan SQL adalah tidak mengenal "sistem koordinat" dimana :

kita tahu saat ini kita di posisi baris dan kolom mana, dan... kita dapat mengacu ke baris dan kolom lain dari posisi saat ini, misalkan 3 baris di atas dan 2

kolom ke kanan.

Kedua sifat di atas sangat penting untuk menghasilkan dataset yang bersifat analisis.

Masih bingung ? Bisa baca artikel saya yang membahas hal ini : "Analisis, kenapa Spreadsheet dan bukan query SQL ?"

Namun untuk penomoran baris di MySQL kita memiliki solusi dengan trik penggunaan variable. Berikut adalah contoh penggunaannya :

Penomoran Baris dengan Variable

SELECT @nomorbaris:=@nomorbaris+1 AS nomorbaris,        e1.Start_Date FROM exchange_rate e1, (SELECT @nomorbaris := 0) T;

dan penggunaan lebih lanjut

Penggunaan pada SubquerySELECT T1.Currency1, T1.Currency2, T1.Start_Date, T2.Start_Date AS End_Date, T1.Rate FROM(    SELECT Currency1, Currency2, @nomorbaris1:=@nomorbaris1+1 AS nomorbaris,            e1.Start_Date, Rate    FROM exchange_rate e1, (SELECT @nomorbaris1 := 1) T) T1 JOIN(    SELECT @nomorbaris2:=@nomorbaris2+1 AS nomorbaris,            e1.Start_Date 

Page 35: Penggunaan Delimiter Di MySQL

    FROM exchange_rate e1, (SELECT @nomorbaris2 := 0) T) T2ON T1.nomorbaris = T2.nomorbaris

Gampang bukan ? Nah, buat Anda yang mungkin masih baru dengan penggunaan variable di MySQL dapat melihat artikel saya disini.

Dan untuk Anda yang ingin mengambil table yang sama dengan contoh di atas, dapat mengambilnya di

Page 36: Penggunaan Delimiter Di MySQL

halaman "Daftar Download Script SQL" dengan nama exchange_rate.sql.

Page 37: Penggunaan Delimiter Di MySQL

Penggunaan Variable di MySQL

Contents

1. 1 Variable dan Penamaannya di MySQL 2. 2 Inisialisasi Variable 3. 3 Urutan Pemberian Nilai Variable pada SELECT 4. 4 Penutup

Variable dan Penamaannya di MySQL

Pada berbagai kondisi, kita memiliki beberapa perintah atau statement SQL dan kita ingin menyimpan hasil eksekusi dari perintah yang satu ke perintah selanjutnya. Sebagai contoh :

kita mengambil suatu kode transaksi yang kita anggap tidak valid. dari kode transaksi yang sudah kita ketahui tersebut kita masukkan data ke suatu audit

table. kemudian kita hapus data transaksi dari header maupun detilnya, atau .. kita rubah saja data transaksi tersebut dengan status "tidak valid"

Bagaimana kita melakukan hal tersebut ? Jika Anda terbayang menggunakan subquery untuk melakukan hal tersebut tentunya akan sangat memberatkan server MySQL sendiri karena perlu banyak cache.

Solusinya adalah dengan menggunakan variable yang berfungsi sebagai "pengingat" nilai tersebut dan dapat direferensikan dengan suatu nama di statement-statement berikutnya yang independen. Tetapi ini tentunya hanya dalam satu sesi koneksi yang sama.

Penamaan variable pada sql memiliki prefix @, artinya setiap nama variable diawali dengan simbol @ diikuti nama variable. Sebagai contoh :  @var1, @kode_transaksi, @nilai_awal, dan lain-lain.

Inisialisasi Variable

Inisialisasi variable pada MySQL dapat dilakukan dengan penggunaan perintah SET dan dalam konstruksi perintah lainnya seperti SELECT, syntax dan perbedaannya adalah sebagai berikut :

SET digunakan untuk inisialisasi variable dengan satu nilai pada suatu waktu dengan penggunaan operator assignment " = " atau " := ".

Syntax :

   SET @namavar1 = nilai [, @namavar2 = nilai2 [, @namavar = nilai3] ]  ;

Page 38: Penggunaan Delimiter Di MySQL

atau

   SET @namavar1 := nilai [, @namavar2 = nilai2 [, @namavar := nilai3] ]  ;

Contoh :

o SET @kolom_pertama = 'kode_produk';o SET @nilai1 = 10, @nilai2 = 20, @kolom = "nila

i_penjualan";o dan seterusnya

SELECT digunakan untuk inisialisasi variable dengan operator assignment " := " dan mengisi variable dengan nilai lain sesuai iterasi hasil row dari eksekusi query. Operator " = " pada statement ini dianggap sebagai operator pembanding nilai (value omparison).

Syntax :

   SELECT @namavar1 := nilai [, @namavar2 := nilai2 [, @namavar := nilai3] ]  ;

Contoh :

o SELECT @nilai1 := 10, @nilai2 := 20, @kolom := "nilai_penjualan";

o SELECT @nilai1 from (SELECT @nilai1 := 20) T;o dan seterusnya

Urutan Pemberian Nilai Variable pada SELECT

Jika Anda sudah jelas dengan pemberian nilai variable, mari kita lihat proses urutan proses pemberian nilai ini pada SELECT statement :

Jika terdapat daftar variable dengan pemisah koma. Maka operasi variable di depan akan didahulukan dan memberi efek kepada variable di belakangnya.

Contoh :o SET @nilai := 10; SELECT @nilai, @nilai := 20; --

Hasilnya 10, 20o SET @nilai := 10; SELECT @nilai := 10, @nilai; --

Page 39: Penggunaan Delimiter Di MySQL

Hasilnya 10, 10

Jika operasi variable terdapat subquery maka operasi tersebut akan terjadi terlebih dahulu dibandingkan query yang memanggil subquery tersebut.

Contoh :o SET @nilai := 20; SELECT @nilai from (select @nilai := 

10) as T; -- Hasilnya 10

Penutup

Demikian artikel singkat mengenai penggunaan variable ini kami sajikan. Semoga bisa berguna buat kita semua dalam penggunaannya sehari-hari. Jika Anda ingin berdiskusi lebih lanjut silahkan bergabung ke user group belajar sql.

Dan untuk Anda yang ingin mengambil script SQL dari contoh-contoh pada artikel ini silahkan mengunjungi halaman Daftar Script SQL. Script yang terkait dengan artikel ini adalah

Page 40: Penggunaan Delimiter Di MySQL

penggunaan_variable.sql.

Page 41: Penggunaan Delimiter Di MySQL

Tipe / Jenis JOIN TABLE pada MySQL 5.0

Contents

1. 1 INNER JOIN 1. 1.1 INNER JOIN Antar Table dengan Kondisi ("ms_cabang" dan "ms_kota" dengan key

"kode_kota")2. 1.2 INNER JOIN Antar Table Tanpa Kondisi ("ms_cabang" dengan "ms_kota") 3. 1.3 Implisit INNER JOIN dengan Koma

2. 2 CROSS JOIN 3. 3 OUTER JOIN 4. 4 STRAIGHT_JOIN 5. 5 Penutup

Jika Anda telah memahami fungsi join pada database relasional untuk menghubungkan berbagai table, maka artikel berikut akan menjelaskan dan menunjukkan contoh penggunaan variasi join pada MySQL versi 5.0. JOIN sendiri merupakan konstruksi bahasa yang tidak bisa berdiri sendiri, biasanya berupa klausa pada bagian referensi table pada SELECT, UPDATE atau DELETE statement.

Tipe-tipe JOIN yang akan dibahas adalah :

INNER JOIN CROSS JOIN OUTER JOIN STRAIGHT JOIN

Semua contoh pada artikel ini menggunakan database PHI-Minimart. JIka Anda belum melakukan hal tersebut, silahkan lakukan instalasi dengan dua pilihan, PHI-Minimart full atau PHI-Minimart master table saja.

Tiga table yang akan kita gunakan dari database tersebut adalah ms_cabang, ms_kota dan ms_propinsi dengan relasi terlihat seperti pada gambar berikut.

Page 42: Penggunaan Delimiter Di MySQL

Keterangan : Relasi antar table ms_cabang, ms_kota dan ms_propinsi

INNER JOIN

INNER JOIN adalah tipe join yang akan kita bahas pertama. Tipe join ini akan mengambil semua row dari table asal dan table tujuan dengan kondisi nilai key yang terkait saja - jika ada, dan jika tidak maka row tersebut tidak akan muncul.

Kalau tidak terdapat kondisi key terkait antar table, maka semua row dari kedua table dikombinasikan.

Syntax dari INNER JOIN adalah sebagai berikut :

table_reference [INNER] JOIN table_factor [join_condition]

Terlihat bahwa keyword INNER boleh digunakan secara eksplisit atau tidak. Jika tidak digunakan maka konstruksi JOIN tanpa keyword lain dianggap sebagai INNER JOIN.

INNER JOIN Antar Table dengan Kondisi ("ms_cabang" dan "ms_kota" dengan key "kode_kota")SELECT * FROM ms_cabang INNER JOIN ms_kota ON ms_cabang.kode_kota = ms_kota.kode_kota

Hasil terlihat seperti gambar berikut ini. Disini table sumber adalah ms_cabang (left) mencari referensi row lain dari table ms_kota (right) dengan kondisi nilai kode_kota diantara kedua table tersebut sama. Kondisi ini menggunakan keyword ON.

Page 43: Penggunaan Delimiter Di MySQL

Dengan panduan gambar, kita lihat bahwa tiap row dari ms_cabang akan dicari padanan row-nya di ms_kota :

untuk row pertama kita memiliki kode_kota dengan nilai "KOTA-003", ini akan dicari referensinya ke table ms_kota untuk nilai yang sama dan kita dapatkan row dengan nilai nama_kota "Lhokseumawe" adalah padanannya.

untuk row kedua kita memiliki kode_kota dengan nilai "KOTA-083", ini akan dicari referensinya ke table ms_kota untuk nilai yang sama dan kita dapatkan row dengan nilai nama_kota "Bau-bau" adalah padanannya.

demikian seterusnya.

Sekarang mari kita coba hapus referensi untuk "Lhokseumawe" dari table ms_kota :

DELETE FROM ms_kota WHERE nama_kota = 'Lhokseumawe';

Page 44: Penggunaan Delimiter Di MySQL

Setelah itu coba jalankan kembali perintah JOIN di atas, Anda akan mendapatkan hasil JOIN tanpa referensi row "Lhokseumawe". Jadi INNER JOIN dengan kondisi mengharuskan row dari tiap table memiliki nilai yang sama untuk column referensinya (dalam hal ini kode_kota).

Kembalikan lagi row referensi yang kita hapus tadi dengan perintah INSERT berikut ini :

INSERT INTO `ms_kota` VALUES ('KOTA-003','Lhokseumawe','P33')

INNER JOIN Antar Table Tanpa Kondisi ("ms_cabang" dengan "ms_kota")SELECT * FROM ms_cabang INNER JOIN ms_kota

Hasilnya adalah untuk tiap row dari ms_cabang akan dikombinasikan dengan semua row dari ms_kota - contoh hasilnya terlihat seperti pada gambar di bawah ini.

Page 45: Penggunaan Delimiter Di MySQL

INNER JOIN antar table "ms_cabang", "ms_kota" dan "ms_propinsi"

SELECT ms_cabang.nama_cabang, 

       ms_kota.nama_kota, 

       ms_propinsi.nama_propinsi 

FROM ms_cabang 

INNER JOIN ms_kota ON ms_cabang.kode_kota = ms_kota.kode_kota

INNER JOIN ms_propinsi ON ms_kota.kode_propinsi = ms_propinsi.kode_propinsi

Page 46: Penggunaan Delimiter Di MySQL

Hasil eksekusi terlihat seperti gambar berikut. Dengan penggabungan ketiga table ini sekarang kita dapatkan setiap cabang memiliki informasi nama kota dan nama propinsi dimana cabang tersebut berada.

Implisit INNER JOIN dengan KomaINNER JOIN antar table secara implisit dapat menggunakan daftar table yang dipisah dengan tanda koma (,). Pengkondisian menggunakan klausa where.

SELECT ms_cabang.nama_cabang,

       ms_kota.nama_kota    ,

       ms_propinsi.nama_propinsi

FROM   ms_cabang

Page 47: Penggunaan Delimiter Di MySQL

       , ms_kota

       , ms_propinsi

       WHERE 

       ms_cabang.kode_kota = ms_kota.kode_kota

       AND 

       ms_kota.kode_propinsi = ms_propinsi.kode_propinsi

CROSS JOIN

CROSS JOIN identik dengan INNER JOIN pada MySQL 5.0. Pembahasannya sama dengan INNER JOIN sehingga tidak diulangi lagi disini.

Contoh Penggunaan :

SELECT ms_cabang.nama_cabang, ms_kota.nama_kota, ms_propinsi.nama_propinsi FROM

     ms_cabang CROSS JOIN 

     ms_kota ON ms_cabang.kode_kota = ms_kota.kode_kotaCROSS JOIN 

     ms_propinsi ON ms_kota.kode_propinsi = ms_propinsi.kode_propinsi 

OUTER JOIN

OUTER JOIN merupakan tipe join yang mencari referensi data dari suatu table sumber ke table lain dengan tidak menghilangkan data sumber apabila referensi tidak diketemukan.

Untuk menggunakan tipe OUTER JOIN maka perlu memperhatikan beberapa hal berikut :

Page 48: Penggunaan Delimiter Di MySQL

perlu dibedakan antara table sumber dan table referensi, ini ditentukan dengan cara menspesifikasikan kedudukan table sumber apakah di kiri (LEFT) atau di kanan (RIGHT).

jika tidak ada data dari table referensi yang cocok dengan kondisi join maka hanya data dari table sumber yang ditampilkan tetapi kolom-kolom table referensi akan berisi null.

Contoh Penggunaan :

Hapus data master "Lhokseumawe" dari table ms_kota

DELETE FROM ms_kota WHERE nama_kota = 'Lhokseumawe'

Lakukan join seperti perintah berikut ini, dan perhatikan hasilnya seperti pada gambar.

SELECT ms_cabang.*,       ms_kota.nama_kotaFROM ms_cabangLEFT OUTER JOIN ms_kota     ON ms_cabang.kode_kota = ms_kota.kode_kota

Page 49: Penggunaan Delimiter Di MySQL

Tambahkan kembali data "Lhokseumawe" ke table ms_kota

INSERT INTO ms_kota(kode_kota, nama_kota, kode_propinsi)VALUES ('KOTA-003', 'Lhokseumawe', 'P33');

Sekarang coba ganti syntax pada query di atas dari "LEFT" menjadi "RIGHT" dan lihat hasil eksekusinya. Tentunya dari hasil tersebut Anda sudah dapat mengambil kesimpulan perbedaan dari kedua konstruksi tersebut.

STRAIGHT_JOIN

Page 50: Penggunaan Delimiter Di MySQL

STRAIGHT_JOIN merupakan pengganti keyword JOIN pada MySQL yang digunakan untuk "memaksa" proses join table dari kiri (LEFT) ke kanan (RIGHT).

Contoh Penggunaan :

SELECT ms_cabang.*,

       ms_kota.nama_kota

FROM ms_cabang

STRAIGHT_JOIN ms_kota

     ON ms_cabang.kode_kota = ms_kota.kode_kota

Penutup

Page 51: Penggunaan Delimiter Di MySQL

INTERVAL dan Unit INTERVAL di MySQL

INTERVAL adalah keyword yang digunakan di MySQL untuk mewakili suatu periode waktu. INTERVAL harus dispesifikasikan lagi dengan unit waktu untuk memperjelas periode waktu yang dimaksud. Sebagai contoh, unit YEAR untuk menunjukkan periode TAHUN.

Syntax yang digunakan :

INTERVAL expression unit_value

Contoh Penggunaan 1 :

Kita ingin melihat hasil perhitungan tanggal 3 minggu dari 15 Januari 2011, maka query-nya akan terlihat sebagai berikut

SELECT '2011-01-15' + INTERVAL 3 WEEK;

dengan hasil eksekusinya :

2011-02-05

Contoh Penggunaan 2 :

Kemudian jika kita ingin melihat hasil penjumlahan periode 2 tahun tanggal transaksi database PHI-Minimart maka query-nya akan terlihat sebagai berikut :

SELECT tgl_transaksi + INTERVAL 2 YEAR FROM tr_penjualan;

Dan jika ingin menambahkan periode 1 tahun 2 bulan bisa dilakukan dengan 2 query berikut :

SELECT tgl_transaksi + INTERVAL 1 YEAR + INTERVAL 2 MONTH FROM tr_penjualan

atau

SELECT tgl_transaksi + INTERVAL '1-2' YEAR_MONTH FROM tr_penjualan

Daftar Unit  Interval Yang Bisa Digunakan

Berikut adalah daftar unit dan format penulisan angka yang bisa digunakan :

 unit value  expression format

 MICROSECOND  MICROSECONDS

 SECOND  SECONDS

Page 52: Penggunaan Delimiter Di MySQL

 MINUTE  MINUTES

 HOUR  HOURS

 DAY  DAYS

 WEEK  WEEKS

 MONTH  MONTHS

 QUARTER  QUARTERS

 YEAR  YEARS

 SECOND_MICROSECOND  'SECONDS.MICROSECONDS'

 MINUTE_MICROSECOND  'MINUTES:SECONDS.MICROSECONDS'

 MINUTE_SECOND  'MINUTES:SECONDS'

 HOUR_MICROSECOND  'HOURS:MINUTES:SECONDS.MICROSECONDS'

 HOUR_SECOND  'HOURS:MINUTES:SECONDS'

 HOUR_MINUTE  'HOURS:MINUTES'

 DAY_MICROSECOND  'DAYS HOURS:MINUTES:SECONDS.MICROSECONDS'

 DAY_SECOND  'DAYS HOURS:MINUTES:SECONDS'

 DAY_MINUTE  'DAYS HOURS:MINUTES'

 DAY_HOUR  'DAYS HOURS'

 YEAR_MONTH  'YEARS-MONTHS'

Sumber Referensi :  

Page 53: Penggunaan Delimiter Di MySQL

enambahkan dan Mengurangi Waktu di MySQL

Contents

1. 1 Pendahuluan 2. 2 Menggunakan Operator Plus dan Minus 3. 3 Penggunaan DATE_ADD 4. 4 Penggunaan DATE_SUB 5. 5 Penggunaan ADDDATE 6. 6 Penggunaan SUBDATE 7. 7 Penggunaan SUBTIME 8. 8 Penggunaan PERIOD_ADD 9. 9 Sumber Referensi

Pendahuluan

Ada beberapa cara untuk menambahkan tanggal dan jam tertentu di MySQL, yaitu  :

1. Menggunakan operator plus (+) dan  minus (-) diikuti keyword INTERVAL dan unit dari Interval.

2. Menggunakan fungsi-fungsi berikut :o DATE_ADD, digunakan untuk menambahkan jumlah hari atau interval waktu

pada tanggal tertentu.o DATE_SUB, digunakan untuk mengurangi interval waktu pada tanggal tertentu.o ADDDATE, digunakan untuk menambahkan jumlah hari atau interval waktu

pada tanggal tertentu.o SUBDATE, digunakan untuk mengurangi jumlah hari atau interval waktu pada

tanggal tertentu.o SUBTIME, digunakan untuk mengurangi dari dua ekspresi waktu (time atau

datetime).o PERIOD_ADD, menambahkan jumlah bulan pada periode tertentu. Periode

tersebut dalam format YYMM atau YYYYMM.

Bagian berikut di bawah menunjukkan contoh-contoh penggunaan dari operator dan fungsi tersebut di atas.

Menggunakan Operator Plus dan Minus

Contoh penggunaannya operator plus minus ( + / - ) adalah sebagai berikut :

SELECT '2010-01-01 00:00:00' + INTERVAL 1 DAY; -- Menambahkan 1 hariSELECT '2010-01-01 00:00:00' - INTERVAL '30' MINUTE; -- Mengurangi 30 menitSELECT '2010-01-01 00:00:00' - INTERVAL '1-3' YEAR_MONTH; --

Page 54: Penggunaan Delimiter Di MySQL

Mengurangi 1 tahun dan 3 bulanSELECT '2010-01-01' + INTERVAL '2' MONTH; -- Menambahkan 2 bulanSELECT '2010-01-01' + INTERVAL '2-6' YEAR_MONTH; -- Menambahkan 2 tahun dan 6 bulanSELECT '2010-01-01' - INTERVAL '1-3' YEAR_MONTH; -- Mengurangi 1 tahun dan 3 bulan

-- Menambahkan interval 3 tahun pada field tgl_transaksi dari database PHI-MinimartSELECT tgl_transaksi + INTERVAL '3' YEAR from tr_penjualan;

Untuk rincian mengenai INTERVAL, silahkan klik halaman wiki pada link ini. 

Penggunaan DATE_ADD

Syntax :

DATE_ADD(date, INTERVAL expr unit)

Contoh :

SELECT DATE_ADD('2010-01-01', INTERVAL 3 MINUTE); -- menambahkan 3 minuteSELECT DATE_ADD('2010-01-01 00:00:00', INTERVAL '2-6' YEAR_MONTH); -- menambahkan 2 tahun 6 bulan

-- Menambahkan 12 jam pada field tgl_transaksi pada table tr_penjualan di database PHI-MinimartSELECT DATE_ADD(tgl_transaksi, INTERVAL 12 HOUR) FROM tr_penjualan;

Penggunaan DATE_SUB

Syntax :

DATE_SUB(date, INTERVAL expr unit)

Contoh :

SELECT DATE_SUB('2010-01-01', INTERVAL 3 MINUTE); -- mengurangi 3 minuteSELECT DATE_SUB('2010-01-01 00:00:00', INTERVAL '2-2' YEAR_MONTH); -- mengurangi 2 tahun 2 bulan

-- Mengurangi 12 jam pada field tgl_transaksi pada table tr_penjualan di database PHI-MinimartSELECT DATE_SUB(tgl_transaksi, INTERVAL 12 HOUR) FROM tr_penjuala

Page 55: Penggunaan Delimiter Di MySQL

n;

Penggunaan ADDDATE

Ada 2 jenis syntax yang berlaku untuk fungsi ADDDATE ini, yaitu :

ADDDATE(date, INTERVAL expr unit)

atau

ADDDATE(expr, days)

Contoh :

SELECT ADDDATE('2010-01-01', INTERVAL 3 MINUTE); -- menambahkan 3 minuteSELECT ADDDATE('2010-01-01 00:00:00', INTERVAL '2-2' YEAR_MONTH); -- menambahkan 2 tahun 2 bulanSELECT ADDDATE('2010-01-01 00:00:00', 3); -- menambahkan 3 hari

-- Menambahkan 12 jam pada field tgl_transaksi pada table tr_penjualan di database PHI-MinimartSELECT ADDDATE(tgl_transaksi, INTERVAL 12 HOUR) FROM tr_penjualan;

-- Menambahkan 7 hari pada field tgl_transaksi pada table tr_penjualan di database PHI-MinimartSELECT ADDDATE(tgl_transaksi, 7) FROM tr_penjualan;

Penggunaan SUBDATE

Syntax :

SUBDATE(date, INTERVAL expr unit)

atau

SUBDATE(expr, days)

Contoh :

SELECT SUBDATE('2010-01-01', INTERVAL 3 MINUTE); -- mengurangi  3 minuteSELECT SUBDATE('2010-01-01 00:00:00', INTERVAL '2-2' YEAR_MONTH); -- mengurangi  2 tahun 2 bulanSELECT SUBDATE('2010-01-01 00:00:00', 3); -- mengurangi 3 hari

-- Mengurangi 12 jam pada field tgl_transaksi pada table

Page 56: Penggunaan Delimiter Di MySQL

tr_penjualan di database PHI-MinimartSELECT SUBDATE(tgl_transaksi, INTERVAL 12 HOUR) FROM tr_penjualan;

-- Mengurangi 7 hari pada field tgl_transaksi pada table tr_penjualan di database PHI-MinimartSELECT SUBDATE(tgl_transaksi, 7) FROM tr_penjualan;

Penggunaan SUBTIME

Syntax :

SUBTIME(ekspresi_tanggal_waktu, ekspresi_waktu)

Contoh :

SELECT SUBTIME('2010-01-01 00:00:00', '11:00:00'); -- mengurangi 12 jamSELECT SUBTIME('2010-01-01 12:00:00', '1'); -- mengurangi 1 detikSELECT SUBTIME('2010-01-01 12:00:00', '1:0:0.000000'); -- mengurangi 1 jamSELECT SUBTIME('2010-01-01 12:00:00', '1:1'); -- mengurangi 1 jam dan 1 menitSELECT SUBTIME('2010-01-01 12:00:00', '1 1:1'); -- mengurangi 1 hari, 1 jam dan 1 menit

Penggunaan PERIOD_ADD

Syntax :

PERIOD_ADD(year_month_period, months)

Keterangan : 

year_month_period adalah dalam format YYMM atau YYYYMM.

Contoh :SELECT PERIOD_ADD('201001',3); -- Menambahkan 3 bulan pada Januari 2010SELECT PERIOD_ADD('1001',3); -- Menambahkan 3 bulan pada Januari 2010SELECT PERIOD_ADD('201001',-3); -- Mengurangi 3 bulan pada Januari 2010

Sumber Referensi

Page 57: Penggunaan Delimiter Di MySQL

Mengambil Tanggal Hari Ini

Untuk mengambil tanggal hari ini di MySQL cukup gampang, kita dapat menggunakan fungsi-fungsi berikut :

CURDATE NOW SYSDATE

Contoh Penggunaan:

SELECT CURDATE();

dan berikut contoh eksekusi pada SQLYog.

Format Tanggal

Page 58: Penggunaan Delimiter Di MySQL

Selain keluaran standar seperti di atas, tentunya dalam banyak kesempatan kita ingin format tanggal itu lebih informatif seperti misalkan October, 6 2010. Untuk itu kita gunakan fungsi tambahan, yaitu date_format().

Contoh Penggunaan:

 SQL  Hasil Eksekusi

 Select date_format(curdate(), "%M, %d %Y");  October, 06 2010

 Select date_format(curdate(), "%M, %e %Y");  October, 6 2010

 Select date_format(now(),"%M, %e %Y %H:%i:%s");

 October, 6 2010 18:55:55

Dan berikut contoh eksekusi pada SQLYog.

Untuk daftar selengkapnya dari format ini bisa dilihat pada halaman ini.

Sumber Referensi

Page 59: Penggunaan Delimiter Di MySQL

Menggabungkan Teks di MySQL

Contents

1. 1 Pendahuluan 2. 2 CONCAT dan CONCAT_WS 3. 3 Contoh Penggunaan CONCAT 4. 4 Contoh Penggunaan CONCAT_WS

Pendahuluan

Walau kelihatannya sepele, penggabungan teks atau string di MySQL sering menimbulkan kebingungan. Hal ini disebabkan karena MySQL harus menggunakan function sedangkan pada beberapa produk database lain cukup menggunakan operator plus (+) atau ampersand (&).

Function-function yang digunakan untuk menggabungkan teks di MySQL adalah concat dan concat_ws. Berikut adalah penjelasan kedua function tersebut dan contoh penggunaannya.

CONCAT dan CONCAT_WS

1. CONCAT : adalah fungsi yang digunakan untuk menggabungkan satu atau lebih teks yang diberikan.

CONCAT(teks1, teks2, ...)

2. CONCAT_WS : adalah fungsi yang digunakan untuk menggabungkan satu atau lebih teks dengan tambahan pemisah (separator) antar teks yang digabungkan.

CONCAT(pemisah, teks1, teks2, ...)

Contoh Penggunaan CONCAT

1. Menggabungkan kata "Kampung", spasi dan "Rambutan".

SELECT CONCAT("Kampung", " ", "Rambutan");

Page 61: Penggunaan Delimiter Di MySQL

Contoh Penggunaan CONCAT_WS

1. Menggabungkan kata "Kampung" dan "Rambutan" dengan pemisah "-".

SELECT CONCAT_WS("-", "Kampung", "Rambutan")

2. Menggabungkan field "kode_produk" dan "nama_produk" dengan pemisah ", ".

SELECT CONCAT_WS(", ", kode_produk, nama_produk) FROM ms_produk

Page 63: Penggunaan Delimiter Di MySQL

Mengganti Teks dengan REPLACE

Fungsi REPLACE digunakan di dalam MySQL untuk mengganti teks (satu atau kumpulan karakter) tertentu dengan teks lain.

Syntax :

REPLACE( teks_yang_akan_diganti, teks_yang_dicari, teks_pengganti )

Contoh :

Misalkan table dengan teks yang akan kita ganti adalah sebagai berikut :

Nama_Karyawan============Bintang Maven]Eria Setiawan]Kristina Damai]

Terlihat dari row field tersebut ada yang mengganggu, yaitu tanda penutup kurung sikur "]" pada tiap akhiran. Maka kita bisa gunakan penggunaan fungsi REPLACE untuk mengganti tanda tersebut dengan teks kosong :

REPLACE(Nama_Karyawan, ']', '')

dan konstruksi lengkapnya dengan konteks select dan update :

SELECT REPLACE(Nama_Karyawan, ']', '') from ms_karyawan;

UPDATE ms_karyawan    SET Nama_Karyawan = REPLACE(Nama_Karyawan, ']', '')

Hasil Eksekusi :

Nama_Karyawan============Bintang MavenEria SetiawanKristina Damai

Demikian, semoga artikel mengenai fungsi REPLACE ini dapat membantu.

Page 64: Penggunaan Delimiter Di MySQL

Menggunakan Regular Expression (REGEX) Pada MySQL

Contents

1. 1 Pendahuluan 2. 2 Operator Regular Expression 3. 3 Contoh Penggunaan (Menggunakan database PHI-Minimart)

Pendahuluan

Regular Expression (REGEX) adalah konstruksi bahasa untuk mencocokkan teks berdasarkan pola tertentu, terutama untuk kasus-kasus kompleks. Contoh misalkan mencari teks berawalan karakter tertentu, memiliki jumlah perulangan dari suatu teks, dan lain sebagainya. Selain itu, REGEX juga sangat manjur (powerful) terutama untuk proses penguraian kata (text parsing). 

Pada artikel ini tidak akan dibahas mengenai REGEX itu sendiri, tapi bagaimana kita menggunakannya pada statement MySQL kita. Untuk informasi mengenai REGEX sendiri dapat dilihat pada halaman ini.

Operator Regular Expression

MySQL menggunakan 3 operator untuk REGEX ini :

1. REGEXP : melakukan pencocokan pola (pattern matching) menggunakan Regular Expresssion.

2. NOT REGEXP : negasi dari REGEXP.3. RLIKE : sama dengan REGEXP.

Syntax :

expression [NOT] REGEXP expressionatauexpression [NOT] RLIKE expression

Contoh Penggunaan (Menggunakan database PHI-Minimart)

Berikut adalah contoh penggunaan operator regular expression dari yang sederhana sampai dengan yang kompleks :

1. Mencari nama produk yang mengandung kata "in".

SELECT  kode_produk, nama_produk FROM ms_produk WHERE nama_p

Page 65: Penggunaan Delimiter Di MySQL

roduk REGEXP 'in';

2. Mencari nama produk yang memiliki awalan kata "kacang".

SELECT kode_produk, nama_produk FROM ms_produk WHERE nama_produk REGEXP '^kacang';

Page 66: Penggunaan Delimiter Di MySQL

3. Mencari nama produk yang tidak memiliki kata "kacang".

SELECT kode_produk, nama_produk FROM ms_produk WHERE nama_produk NOT RLIKE "kacang";

Page 67: Penggunaan Delimiter Di MySQL

4. Mencari nama produk yang hanya memiliki jumlah 4 kata.

SELECT kode_produk, nama_produk FROM ms_produk WHERE TRIM(nama_produk) RLIKE  "^([[:alnum:]]+[[:space:]]+){3}[[:alnum:]]+$";

Page 69: Penggunaan Delimiter Di MySQL

Menghitung Panjang Text / String

Untuk menghitung panjang string / text di MySQL kita dapat menggunakan fungsi length.

Contoh

Select length('PHI-Integration');-- hasil 15

SELECT kode_produk, length(kode_produk) AS panjang FROM ms_produk LIMIT 0,10;

Page 70: Penggunaan Delimiter Di MySQL
Page 71: Penggunaan Delimiter Di MySQL

Fungi GROUP_CONCAT : Menggabungkan String dari Grouping Tertentu

Pendahuluan

Kadang kala kita membuat report kumpulan item dari suatu grouping. Misalkan daftar nama produk dari suatu kategori, tapi dalam bentuk daftar dengan pemisah koma.

Sebagai contoh, misalkan kita memiliki sumber data tabular sebagai berikut :

Data Sumbernama_kategori      nama_produk                       

Sayur-Sayuran      bawang merah 1kg                  

Sayur-Sayuran      bawang putih 1 kg                 

Sayur-Sayuran      buncis 1 kg                       

Buah               alpukat 1 kg                      

Buah               jeruk 1 kg                        

dan ingin kita hasilkan sebagai berikut

Hasil Querynama_kategori      nama_produk                       

Sayur-Sayuran      bawang merah 1kg, bawang putih 1 kg, buncis 1 kg                       

Buah               alpukat 1 kg, jeruk 1 kg        

Sebagai solusi pada MySQL kita bisa menggunakan fungsi GROUP_CONCAT.

Fungsi GROUP_CONCAT

Untuk syntax lengkap dari GROUP_CONCAT sebagaimana diambil dari referensi pada situs MySQL adalah sebagai berikut :

Page 72: Penggunaan Delimiter Di MySQL

GROUP_CONCAT([DISTINCT] expr [,expr ...]

[ORDER BY {unsigned_integer | col_name | expr}

[ASC | DESC] [,col_name ...]]

[SEPARATOR str_val])

Keterangan

[DISTINCT] : digunakan apabila kita ingin mendapatkan hasil koleksi daftar yang unik expr atau expression adalah field atau ekspresi (dari berbagai penggunaan kombinasi field,

literal, function maupun operator) [ORDER BY ...] : digunakan apabila kita ingin mengurutkan hasil SEPARATOR : digunakan untuk merinci string pemisah antar tiap item dari daftar

Beberapa Contoh Penggunaan

Berikut adalah beberapa contoh penggunaan dari function GROUP_CONCAT pada database PHI_Minimart dengan hasilnya.

Query SQL Contoh Hasil (Klik Untuk Memperbesar)

SELECT m2.nama_kategori, GROUP_CONCAT(m1.nama_produk) FROM ms_produk m1JOIN ms_kategori m2ON m1.kode_kategori = m2.kode_kategori

GROUP BY m2.nama_kategori; 

SELECT m2.nama_kategori, GROUP_CONCAT(m1.nama_produk ORDER BY m1.nama_produk DESC) FROM ms_produk m1JOIN ms_kategori m2ON m1.kode_kategori = m2.kode_kategoriGROUP BY m2.nama_kategori;

SELECT m2.nama_kategori,GROUP_CONCAT(   LEFT(m1.nama_produk,5)    ORDER BY m1.nama_produk DESC

Page 73: Penggunaan Delimiter Di MySQL

            ) FROM ms_produk m1JOIN ms_kategori m2ON m1.kode_kategori = m2.kode_kategoriGROUP BY m2.nama_kategori;

Page 75: Penggunaan Delimiter Di MySQL

DDL - Data Definition Languagemerupakan kumpulan perintah SQL yang digunakan untuk membuat, mengubah dan menghapus struktur dan definisi metadata dari objek-objek database.

DML - Data Manipulation Languagemerupakan kumpulan perintah SQL yang digunakan untuk proses pengolahan isi data di dalam table seperti memasukkan, merubah dan menghapus isi data - dan tidak terkait dengan perubahan struktur dan definisi tipe data dari objek database.

Mari kita lihat dari definisi dan contoh lebih lanjut pada bagian berikut di bawah ini.

DDL - Data Definition Language

Seperti definisi yang telah dijelaskan di atas, DDL adalah kumpulan perintah SQL yang digunakan untuk membuat (create), mengubah (alter) dan menghapus (drop) struktur dan definisi tipe data dari objek-objek database.

Objek-objek database pada yang dimaksud - pada MySQL - adalah sebagai berikut :

Database Table View Index Procedure (Stored Procedure) Function Trigger

Contoh :

-- Perintah berikut akan membuat table pada database kita dengan nama "ms_karyawan"CREATE TABLE ms_karyawan (  kode_cabang varchar(10) default NULL,  kode_karyawan varchar(10) NOT NULL,  nama_depan varchar(8) default NULL,  nama_belakang varchar(9) default NULL,  jenis_kelamin varchar(1) default NULL,  PRIMARY KEY  (kode_karyawan))

Daftar Perintah DDL pada MySQL 5.0 Berikut adalah contoh perintah DDL yang digunakan pada MySQL. Klik pada link untuk melihat rincian penggunaan dari perintah tersebut.

Page 76: Penggunaan Delimiter Di MySQL

Pembuatan (CREATE)o CREATE DATABASEo CREATE FUNCTIONo CREATE INDEX o CREATE PROCEDURE o CREATE TABLEo CREATE TRIGGER o CREATE VIEW

Perubahan (ALTER & RENAME) o ALTER DATABASEo ALTER FUNCTIONo ALTER PROCEDUREo ALTER TABLEo ALTER VIEWo RENAME TABLE

Penghapusan (DROP)o DROP DATABASEo DROP FUNCTIONo DROP INDEXo DROP PROCEDUREo DROP TABLEo DROP TRIGGERo DROP VIEW

Tabel Matrix Perintah DDL MySQL 5.0

OBJECT CREATE ALTER DROP RENAME

DATABASE Yes Yes Yes

FUNCTION Yes Yes Yes

INDEX Yes Yes

PROCEDURE Yes Yes Yes

TABLE Yes Yes Yes Yes

TRIGGER Yes Yes

VIEW Yes Yes Yes

Page 77: Penggunaan Delimiter Di MySQL

DML - Data Manipulation Language

DML sendiri adalah kumpulan perintah SQL yang berhubungan dengan pekerjaan mengolah data di dalam table - dan tidak terkait dengan perubahan struktur dan definisi tipe data dari objek database seperti table, column, dan sebagainya.

Contoh DML : Mengambil Seluruh Row Data dari table MS_KARYAWAN

SELECT * FROM ms_karyawan

Contoh DML : Memasukkan data ke dalam tabel ms_karyawan

INSERT INTO ms_karyawan(                kode_cabang,                kode_karyawan,                nama_depan,                nama_belakang,                jenis_kelamin) VALUES ('cab-001','kar-001','Feris','Thia','Laki-laki');

Beberapa daftar Perintah DML MySQL 5.0

CALL DELETE DO HANDLER INSERT LOAD DATA INFILE REPLACE SELECT TRUNCATE UPDATE

Page 78: Penggunaan Delimiter Di MySQL

Apa itu Join ?

Contents

1. 1 Pendahuluan 2. 2 Merelasikan Table dengan "Join" 3. 3 Penutup

Pendahuluan

Pada bahasa SQL, operasi join atau penggabungan "menyamping" antar table adalah operasi dasar database relasional yang sangat penting. Untuk mendukung perancangan database resional yang baik, berikut adalah penjelasan dan ilustrasi mengenai join ini.

Contoh-contoh di bawah ini mengunakan database PHI-Minimart. Instalasi contoh database ini dapat dilihat pada halaman ini.

Merelasikan Table dengan "Join"

Secara singkat join adalah operasi menghubungkan antar beberapa table sehingga terbentuk satu set data yang baru. Sebagai contoh, saya memiliki hubungan antar table master cabang dan master kota yang tampak pada gambar skema berikut ini.

Gambar : Table "ms_cabang" memiliki relasi dengan "ms_kota" melalui kolom "kode_kota"

Beberapa poin dari skema di atas adalah sebagai berikut :

pada table "ms_cabang" kita dapat melihat informasi "nama cabang" dan "kode kota".

Page 79: Penggunaan Delimiter Di MySQL

kita ingin mencari keterangan "nama kota", dan data tersebut ada di table "ms_kota" (gambar di bawah). Relasi antara kedua table ini perlu dicari karena kita memerlukan informasi akhir gabungan yang diambil dari masing-masing table tersebut. 

Page 80: Penggunaan Delimiter Di MySQL

Perhatikan kedua gambar, nilai-nilai pada table "ms_cabang" dan "ms_kota" ternyata memiliki kaitan atau relasi pada kolom "kode_kota". 

Sebagai contoh, untuk mencari nama kota dari cabang "PHI Mini Market - Lhokseumawe 01" maka kita perlu mengambil nilai kode kota dari cabang tersebut, yaitu "KOTA-001". Setelah itu, dengan data tersebut kita cari data row terkait di table "ms_kota" sehingga kita dapatkan "Lhokseumawe" sebagai nama kotanya.

Page 81: Penggunaan Delimiter Di MySQL

Dengan menggunakan join di SQL maka hasil akhir tampak seperti gambar berikut ini.

Penutup

Join adalah penggabungan table yang dilakukan melalui kolom / key tertentu yang memiliki nilai terkait untuk mendapatkan satu set data dengan informasi lengkap. Lengkap disini artinya kolom data didapatkan dari kolom-kolom hasil join antar table tersebut.

Join diperlukan karena perancangan table pada sistem transaksional kebanyakan di-normalisasi, salah satu alasannya untuk menghindari redundansi. Untuk informasi selengkapnya mengenai normalisasi data bisa dibaca pada halaman situs wikipedia ini.

Dan untuk Anda yang ingin berdiskusi lebih lanjut mengenai konsep lain di database relasional atau bahasa SQL, silahkan bergabung dengan komunitas kami dari informasi di halaman ini.

Page 82: Penggunaan Delimiter Di MySQL