You are on page 1of 78

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. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. END; 27. 28. | 29. ); ) VALUES ( OLD.tgl_transaksi, OLD.kode_cabang, OLD.kode_kasir, OLD.kode_item, OLD.kode_produk, OLD.jumlah_pembelian, SYSDATE(), CURRENT_USER INSERT INTO tr_penjualan_hapus ( tgl_transaksi, kode_cabang, kode_kasir, kode_item, kode_produk, jumlah_pembelian, tgl_perubahan, nama_user

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.

Membuat Trigger di MySQL
Contents 1. 2. 3. 4. 5. 1 Pendahuluan 2 Pembuatan Trigger 3 Referensi "OLD" dan "NEW" 4 Contoh Penggunaan : Trigger After Delete 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 gunakan dalam blok statement BEGIN ... END.

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. Referensi "OLD" dan "NEW" Karena trigger digunakan pada saat terjadi perubahan row data. Sesuai namanya. Untuk ini ada dua alias yang berfungsi untuk hal tersebut yaitu OLD dan NEW. OLD digunakan untuk referensi sebelum perubahan dan NEW untuk referensi sesudah perubahan. maka kita perlu referensi ke row sebelum dan sesudah perubahan. Tahap berikutnya adalah membuat trigger yang akan melakukan populasi data yang dihapus dari "tr_penjualan" ke table "tr_penjualan_hapus". Jika DEFINER dispesifikasikan maka kita memutuskan trigger tersebut dijalankan hanya oleh user tertentu (dalam format penulisan user@host). yaitu tanggal penghapusan (tgl_perubahan) dan user MySQL yang melakukan hal tersebut (nama_user). maka user yang melakukan perubahan (CURRENT_USER) adalah pilihan default. 2. CREATE TABLE `tr_penjualan_hapus` LIKE `tr_penjualan`. Langkah yang akan kita lakukan adalah sebagai berikut : 1. Berikut adalah perintahnya : DELIMITER | . `nama_user` VARCHAR(200) ). ALTER TABLE `tr_penjualan_hapus` ADD ( `tgl_perubahan` DATETIME. Jika tidak dispesifikasikan. Berikut adalah perintahnya : USE phi_minimart. Contoh Penggunaan : Trigger After Delete Berikut adalah contoh penggunaan trigger untuk event setelah penghapusan (AFTER DELETE) pada table "tr_penjualan" .database phi_minimart.

kode_kasir. Jalankan perintah berikut : DELETE FROM tr_penjualan LIMIT 3.CREATE TRIGGER hapus_tr_penjualan AFTER DELETE ON tr_penjualan FOR EACH ROW BEGIN INSERT INTO tr_penjualan_hapus ( tgl_transaksi. END. jumlah_pembelian. | DELIMITER . OLD.tgl_transaksi. 3.kode_item. kode_item. Coba hapus tiga row data dari table "tr_penjualan" dan lihat efeknya di table "tr_penjualan_hapus". OLD.kode_kasir. SYSDATE().kode_cabang. Setelah trigger di atas kita buat. CURRENT_USER ). tgl_perubahan. nama_user ) VALUES ( OLD. kode_cabang. OLD. OLD. SELECT * FROM tr_penjualan_hapus. sekarang saatnya kita melakukan pengujian. kode_produk.kode_produk.jumlah_pembelian. OLD. .

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. Selesai. 4. .

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. pencarian data biasanya akan memakan waktu lama.. terutama jika data sudah dalam skala jumlah yang sangat besar.) [index_type] index_col_name: col_name [(length)] [ASC | DESC] index_type: USING {BTREE | HASH} Contoh Pembuatan Index dan Penggunaannya . 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. Sama seperti daftar isi pada sebuah buku. 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..

m2. m1.kode_produk = m1.kode_cabang dan perhatikan waktu eksekusi dan pengembalian hasilnya.nama_produk. Sebagai gambaran. coba lakukan eksekusi join antara table "tr_penjualan".Table "tr_penjualan" pada database "phi-minimart" memiliki sekitar 400 ribu baris data.nama_cabang FROM tr_penjualan t1 JOIN ms_produk JOIN ms_cabang LIMIT 0. Dan jika kita perhatikan struktur table tersebut. 1000000.kode_produk m2 ON t1.kode_cabang = m2.*. Berikut adalah hasil catatan waktu yang saya dapat dalam 3 kali eksekusi dengan SQLYog : Catatan Waktu Eksekusi Sebelum Index Eksekusi 1 427058 row(s) returned Execution Time : 00:00:00:000 Transfer Time Total Time : 00:00:08:547 : 00:00:08:547 . terdapat banyak foreign key yang jika dilakukan join ke master table akan cukup lambat. m1 ON t1. "ms_produk" dan "ms_cabang" dengan perintah SQL berikut: SELECT t1.

kode_cabang) USING BTREE. yaitu "kode_produk" dan "kode_cabang" denga perintah SQL berikut ini : CREATE INDEX nama_idx_tr_penj1 ON tr_penjualan(kode_produk. Tunggu beberapa saat sampai index tersebut selesai dibuat.Eksekusi 2 427058 row(s) returned Execution Time : 00:00:00:016 Transfer Time Total Time : 00:00:08:547 : 00:00:08:563 Eksekusi 3 427058 row(s) returned Execution Time : 00:00:00:000 Transfer Time Total Time : 00:00:08:469 : 00:00:08:469 Sekarang mari kita lakukan index pada dua kolom join pada table "tr_penjualan" tersebut. .

. Berikut adalah catatan waktu yang saya dapatkan untuk 3 kali eksekusi.. Catatan Waktu Eksekusi Setelah Index Eksekusi 1 427058 row(s) returned Execution Time : 00:00:00:016 Transfer Time Total Time : 00:00:08:297 : 00:00:08:313 Eksekusi 2 427058 row(s) returned Execution Time : 00:00:00:000 Transfer Time : 00:00:08:062 .Sekarang eksekusi kembali perintah "Select." di atas dan lihat hasil catatan waktunya.

nama_produk = 'apel m1. mari kita lihat dampak penggunaan index pada perintah update..jumlah_pembelian = 2 * t1. ms_cabang m2 1 kg' OR . UPDATE tr_penjualan t1." pada contoh di atas hanya memberikan perbedaan beberapa mili second. Setelah itu. kentang.Total Time : 00:00:08:062 Eksekusi 3 427058 row(s) returned Execution Time : 00:00:00:000 Transfer Time Total Time : 00:00:07:766 : 00:00:07:766 Terlihat lebih baik bukan performanya ? Contoh Penggunaan Pada Perintah Update Efek index pada perintah "Select.kode_produk = m1. ms_produk SET t1. coba lakukan perintah update berikut ini dimana kita akan memberikan nilai baru ke kolom "jumlah_pembelian" untuk produk apel.kode_cabang AND ( m1. nangka di semua cabang PHI.kode_produk AND t1.kode_cabang = m2.jumlah_pembelian WHERE t1. Pertama kita hapus kembali index yang sudah kita buat di atas dengan perintah berikut ini : DROP INDEX nama_idx_tr_penj1 ON tr_penjualan.

Catatan Waktu Eksekusi Sebelum Index Eksekusi 1 32360 row(s) affected Execution Time : 00:00:09:079 Transfer Time Total Time : 00:00:00:000 : 00:00:09:079 Eksekusi 2 32360 row(s) affected Execution Time : 00:00:09:062 Transfer Time Total Time : 00:00:00:000 : 00:00:09:062 Eksekusi 3 32360 row(s) affected .m1. Berikut ini adalah 3 kali catatan waktu hasil eksekusi tanpa index. 1 1 kg' OR kg' Catat waktu eksekusi dari perintah tersebut setelah selesai dilakukan.nama_produk = 'kentang m1.nama_produk = 'nangka ) AND m2.nama_cabang LIKE 'PHI%'.

coba buat lagi index untuk kedua kolom sama dengan perintah sebelumnya. Jika sudah. berikut adalah 3 kali hasil pencatatan waktu eksekusi perintah update setelah dilakukan index. Tunggu beberapa saat sampai dengan selesai. coba lakukan kembali perintah update di atas. Terlihat hasil yang jauh lebih baik.Execution Time : 00:00:08:297 Transfer Time Total Time : 00:00:00:000 : 00:00:08:297 Dan sekarang. Apakah catatan waktu menunjukkan hasil yang lebih baik ? Sebagai perbandingan kembali. kode_cabang) USING BTREE. Catatan Waktu Eksekusi Setelah Index Eksekusi 1 32360 row(s) affected Execution Time : 00:00:08:109 Transfer Time Total Time : 00:00:00:000 : 00:00:08:109 Eksekusi 2 . CREATE INDEX nama_idx_tr_penj1 ON tr_penjualan(kode_produk.

32360 row(s) affected Execution Time : 00:00:07:218 Transfer Time Total Time : 00:00:00:000 : 00:00:07:218 Eksekusi 3 32360 row(s) affected Execution Time : 00:00:06:891 Transfer Time Total Time : 00:00:00:000 : 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. Semoga artikel ini bermanfaat. . biasakan gunakan index terutama untuk foreign key yang digunakan untuk join ke table lain dari table Anda.

Stored procedure sangat berguna ketika kita tidak ingin user mengakses table secara langsung. Contoh Penggunaan Berikut adalah contoh pembuatan dan penggunaan stored procedure untuk menghapus data berdasarkan "kode produk" untuk tiga table yaitu table "ms_produk".] routine_body Keterangan :      sp_name : nama stored procedure. Jika tidak dispesifikasikan... "ms_harga_harian". LANGUAGE SQL. 4. 1 Pendahuluan 2 Pembuatan Stored Procedure 3 Contoh Penggunaan 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. Berikut adalah syntax lengkapnya : CREATE [DEFINER = { user | CURRENT_USER }] PROCEDURE sp_name (proc_parameter[..]) [characteristic . characteristic : menjelaskan karakteristik dari stored procedure (COMMENT.. . dan "tr_penjualan".Membuat Stored Procedure di MySQL Contents 1. 3. routine_body : kumpulan perintah pada stored procedure tersebut. seperti misalkan sejumlah row ke table lain dengan filter tertentu. Dengan demikian resiko kebocoran dan kerusakan data dapat lebih diminalisir. dan lain-lain). proc_parameter : parameter input / output dari stored procedure tersebut (opsional). 2. maka user yang melakukan perubahan (CURRENT_USER) adalah pilihan default. atau dengan kata lain membatasi hak akses user dan mencatat operasi yang dilakukan. Pembuatan Stored Procedure Kita dapat membuat trigger dengan perintah CREATE PROCEDURE.. Jika DEFINER dispesifikasikan maka kita memutuskan trigger tersebut dijalankan hanya oleh user tertentu (dalam format penulisan user@host).

dengan satu argumen yaitu kode_produk_param bertipe teks (varchar) dengan perintah berikut : DELIMITER | CREATE PROCEDURE HapusProduk(IN kode_produk_param VAR CHAR(12)) BEGIN DELETE FROM ms_produk WHERE kode_produk = kode_produ k_param. pastikan stored procedure tersebut sudah terbentuk di database kita. Setelah selesai dieksekusi. | DELIMITER .1. Buatlah satu stored procedure dengan nama HapusProduk. DELETE FROM ms_harga_harian WHERE kode_produk = kode _produk_param. 2. . END. DELETE FROM tr_penjualan WHERE kode_produk = kode_pr oduk_param.

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

Sekarang coba panggil stored procedure HapusProduk dengan parameter "PROD0000002" dan tunggu beberapa saat sampai eksekusi selesai. CALL HapusProduk('PROD-0000002'). 3 dan terlihat bahwa sudah tidak terdapat data untuk produk "PROD-0000002" pada ketiga table tersebut.4. 5. . Coba lakukan kembali perintah pada point no.

6. Selesai .

seperti pada gambar di bawah ini.yang memiliki referensi table yang sama.kode_produk = tr_penjualan.Menggabungkan Table Transaksi dengan UNION Pendahuluan Di dalam berbagai kasus praktek di lapangan yang penulis temukan. Perintah Select SQL yang dihasilkan menggunakan konstruksi JOIN kira-kira sebagai berikut : SELECT * FROM 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". yaitu ms_produk. Terlihat ada dua table transaksi . tr_penjualan.tr_penjualan dan target_penjualan . target_penjualan WHERE ms_produk. ada kesalahan SQL umum yang dilakukan jika membaca diagram ERD (Entity Relationship Diagram) pada kasus relasi "many to many" .kode_produk .

NULL AS nilai_target_penjualan .kode_produk.kode_produk Dan jika menggunakan agregasi function seperti SUM akan seperti ini : SELECT ms_produk.kode_produk atau SELECT * FROM ms_produk JOIN tr_penjualan ON ms_produk. SUM(nilai_target_penjualan) AS nilaitarget FROM ms_produk JOIN tr_penjualan ON ms_produk.kode_produk GROUP BY ms_produk.kode_produk.kode_produk = target_penjualan..] Untuk selection..kode_produk JOIN target_penjualan ON ms_produk.AND ms_produk.kode_produk = tr_penjualan. Solusi : Penggunaan UNION Agar konsisten maka table-table ini perlu digabung dengan mekanisme UNION.. Dan karena hubungan antar kedua table transaksi adalah many to many Ini akan mengakibatkan "distorsi" nilai.kode_produk Konstruksi ini jelas salah karena JOIN akan menghasilkan kombinasi perkalian dari table-table yang terlibat.kode_produk = tr_penjualan. jumlah kolom dan tipe data dari table-table yang digabung harus sama. UNION [ALL | DISTINCT] SELECT . SUM(jumlah_pembelian) AS jumlah.kode_produk = target_penjualan.. Kecuali jika masing-masing JOIN digrouping terlebih dahulu dengan level yang sama dan menghasilkan unique row untuk tiap grouping.. [UNION [ALL | DISTINCT] SELECT . tr_penjualan.. Syntax : SELECT .kode_produk JOIN target_penjualan ON ms_produk. Contoh : SELECT tr_penjualan.jumlah_pembelian.kode_produk = target_penjualan.

nama_produk.jumlah_pembelian) AS jumlah.kode_produk dan untuk agregasi SUM akan seperti ini : SELECT t1. ms_produk.kode_produk = tr_penjualan. SUM(t1.jumlah_pembelian.kode_produk.kode_produk. .kode_produk = target_penjualan. ms_produk.kode_produk = target_penjualan. tr_penjualan ms_produk. FROM WHERE ms_produk.kode_produk NULL AS jumlah_pembelian. tr_penjualan ms_produk. nilai_target_penjualan FROM ms_produk.kode_produk UNION SELECT target_penjualan.kode_produk.FROM WHERE UNION SELECT target_penjualan. tr_penjualan. NULL AS jumlah_pembelian. NULL AS nilai_target_penjualan FROM ms_produk. target_penjualan FROM WHERE WHERE ms_produk.nilai_target_penjualan) AS target (SELECT tr_penjualan.kode_pro duk) AS t1 Hasil UNION tanpa GROUP BY akan tampak seperti pada gambar di bawah ini.nama_produk. t1. nilai_target_penjualan ms_produk. target_penjualan ms_produk. SUM(t1.kode_produk.nama_produk.kode_produk = tr_penjualan.

~~~ Selesai ~~~ .

nama_cabang. m1.harga_berlaku_cabang FROM ms_harga_harian m1 JOIN ms_produk m2 ON m1.kode_produk = m2.kode_cabang = m3. "ms_cabang" dan "ms_produk" dari database phi-minimart dengan nama "view_harga". 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.kode_produk.views WHERE table_name = 'view_ harga'. m1.kode_cabang. Perintahnya adalah sebagai berikut : CREATE VIEW view_harga AS SELECT m1. sehingga bisa digunakan setiap saat untuk melihat data tanpa menuliskan ulang query tersebut.nama_produk.Membuat View di MySQL Contents 1. Jika tidak maka perintah CREATE VIEW akan menghasilkan error jika nama view yang ingin dibuat sudah ada sebelumnya. Eksekusi perintah berikut untuk memastikan view telah dibuat : SELECT * FROM information_schema. . Contoh Penggunaan Kita akan membuat view dari relasi antara table "ms_harga_harian". 1 Pendahuluan 2.tgl_berlaku. m3.kode_produk JOIN ms_cabang m3 ON m1. 2 Contoh Penggunaan Pendahuluan View adalah perintah query yang disimpan pada database dengan suatu nama tertentu. m2. m1.kode_cabang.

. query view tersebut untuk melihat hasilnya : SELECT * FROM view_harga.Terakhir.

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". harus bertipe numerik (TINYINT. Otomatis disini artinya pada saat kita memasukkan data baik melalui stement INSERT maupun melalui mekanisme data access lainnya. 3. 1 Pendahuluan 2 Definisi Auto Increment Field 3 Membuat Table dengan Auto Increment Field 4 Menambahkan Auto Increment Field pada suatu Table 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. deskripsi VARCHAR(200) ). field tersebut tidak perlu dimasukkan nilainya atau cukup diberi nilai NULL.Menggunakan Field Auto Increment di MySQL Pendahuluan Contents 1. berikut adalah beberapa aturannya :     field tersebut harus didefinisikan sebagai primary key. maka MySQL akan menentukan sendiri nilai apa yang akan diberikan sebagai akibat penambahan baris data tersebut. dan lain-lain). tidak bisa lebih. hanya boleh ada satu field auto increment pada suatu table. 4. CREATE TABLE table_ai ( kode_transaksi INT NULL AUTO_INCREMENT KEY. Definisi Auto Increment Field Untuk menambahkan atau merubah suatu field sebagai auto increment. Sekarang mari kita menambahkan beberapa data pada table tersebut dan setelah itu kita . menambahkan keyword AUTO_INCREMENT pada definisi field. 2. FLOAT. DECIMAL. 5. INT. Sebagai contoh.

Hasil eksekusinya terlihat pada gambar berikut di bawah ini. SELECT * FROM table_ai. Berikut adalah isi data pada table tr_penjualan setelah eksekusi perintah tersebut di atas. . deskripsi) VALUES (N ULL. SELECT * FROM table_ai.membaca hasilnya dengan perintah berikut ini. maka pastikan tidak ada definisi primary key sebelumnya pada table tersebut atau penambahan field akan gagal. Dan berikut adalah hasil eksekusi dari perintah tersebut. INSERT INTO table_ai(deskripsi) VALUES ('deskripsi 1'). INSERT INTO table_ai(deskripsi) VALUES ('deskripsi 2'). Berikut adalah contoh statement SQL untuk menambahkan field increment "kode_transaksi" pada table "tr_penjualan" dari database phi_minimart. Sekarang mari kita coba eksekusi lagi perintah berikut ini.'deskripsi 3'). INSERT INTO table_ai(kode_transaksi. Menambahkan Auto Increment Field pada suatu Table Jika kita ingin menambahkan field auto increment pada suatu table yang sudah ada. auto ALTER TABLE tr_penjualan ADD kode_transaksi MEDIUMINT NOT NULL A UTO_INCREMENT KEY.

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 . Pada artikel ini telah ditunjukkan bagaimana kita mendefinisikan field tersebut dalam tiga skenario. melakukan konversi field yang sudah ada menjadi auto increment. yaitu :    pada saat pembuatan table baru. Sebagai contoh. sebagai field tambahan pada table yang sudah ada. ALTER TABLE suppliers MODIFY COLUMN supplier_id INT NOT NULL AUT O_INCREMENT KEY. Penutup Auto increment field merupakan suatu tipe data numerik yang mengisi nilainya secara otomatis secara incremental atau bertambah terus. 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.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.

digunakan untuk tujuan tersebut. . semoga bisa bermanfaat banyak bagi Anda sebagai pengunjung situs ini. Demikian artikel mengenai auto increment field ini kami buat.

. Penamaan variable pada sql memiliki prefix @. artinya setiap nama variable diawali dengan simbol @ diikuti nama variable. syntax dan perbedaannya adalah sebagai berikut :  SET digunakan untuk inisialisasi variable dengan satu nilai pada suatu waktu dengan penggunaan operator assignment " = " atau " := ". @namavar2 = nilai2 [. dari kode transaksi yang sudah kita ketahui tersebut kita masukkan data ke suatu audit table. 4. @kode_transaksi. kemudian kita hapus data transaksi dari header maupun detilnya. 1 Variable dan Penamaannya di MySQL 2 Inisialisasi Variable 3 Urutan Pemberian Nilai Variable pada SELECT 4 Penutup Variable dan Penamaannya di MySQL Pada berbagai kondisi. dan lain-lain.Penggunaan Variable di MySQL Contents 1. @namavar = nilai3] ] . Solusinya adalah dengan menggunakan variable yang berfungsi sebagai "pengingat" nilai tersebut dan dapat direferensikan dengan suatu nama di statement-statement berikutnya yang independen. 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. Sebagai contoh :     kita mengambil suatu kode transaksi yang kita anggap tidak valid. 3. atau . Tetapi ini tentunya hanya dalam satu sesi koneksi yang sama. Syntax : SET @namavar1 = nilai [. kita memiliki beberapa perintah atau statement SQL dan kita ingin menyimpan hasil eksekusi dari perintah yang satu ke perintah selanjutnya. Inisialisasi Variable Inisialisasi variable pada MySQL dapat dilakukan dengan penggunaan perintah SET dan dalam konstruksi perintah lainnya seperti SELECT. @nilai_awal. atau . Sebagai contoh : @var1. 2.

SET @nilai1 = 10. Contoh : o o o  SET @kolom_pertama = 'kode_produk'. @nam avar := nilai3] ] . @kolom := "nilai_ penjualan". @nilai. SELECT @nilai. dan seterusnya Urutan Pemberian Nilai Variable pada SELECT Jika Anda sudah jelas dengan pemberian nilai variable. Operator " = " pada statement ini dianggap sebagai operator pembanding nilai (value omparison). @namavar2 = nilai2 [. Contoh : o SET @nilai := 10. -Hasilnya 10. Maka operasi variable di depan akan didahulukan dan memberi efek kepada variable di belakangnya. @namavar := nilai3] ] . SELECT @nilai1 from (SELECT @nilai1 := 20) T. Contoh : o o o SELECT @nilai1 := 10. @nilai := 20. dan seterusnya SELECT digunakan untuk inisialisasi variable dengan operator assignment " := " dan mengisi variable dengan nilai lain sesuai iterasi hasil row dari eksekusi query.SET @namavar1 := nilai [. 20 o SET @nilai := 10. -Hasilnya 10. mari kita lihat proses urutan proses pemberian nilai ini pada SELECT statement :  Jika terdapat daftar variable dengan pemisah koma. @nilai2 := 20. @namavar2 := nilai2 [. 10  Jika operasi variable terdapat subquery maka operasi tersebut akan terjadi terlebih dahulu dibandingkan query yang memanggil subquery tersebut. @kolom = "nilai_penjua lan". SELECT @nilai := 10. Syntax : SELECT @namavar1 := nilai [. @nilai2 = 20. .

sql. Script yang terkait dengan artikel ini adalah penggunaan_variable. Semoga bisa berguna buat kita semua dalam penggunaannya sehari-hari. SELECT @nilai from (select @nilai := 10) as T.Hasilnya 10 Penutup Demikian artikel singkat mengenai penggunaan variable ini kami sajikan.Contoh : o SET @nilai := 20. Dan untuk Anda yang ingin mengambil script SQL dari contoh-contoh pada artikel ini silahkan mengunjungi halaman Daftar Script SQL. Jika Anda ingin berdiskusi lebih lanjut silahkan bergabung ke user group belajar sql. -. .

Start_Date. T2.Start_Date FROM exchange_rate e1. e1. (SELECT @nomorbaris1 := 1) T ) T1 JOIN ( SELECT @nomorbaris2:=@nomorbaris2+1 AS nomorbaris. (SELECT @nomorbaris := 0) T. T1.Start_Date AS End_Date.Rate FROM ( SELECT Currency1. kenapa Spreadsheet dan bukan query SQL ?" Namun untuk penomoran baris di MySQL kita memiliki solusi dengan trik penggunaan variable. @nomorbaris1:=@nomorbaris1+1 AS nomorbaris. e1. Kedua sifat di atas sangat penting untuk menghasilkan dataset yang bersifat analisis. e1. Currency2.Currency2.Start_Date FROM exchange_rate e1. dan. dan penggunaan lebih lanjut Penggunaan pada Subquery SELECT T1. kita dapat mengacu ke baris dan kolom lain dari posisi saat ini. T1... Rate FROM exchange_rate e1. Masih bingung ? Bisa baca artikel saya yang membahas hal ini : "Analisis.Start_Date.Currency1. T1. (SELECT @nomorbaris2 := 0) T ) T2 . misalkan 3 baris di atas dan 2 kolom ke kanan.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. Berikut adalah contoh penggunaannya : Penomoran Baris dengan Variable SELECT @nomorbaris:=@nomorbaris+1 AS nomorbaris.

. Dan untuk Anda yang ingin mengambil table yang sama dengan contoh di atas.nomorbaris = T2.sql. dapat mengambilnya di halaman "Daftar Download Script SQL" dengan nama exchange_rate. buat Anda yang mungkin masih baru dengan penggunaan variable di MySQL dapat melihat artikel saya disini.ON T1.nomorbaris Gampang bukan ? Nah.

.

@kode_transaksi.Penggunaan Variable di MySQL Contents 1. syntax dan perbedaannya adalah sebagai berikut :  SET digunakan untuk inisialisasi variable dengan satu nilai pada suatu waktu dengan penggunaan operator assignment " = " atau " := ".. atau . 1 Variable dan Penamaannya di MySQL 2 Inisialisasi Variable 3 Urutan Pemberian Nilai Variable pada SELECT 4 Penutup Variable dan Penamaannya di MySQL Pada berbagai kondisi. 3. 2. 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. 4. Tetapi ini tentunya hanya dalam satu sesi koneksi yang sama. @namavar2 = nilai2 [. @namavar = nilai3] ] . Inisialisasi Variable Inisialisasi variable pada MySQL dapat dilakukan dengan penggunaan perintah SET dan dalam konstruksi perintah lainnya seperti SELECT. dan lain-lain. artinya setiap nama variable diawali dengan simbol @ diikuti nama variable. 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. atau . Syntax : SET @namavar1 = nilai [. Solusinya adalah dengan menggunakan variable yang berfungsi sebagai "pengingat" nilai tersebut dan dapat direferensikan dengan suatu nama di statement-statement berikutnya yang independen. @nilai_awal. Sebagai contoh : @var1. kita memiliki beberapa perintah atau statement SQL dan kita ingin menyimpan hasil eksekusi dari perintah yang satu ke perintah selanjutnya. Penamaan variable pada sql memiliki prefix @.

20 o SET @nilai := 10. Contoh : o SET @nilai := 10. mari kita lihat proses urutan proses pemberian nilai ini pada SELECT statement :  Jika terdapat daftar variable dengan pemisah koma. dan seterusnya SELECT digunakan untuk inisialisasi variable dengan operator assignment " := " dan mengisi variable dengan nilai lain sesuai iterasi hasil row dari eksekusi query. SELECT @nilai. @kolom := "nilai_ penjualan". -Hasilnya 10. SET @nilai1 = 10. Contoh : o o o SELECT @nilai1 := 10. SELECT @nilai := 10.SET @namavar1 := nilai [. Contoh : o o o  SET @kolom_pertama = 'kode_produk'. dan seterusnya Urutan Pemberian Nilai Variable pada SELECT Jika Anda sudah jelas dengan pemberian nilai variable. @nam avar := nilai3] ] . @nilai. @kolom = "nilai_penjua lan". @namavar2 := nilai2 [. . Maka operasi variable di depan akan didahulukan dan memberi efek kepada variable di belakangnya. Syntax : SELECT @namavar1 := nilai [. SELECT @nilai1 from (SELECT @nilai1 := 20) T. @nilai2 := 20. Operator " = " pada statement ini dianggap sebagai operator pembanding nilai (value omparison). @nilai := 20. @nilai2 = 20. @namavar := nilai3] ] . -Hasilnya 10. @namavar2 = nilai2 [. 10  Jika operasi variable terdapat subquery maka operasi tersebut akan terjadi terlebih dahulu dibandingkan query yang memanggil subquery tersebut.

Hasilnya 10 Penutup Demikian artikel singkat mengenai penggunaan variable ini kami sajikan. Script yang terkait dengan artikel ini adalah penggunaan_variable. 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.Contoh : o SET @nilai := 20.sql. SELECT @nilai from (select @nilai := 10) as T.

2 CROSS JOIN 3. Tiga table yang akan kita gunakan dari database tersebut adalah ms_cabang. JIka Anda belum melakukan hal tersebut. 4 STRAIGHT_JOIN 5.0 Contents 1. 3 OUTER JOIN 4. 1. ms_kota dan ms_propinsi dengan relasi terlihat seperti pada gambar berikut.Tipe / Jenis JOIN TABLE pada MySQL 5.0.1 INNER JOIN Antar Table dengan Kondisi ("ms_cabang" dan "ms_kota" dengan key "kode_kota") 2.3 Implisit INNER JOIN dengan Koma 2. 1.2 INNER JOIN Antar Table Tanpa Kondisi ("ms_cabang" dengan "ms_kota") 3. UPDATE atau DELETE statement. biasanya berupa klausa pada bagian referensi table pada SELECT. PHI-Minimart full atau PHI-Minimart master table saja. 1 INNER JOIN 1. 1. . silahkan lakukan instalasi dengan dua pilihan. maka artikel berikut akan menjelaskan dan menunjukkan contoh penggunaan variasi join pada MySQL versi 5. Tipe-tipe JOIN yang akan dibahas adalah :     INNER JOIN CROSS JOIN OUTER JOIN STRAIGHT JOIN Semua contoh pada artikel ini menggunakan database PHI-Minimart. 5 Penutup Jika Anda telah memahami fungsi join pada database relasional untuk menghubungkan berbagai table. JOIN sendiri merupakan konstruksi bahasa yang tidak bisa berdiri sendiri.

Kalau tidak terdapat kondisi key terkait antar table. INNER JOIN Antar Table dengan Kondisi ("ms_cabang" dan "ms_kota" dengan key "kode_kota") SELECT * FROM ms_cabang ms_kota. Dengan panduan gambar. Jika tidak digunakan maka konstruksi JOIN tanpa keyword lain dianggap sebagai INNER JOIN. Kondisi ini menggunakan keyword ON. maka semua row dari kedua table dikombinasikan. .jika ada. 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. dan jika tidak maka row tersebut tidak akan muncul. 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.kode_kota INNER JOIN ms_kota ON ms_cabang. 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".Keterangan : Relasi antar table ms_cabang. ini akan dicari referensinya ke table ms_kota untuk nilai yang sama dan kita dapatkan row dengan nilai nama_kota "Lhokseumawe" adalah padanannya. 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 .kode_kota = Hasil terlihat seperti gambar berikut ini.

Jadi INNER JOIN dengan kondisi mengharuskan row dari tiap table memiliki nilai yang sama untuk column referensinya (dalam hal ini kode_kota). demikian seterusnya. Setelah itu coba jalankan kembali perintah JOIN di atas. .  untuk row kedua kita memiliki kode_kota dengan nilai "KOTA-083". Sekarang mari kita coba hapus referensi untuk "Lhokseumawe" dari table ms_kota : DELETE FROM ms_kota WHERE nama_kota = 'Lhokseumawe'. ini akan dicari referensinya ke table ms_kota untuk nilai yang sama dan kita dapatkan row dengan nilai nama_kota "Baubau" adalah padanannya. Anda akan mendapatkan hasil JOIN tanpa referensi row "Lhokseumawe".

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.

nama_kota.kode_kota = ms_kota. ms_propinsi.kode_kota INNER JOIN ms_propinsi ON ms_kota.nama_propinsi FROM ms_cabang INNER JOIN ms_kota ON ms_cabang.kode_propinsi . "ms_kota" dan "ms_propinsi" SELECT ms_cabang.INNER JOIN antar table "ms_cabang". ms_kota.kode_propinsi = ms_propinsi.nama_cabang.

).nama_kota . ms_kota. Implisit INNER JOIN dengan Koma INNER JOIN antar table secara implisit dapat menggunakan daftar table yang dipisah dengan tanda koma (.Hasil eksekusi terlihat seperti gambar berikut. SELECT ms_cabang.nama_propinsi FROM ms_cabang . ms_propinsi. Pengkondisian menggunakan klausa where.nama_cabang. Dengan penggabungan ketiga table ini sekarang kita dapatkan setiap cabang memiliki informasi nama kota dan nama propinsi dimana cabang tersebut berada.

kode_kota 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.kode_kota = ms_kota. ms_cabang CROSS JOIN ms_kota CROSS JOIN ms_propinsi ON ms_kota.nama_propinsi FROM ms_cabang. ms_kota . ms_propinsi WHERE ms_cabang.kode_kota AND ms_kota.kode_kota = ms_kota.kode_propinsi CROSS JOIN CROSS JOIN identik dengan INNER JOIN pada MySQL 5. Contoh Penggunaan : SELECT ms_kota.nama_cabang.kode_propinsi = ms_propinsi. ms_propinsi..0.nama_kota. Pembahasannya sama dengan INNER JOIN sehingga tidak diulangi lagi disini. Untuk menggunakan tipe OUTER JOIN maka perlu memperhatikan beberapa hal berikut : .kode_propinsi ON ms_cabang.kode_propinsi = ms_propinsi.

Contoh Penggunaan :  Hapus data master "Lhokseumawe" dari table ms_kota DELETE FROM ms_kota WHERE nama_kota = 'Lhokseumawe'  Lakukan join seperti perintah berikut ini. 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.kode_kota .nama_kota ms_cabang ms_kota OUTER JOIN ON ms_cabang.kode_kota = ms_kota. ms_kota. ini ditentukan dengan cara menspesifikasikan kedudukan table sumber apakah di kiri (LEFT) atau di kanan (RIGHT).*. SELECT FROM LEFT ms_cabang. dan perhatikan hasilnya seperti pada gambar.  perlu dibedakan antara table sumber dan table referensi.

kode_propinsi)  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. VALUES ('KOTA-003'. 'Lhokseumawe'. STRAIGHT_JOIN . 'P33'). nama_kota. Tambahkan kembali data "Lhokseumawe" ke table ms_kota INSERT INTO ms_kota(kode_kota.

nama_kota FROM ms_cabang STRAIGHT_JOIN ms_kota ON ms_cabang. Contoh Penggunaan : SELECT ms_cabang.kode_kota Penutup . ms_kota.kode_kota = ms_kota.*.STRAIGHT_JOIN merupakan pengganti keyword JOIN pada MySQL yang digunakan untuk "memaksa" proses join table dari kiri (LEFT) ke kanan (RIGHT).

unit YEAR untuk menunjukkan periode TAHUN. 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. maka query-nya akan terlihat sebagai berikut SELECT '2011-01-15' + INTERVAL 3 WEEK. 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 t r_penjualan atau SELECT tgl_transaksi + INTERVAL '12' YEAR_MONTH FROM tr_penjualan Daftar Unit Interval Yang Bisa Digunakan Berikut adalah daftar unit dan format penulisan angka yang bisa digunakan : unit value MICROSECOND SECOND MINUTE expression format MICROSECONDS SECONDS MINUTES . Syntax yang digunakan : INTERVAL expression unit_value Contoh Penggunaan 1 : Kita ingin melihat hasil perhitungan tanggal 3 minggu dari 15 Januari 2011.INTERVAL dan Unit INTERVAL di MySQL INTERVAL adalah keyword yang digunakan di MySQL untuk mewakili suatu periode waktu. Sebagai contoh. INTERVAL harus dispesifikasikan lagi dengan unit waktu untuk memperjelas periode waktu yang dimaksud.

MICROSECONDS' 'DAYS HOURS:MINUTES:SECONDS' 'DAYS HOURS:MINUTES' 'DAYS HOURS' 'YEARS-MONTHS' Sumber Referensi : .HOUR DAY WEEK MONTH QUARTER YEAR SECOND_MICROSECOND MINUTE_MICROSECOND MINUTE_SECOND HOUR_MICROSECOND HOUR_SECOND HOUR_MINUTE DAY_MICROSECOND DAY_SECOND DAY_MINUTE DAY_HOUR YEAR_MONTH HOURS DAYS WEEKS MONTHS QUARTERS YEARS 'SECONDS.MICROSECONDS' 'MINUTES:SECONDS.MICROSECONDS' 'MINUTES:SECONDS' 'HOURS:MINUTES:SECONDS.MICROSECONDS' 'HOURS:MINUTES:SECONDS' 'HOURS:MINUTES' 'DAYS HOURS:MINUTES:SECONDS.

Menggunakan Operator Plus dan Minus Contoh penggunaannya operator plus minus ( + / .) adalah sebagai berikut : SELECT '2010-01-01 00:00:00' + INTERVAL 1 DAY. digunakan untuk mengurangi interval waktu pada tanggal tertentu. 2. digunakan untuk menambahkan jumlah hari atau interval waktu pada tanggal tertentu.INTERVAL '1-3' YEAR_MONTH. 8. digunakan untuk menambahkan jumlah hari atau interval waktu pada tanggal tertentu. -. menambahkan jumlah bulan pada periode tertentu. 3. Periode tersebut dalam format YYMM atau YYYYMM. o SUBDATE. 2. Bagian berikut di bawah menunjukkan contoh-contoh penggunaan dari operator dan fungsi tersebut di atas. 9. -Mengurangi 30 menit SELECT '2010-01-01 00:00:00' . o SUBTIME.enambahkan dan Mengurangi Waktu di MySQL Contents 1. o PERIOD_ADD. yaitu : 1. 7. digunakan untuk mengurangi dari dua ekspresi waktu (time atau datetime).Menambahkan 1 hari SELECT '2010-01-01 00:00:00' . 6. Menggunakan operator plus (+) dan minus (-) diikuti keyword INTERVAL dan unit dari Interval. Menggunakan fungsi-fungsi berikut : o DATE_ADD. o DATE_SUB.INTERVAL '30' MINUTE. o ADDDATE. -Mengurangi 1 tahun dan 3 bulan . 5. 1 Pendahuluan 2 Menggunakan Operator Plus dan Minus 3 Penggunaan DATE_ADD 4 Penggunaan DATE_SUB 5 Penggunaan ADDDATE 6 Penggunaan SUBDATE 7 Penggunaan SUBTIME 8 Penggunaan PERIOD_ADD 9 Sumber Referensi Pendahuluan Ada beberapa cara untuk menambahkan tanggal dan jam tertentu di MySQL. digunakan untuk mengurangi jumlah hari atau interval waktu pada tanggal tertentu. 4.

INTERVAL '1-3' YEAR_MONTH. -. -menambahkan 3 minute SELECT DATE_ADD('2010-01-01 00:00:00'. INTERVAL '22' YEAR_MONTH). INTERVAL expr unit) Contoh : SELECT DATE_SUB('2010-01-01'.Menambahkan interval 3 tahun pada field tgl_transaksi dari database PHI-Minimart SELECT tgl_transaksi + INTERVAL '3' YEAR from tr_penjualan. -menambahkan 2 tahun 6 bulan -. INTERVAL '2-6' YEAR_MONTH). -Menambahkan 2 tahun dan 6 bulan SELECT '2010-01-01' . -.Mengurangi 12 jam pada field tgl_transaksi pada table tr_penjualan di database PHI-Minimart SELECT DATE_SUB(tgl_transaksi. . silahkan klik halaman wiki pada link ini. Penggunaan DATE_ADD Syntax : DATE_ADD(date. Untuk rincian mengenai INTERVAL. -mengurangi 3 minute SELECT DATE_SUB('2010-01-01 00:00:00'. INTERVAL expr unit) Contoh : SELECT DATE_ADD('2010-01-01'. INTERVAL 12 HOUR) FROM tr_penjualan. -mengurangi 2 tahun 2 bulan -. INTERVAL 3 MINUTE). INTERVAL 12 HOUR) FROM tr_penjual an. Penggunaan DATE_SUB Syntax : DATE_SUB(date.SELECT '2010-01-01' + INTERVAL '2' MONTH.Mengurangi 1 tahun dan 3 bulan -.Menambahkan 2 bulan SELECT '2010-01-01' + INTERVAL '2-6' YEAR_MONTH.Menambahkan 12 jam pada field tgl_transaksi pada table tr_penjualan di database PHI-Minimart SELECT DATE_ADD(tgl_transaksi. INTERVAL 3 MINUTE).

yaitu : ADDDATE(date.mengurangi 2 tahun 2 bulan SELECT SUBDATE('2010-01-01 00:00:00'. INTERVAL 3 MINUTE).Menambahkan 12 jam pada field tgl_transaksi pada table tr_penjualan di database PHI-Minimart SELECT ADDDATE(tgl_transaksi. 3).mengurangi 3 hari -. -. INTERVAL expr unit) atau ADDDATE(expr. days) Contoh : SELECT SUBDATE('2010-01-01'. Penggunaan SUBDATE Syntax : SUBDATE(date. INTERVAL 12 HOUR) FROM tr_penjualan. INTERVAL '2-2' YEAR_MONTH). INTERVAL 12 HOUR) FROM tr_penjuala n. 7) FROM tr_penjualan.Penggunaan ADDDATE Ada 2 jenis syntax yang berlaku untuk fungsi ADDDATE ini.menambahkan 2 tahun 2 bulan SELECT ADDDATE('2010-01-01 00:00:00'. -.Mengurangi 12 jam pada field tgl_transaksi pada table tr_penjualan di database PHI-Minimart SELECT SUBDATE(tgl_transaksi. -menambahkan 3 hari -. INTERVAL expr unit) atau SUBDATE(expr. days) Contoh : SELECT ADDDATE('2010-01-01'. 3). INTERVAL 3 MINUTE). -. -menambahkan 3 minute SELECT ADDDATE('2010-01-01 00:00:00'.Menambahkan 7 hari pada field tgl_transaksi pada table tr_penjualan di database PHI-Minimart SELECT ADDDATE(tgl_transaksi. -. . -mengurangi 3 minute SELECT SUBDATE('2010-01-01 00:00:00'. INTERVAL '22' YEAR_MONTH).

3).mengurangi 1 hari. months) Keterangan :  year_month_period adalah dalam format YYMM atau YYYYMM.-. -mengurangi 12 jam SELECT SUBTIME('2010-01-01 12:00:00'.Mengurangi 7 hari pada field tgl_transaksi pada table tr_penjualan di database PHI-Minimart SELECT SUBDATE(tgl_transaksi. '1 1:1'). -. '1:0:0. Contoh : SELECT PERIOD_ADD('201001'.-3).mengurangi 1 jam SELECT SUBTIME('2010-01-01 12:00:00'. -Mengurangi 3 bulan pada Januari 2010 Sumber Referensi . -mengurangi 1 detik SELECT SUBTIME('2010-01-01 12:00:00'.3).mengurangi 1 jam dan 1 menit SELECT SUBTIME('2010-01-01 12:00:00'. '1:1'). ekspresi_waktu) Contoh : SELECT SUBTIME('2010-01-01 00:00:00'. '11:00:00'). Penggunaan SUBTIME Syntax : SUBTIME(ekspresi_tanggal_waktu. 7) FROM tr_penjualan. 1 jam dan 1 menit Penggunaan PERIOD_ADD Syntax : PERIOD_ADD(year_month_period. -. -. -Menambahkan 3 bulan pada Januari 2010 SELECT PERIOD_ADD('1001'. -.Menambahkan 3 bulan pada Januari 2010 SELECT PERIOD_ADD('201001'. '1').000000').

dan berikut contoh eksekusi pada SQLYog.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(). Format Tanggal Selain keluaran standar seperti di atas. tentunya dalam banyak kesempatan kita ingin .

%e %Y"). Hasil Eksekusi October. Dan berikut contoh eksekusi pada SQLYog. %d %Y"). %e %Y %H:%i:%s"). "%M. 6 2010 October. Contoh Penggunaan: SQL Select date_format(curdate(). Sumber Referensi . "%M. 6 2010. Select date_format(curdate(). 06 2010 October.format tanggal itu lebih informatif seperti misalkan October. Untuk itu kita gunakan fungsi tambahan. yaitu date_format(). Select date_format(now(). 6 2010 18:55:55 Untuk daftar selengkapnya dari format ini bisa dilihat pada halaman ini."%M.

) Contoh Penggunaan CONCAT 1. Function-function yang digunakan untuk menggabungkan teks di MySQL adalah concat dan concat_ws. 1 Pendahuluan 2 CONCAT dan CONCAT_WS 3 Contoh Penggunaan CONCAT 4 Contoh Penggunaan CONCAT_WS Pendahuluan Walau kelihatannya sepele. Menggabungkan kata "Kampung". "Rambutan"). CONCAT(teks1. CONCAT_WS : adalah fungsi yang digunakan untuk menggabungkan satu atau lebih teks dengan tambahan pemisah (separator) antar teks yang digabungkan. Hal ini disebabkan karena MySQL harus menggunakan function sedangkan pada beberapa produk database lain cukup menggunakan operator plus (+) atau ampersand (&). CONCAT : adalah fungsi yang digunakan untuk menggabungkan satu atau lebih teks yang diberikan.Menggabungkan Teks di MySQL Contents 1. 2. 3. Berikut adalah penjelasan kedua function tersebut dan contoh penggunaannya. spasi dan "Rambutan". . SELECT CONCAT("Kampung"..) 2.. CONCAT(pemisah. .. 4. CONCAT dan CONCAT_WS 1. teks2. .. teks1. teks2. penggabungan teks atau string di MySQL sering menimbulkan kebingungan. " ".

Menggabungkan kata "Produk : " dan field "nama_produk" dari table "ms_produk". nama_produk) FROM ms_produk. Contoh Penggunaan CONCAT_WS .2. SELECT CONCAT("Produk : ".

". nama_produk) FROM ms_produk . Menggabungkan kata "Kampung" dan "Rambutan" dengan pemisah "-". SELECT CONCAT_WS("-". ". "Kampung". Menggabungkan field "kode_produk" dan "nama_produk" dengan pemisah ". "Rambutan") 2. SELECT CONCAT_WS(".1. kode_produk.

.

']'. . Maka kita bisa gunakan penggunaan fungsi REPLACE untuk mengganti tanda tersebut dengan teks kosong : REPLACE(Nama_Karyawan. UPDATE ms_karyawan SET Nama_Karyawan = REPLACE(Nama_Karyawan. ']'. '') from ms_karyawan.Mengganti Teks dengan REPLACE Fungsi REPLACE digunakan di dalam MySQL untuk mengganti teks (satu atau kumpulan karakter) tertentu dengan teks lain. semoga artikel mengenai fungsi REPLACE ini dapat membantu. 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. teks_yang_dicari. Syntax : REPLACE( teks_yang_akan_diganti. yaitu tanda penutup kurung sikur "]" pada tiap akhiran. '') dan konstruksi lengkapnya dengan konteks select dan update : SELECT REPLACE(Nama_Karyawan. '') Hasil Eksekusi : Nama_Karyawan ============ Bintang Maven Eria Setiawan Kristina Damai Demikian. ']'.

memiliki jumlah perulangan dari suatu teks. Operator Regular Expression MySQL menggunakan 3 operator untuk REGEX ini : 1.Menggunakan Regular Expression (REGEX) Pada MySQL Contents 1. Pada artikel ini tidak akan dibahas mengenai REGEX itu sendiri. 3. 2 Operator Regular Expression 3. Contoh misalkan mencari teks berawalan karakter tertentu. NOT REGEXP : negasi dari REGEXP. nama_produk FROM ms_produk WHERE nama_ . REGEXP : melakukan pencocokan pola (pattern matching) menggunakan Regular Expresssion. 1 Pendahuluan 2. SELECT kode_produk. 3 Contoh Penggunaan (Menggunakan database PHI-Minimart) Pendahuluan Regular Expression (REGEX) adalah konstruksi bahasa untuk mencocokkan teks berdasarkan pola tertentu. REGEX juga sangat manjur (powerful) terutama untuk proses penguraian kata (text parsing). Mencari nama produk yang mengandung kata "in". Selain itu. 2. Syntax : expression [NOT] REGEXP expression atau expression [NOT] RLIKE expression Contoh Penggunaan (Menggunakan database PHI-Minimart) Berikut adalah contoh penggunaan operator regular expression dari yang sederhana sampai dengan yang kompleks : 1. dan lain sebagainya. Untuk informasi mengenai REGEX sendiri dapat dilihat pada halaman ini. terutama untuk kasus-kasus kompleks. RLIKE : sama dengan REGEXP. tapi bagaimana kita menggunakannya pada statement MySQL kita.

2.produk REGEXP 'in'. SELECT kode_produk. . Mencari nama produk yang memiliki awalan kata "kacang". nama_produk FROM ms_produk WHERE nama_p roduk REGEXP '^kacang'.

Mencari nama produk yang tidak memiliki kata "kacang". .3. SELECT kode_produk. nama_produk FROM ms_produk WHERE nama_p roduk NOT RLIKE "kacang".

SELECT kode_produk.4. . Mencari nama produk yang hanya memiliki jumlah 4 kata. nama_produk FROM ms_produk WHERE TRIM(nama_produk) RLIKE "^([[:alnum:]]+[[:space:]]+) {3}[[:alnum:]]+$".

Menghitung Panjang Text / String Untuk menghitung panjang string / text di MySQL kita dapat menggunakan fungsi length.10. length(kode_produk) AS panjang FROM ms_produk LIMIT 0.hasil 15 SELECT kode_produk. Contoh Select length('PHI-Integration'). . -.

.

Sebagai contoh. tapi dalam bentuk daftar dengan pemisah koma. Fungsi GROUP_CONCAT Untuk syntax lengkap dari GROUP_CONCAT sebagaimana diambil dari referensi pada situs MySQL adalah sebagai berikut : . buncis 1 kg Buah alpukat 1 kg.Fungi GROUP_CONCAT : Menggabungkan String dari Grouping Tertentu Pendahuluan Kadang kala kita membuat report kumpulan item dari suatu grouping. bawang putih 1 kg. Misalkan daftar nama produk dari suatu kategori. jeruk 1 kg Sebagai solusi pada MySQL kita bisa menggunakan fungsi GROUP_CONCAT. misalkan kita memiliki sumber data tabular sebagai berikut : Data Sumber nama_kategori Sayur-Sayuran Sayur-Sayuran Sayur-Sayuran Buah Buah nama_produk bawang merah 1kg bawang putih 1 kg buncis 1 kg alpukat 1 kg jeruk 1 kg dan ingin kita hasilkan sebagai berikut Hasil Query nama_kategori Sayur-Sayuran nama_produk bawang merah 1kg.

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.nam a_produk DESC) FROM ms_produk m1 JOIN ms_kategori m2 ON m1..GROUP_CONCAT([DISTINCT] expr [.kode_kategori GROUP BY m2. function maupun operator) [ORDER BY .nama _produk) FROM ms_produk m1 JOIN ms_kategori m2 ON m1.] [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [.nama_kategori... SELECT m2.] : 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.. GROUP_CONCAT(m1..nama_kategori. GROUP_CONCAT(m1..expr .nama_kategori. Query SQL Contoh Hasil (Klik Untuk Memperbesar) SELECT m2. literal. .kode_kategori GROUP BY m2.kode_kategori = m2.kode_kategori = m2.nama_kategori.nama_produk ORDER BY m1.

nama_produk.5) ORDER BY m1.nama_produk DESC ) FROM ms_produk m1 JOIN ms_kategori m2 ON m1. .nama_kategori.nama_kategori. GROUP_CONCAT( LEFT(m1.kode_kategori GROUP BY m2.SELECT m2.kode_kategori = m2.

1 DDL . 2. 3 Belajar SQL lebih lanjut ? Semua perintah SQL dibagi dalam 2 kategori besar sesuai fungsinya. yaitu : .0 3.1 Beberapa daftar Perintah DML MySQL 5.Data Manipulation Language 1.2 Tabel Matrix Perintah DDL MySQL 5.0 2. 1.Data Definition Language 1. 1.0 2.1 Daftar Perintah DDL pada MySQL 5.Apa itu DDL & DML ? Contents 1. 2 DML .

PRIMARY KEY (kode_karyawan) ) Daftar Perintah DDL pada MySQL 5.pada MySQL . DDL . nama_belakang varchar(9) default NULL.adalah sebagai berikut :        Database Table View Index Procedure (Stored Procedure) Function Trigger Contoh : -.  Mari kita lihat dari definisi dan contoh lebih lanjut pada bagian berikut di bawah ini. mengubah (alter) dan menghapus (drop) struktur dan definisi tipe data dari objekobjek database. DDL Data Definition Language merupakan kumpulan perintah SQL yang digunakan untuk membuat. jenis_kelamin varchar(1) default NULL. merubah dan menghapus isi data . DDL adalah kumpulan perintah SQL yang digunakan untuk membuat (create).Data Definition Language Seperti definisi yang telah dijelaskan di atas. Klik pada link untuk melihat rincian penggunaan dari perintah tersebut. mengubah dan menghapus struktur dan definisi metadata dari objek-objek database. kode_karyawan varchar(10) NOT NULL. nama_depan varchar(8) default NULL. DML Data Manipulation Language merupakan kumpulan perintah SQL yang digunakan untuk proses pengolahan isi data di dalam table seperti memasukkan.0 Berikut adalah contoh perintah DDL yang digunakan pada MySQL.dan tidak terkait dengan perubahan struktur dan definisi tipe data dari objek database. Objek-objek database pada yang dimaksud .Perintah berikut akan membuat table pada database kita dengan nama "ms_karyawan" CREATE TABLE ms_karyawan ( kode_cabang varchar(10) default NULL. .

Pembuatan (CREATE) o CREATE DATABASE o CREATE FUNCTION o CREATE INDEX o CREATE PROCEDURE o CREATE TABLE o CREATE TRIGGER o CREATE VIEW Perubahan (ALTER & RENAME) o ALTER DATABASE o ALTER FUNCTION o ALTER PROCEDURE o ALTER TABLE o ALTER VIEW o RENAME TABLE Penghapusan (DROP) o DROP DATABASE o DROP FUNCTION o DROP INDEX o DROP PROCEDURE o DROP TABLE o DROP TRIGGER o DROP VIEW

OBJECT DATABASE FUNCTION INDEX PROCEDURE TABLE TRIGGER VIEW

Tabel Matrix Perintah DDL MySQL 5.0 CREATE ALTER DROP Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes Yes

RENAME

Yes

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

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".

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. kita ingin mencari keterangan "nama kota".

dengan data tersebut kita cari data row terkait di table "ms_kota" sehingga kita dapatkan "Lhokseumawe" sebagai nama kotanya. untuk mencari nama kota dari cabang "PHI Mini Market Lhokseumawe 01" maka kita perlu mengambil nilai kode kota dari cabang tersebut. nilai-nilai pada table "ms_cabang" dan "ms_kota" ternyata memiliki kaitan atau relasi pada kolom "kode_kota". .  Perhatikan kedua gambar. Setelah itu. yaitu "KOTA-001". Sebagai contoh.

. Dengan menggunakan join di SQL maka hasil akhir tampak seperti gambar berikut ini. 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. Penutup Join adalah penggabungan table yang dilakukan melalui kolom / key tertentu yang memiliki nilai terkait untuk mendapatkan satu set data dengan informasi lengkap. Dan untuk Anda yang ingin berdiskusi lebih lanjut mengenai konsep lain di database relasional atau bahasa SQL. salah satu alasannya untuk menghindari redundansi. Untuk informasi selengkapnya mengenai normalisasi data bisa dibaca pada halaman situs wikipedia ini. silahkan bergabung dengan komunitas kami dari informasi di halaman ini.