Tips dalam menulis query SQL :
Gunakan huruf besar untuk reserved keywords MySQL (macam "SELECT", "DELETE", "UPDATE", dll).
Gunakan huruf kecil untuk nama tabel, kolom, dll yang bukan reserved keywords dari MySQL.
Ini akan mempermudah pembacaan query.
Contoh yang benar :
Code:
SELECT * FROM tbl_member ORDER BY member_id
SELECT UPPER(nama_member) FROM tbl_member ORDER BY member_id
Salah :
Code:
select * from tbl_member order by member_id
SELECT * FROM TBL_MEMBER WHERE NAMA_MEMBER = 'joko'
SELECT upper(nama_member) FROM TBL_MEMBER WHERE NAMA_MEMBER = 'joko'
Jika memungkinkan, gunakan backtick untuk kata-kata yg bukan reserved keywords seperti contoh di bawah
Catatan : backtick bukan tanda petik satu biasa, tapi bisa didapat pada tombol di bawah tombol Esc di pojok kiri atas keyboard yang normal.
Code:
SELECT * FROM `tbl_member` ORDER BY `member_id`
SELECT UPPER(`nama_member`) FROM `tbl_member` ORDER BY `member_id`
Misal ada tabel bernama "member".
Memiliki kolom sbb :
id_member, tipe = integer, primary key + auto increment
nama_member, tipe = varchar
umur_member, tipe = integer
Untuk mengambil seluruh data di tabel, gunakan perintah (SQL query) berikut
Code:
SELECT * FROM member
Untuk mengambil hanya kolom "nama_member" dari seluruh data di tabel, gunakan perintah (SQL query) berikut
Code:
SELECT nama_member FROM member
Untuk mengambil hanya kolom "nama_member" dan "umur_member" dari seluruh data di tabel :
Code:
SELECT nama_member, umur_member FROM member
Untuk melakukan sorting (pengurutan) berdasarkan "nama_member" :
Code:
SELECT * FROM member ORDER BY nama_member
Secara default, jika tidak ada "ASC" atau "DESC", pengurutan adalah "ASC".
Sehingga query di atas sama dengan :
Code:
SELECT * FROM member ORDER BY nama_member ASC
Untuk melakukan sorting (pengurutan) terbalik berdasarkan "nama_member"
Code:
SELECT * FROM member ORDER BY nama_member DESC
Apa beda truncate & delete.
Contoh perintah truncate :
Code:
TRUNCATE TABLE tbl_member
TRUNCATE TABLE tbl_member, tbl_posts
Contoh perintah delete :
Code:
DELETE FROM tbl_member
DELETE FROM tbl_member WHERE id_member = 1
DELETE FROM tbl_member WHERE id_member = 1 OR id_member = 2
Dari contoh di atas terlihat bahwa pada TRUNCATE, semua data di tabel dikosongkan tanpa kecuali.
Sedangkan pada DELETE, kita bisa menghapus hanya data tertentu saja (dengan menambahkan WHERE), atau seluruh data (tanpa WHERE).
Sekarang jika kita ingin menghapus seluruh data, dua-duanya mampu, lalu mana yang kita pilih?
TRUNCATE atau DELETE?.
Pada perintah TRUNCATE, penghapusan terjadi lebih cepat, yaitu bisa diibaratkan bahwa tabel di-DROP dan di-CREATE ulang.
Akibatnya selain data kosong, dengan TRUNCATE auto_increment juga ter-reset jadi awal (1).
Sedangkan pada DELETE, jika kita menghapus semua data, auto_increment masih melanjutkan auto_increment yang lalu.
Misal ada tabel berikut
Code:
==========
id - nama
==========
1 - joko
2 - budi
3 - bayu
Setelah kita meng-TRUNCATE tabel tersebut, jika kita memasukkan data baru lagi, maka id akan bernilai 1
Code:
==========
id - nama
==========
1 - data baru
Sedangkan bila kita men-DELETE data tabel tersebut, jika kita memasukkan data baru lagi, maka id akan bernilai 4
Code:
==========
id - nama
==========
4 - data baru
Selain itu pada perintah DELETE tanpa WHERE (penghapusan semua row), proses DELETE akan berjalan lambat karena setiap row di tabel di-DELETE satu per satu.
Bayangkan bila ada 2 ribu row, semua didelete satu per satu secara background.
Maka gunakan TRUNCATE & DELETE tergantung situasi, kondisi, & kebutuhan
Kesimpulan :
1 Untuk menghapus seluruh data, gunakan TRUNCATE.
2 Untuk menghapus data tertentu, gunakan DELETE.
Berikutnya untuk mengubah data di tabel.
Mengubah semua data di tabel
Code:
UPDATE member SET nama = 'nama_baru'
Ini untuk mengubah data tertentu
Code:
UPDATE member SET nama = 'nama_baru' WHERE id_member = 1
Ini untuk mengubah data tertentu versi 2
Code:
UPDATE member SET nama = 'nama_baru' WHERE id_member = 1 OR id_member = 2
UPDATE member SET nama = 'nama_baru' WHERE id_member = 1 OR id_member = 2 OR id_member = 3
Contoh kombinasi perintah MySQL WHERE, GROUP BY, HAVING, ORDER BY dalam satu query
Code:
SELECT
tabel_1.username,
tabel_2.user_id,
SUM(tabel_2.balance) AS x_total_balance
FROM
tabel_2
JOIN tabel_1 ON tabel_2.user_id = tabel_1.user_id
WHERE
tabel_2.stocks < 31
GROUP BY
tabel_2.user_id
HAVING
x_total_balance BETWEEN 1 AND 10000
ORDER BY
tabel_2.user_id ASC
Jangan lupa GROUP BY harus diletakkan lebih dahulu, setelah itu baru HAVING.
HAVING mirip seperti WHERE, hanya digunakan untuk pengkondisian kolom yang berisi fungsi semacam SUM(), MAX(), MIN(), AVG(), dan lain-lain.
SEKIAN GAES
Gunakan huruf besar untuk reserved keywords MySQL (macam "SELECT", "DELETE", "UPDATE", dll).
Gunakan huruf kecil untuk nama tabel, kolom, dll yang bukan reserved keywords dari MySQL.
Ini akan mempermudah pembacaan query.
Contoh yang benar :
Code:
SELECT * FROM tbl_member ORDER BY member_id
SELECT UPPER(nama_member) FROM tbl_member ORDER BY member_id
Salah :
Code:
select * from tbl_member order by member_id
SELECT * FROM TBL_MEMBER WHERE NAMA_MEMBER = 'joko'
SELECT upper(nama_member) FROM TBL_MEMBER WHERE NAMA_MEMBER = 'joko'
Jika memungkinkan, gunakan backtick untuk kata-kata yg bukan reserved keywords seperti contoh di bawah
Catatan : backtick bukan tanda petik satu biasa, tapi bisa didapat pada tombol di bawah tombol Esc di pojok kiri atas keyboard yang normal.
Code:
SELECT * FROM `tbl_member` ORDER BY `member_id`
SELECT UPPER(`nama_member`) FROM `tbl_member` ORDER BY `member_id`
Misal ada tabel bernama "member".
Memiliki kolom sbb :
id_member, tipe = integer, primary key + auto increment
nama_member, tipe = varchar
umur_member, tipe = integer
Untuk mengambil seluruh data di tabel, gunakan perintah (SQL query) berikut
Code:
SELECT * FROM member
Untuk mengambil hanya kolom "nama_member" dari seluruh data di tabel, gunakan perintah (SQL query) berikut
Code:
SELECT nama_member FROM member
Untuk mengambil hanya kolom "nama_member" dan "umur_member" dari seluruh data di tabel :
Code:
SELECT nama_member, umur_member FROM member
Untuk melakukan sorting (pengurutan) berdasarkan "nama_member" :
Code:
SELECT * FROM member ORDER BY nama_member
Secara default, jika tidak ada "ASC" atau "DESC", pengurutan adalah "ASC".
Sehingga query di atas sama dengan :
Code:
SELECT * FROM member ORDER BY nama_member ASC
Untuk melakukan sorting (pengurutan) terbalik berdasarkan "nama_member"
Code:
SELECT * FROM member ORDER BY nama_member DESC
Apa beda truncate & delete.
Contoh perintah truncate :
Code:
TRUNCATE TABLE tbl_member
TRUNCATE TABLE tbl_member, tbl_posts
Contoh perintah delete :
Code:
DELETE FROM tbl_member
DELETE FROM tbl_member WHERE id_member = 1
DELETE FROM tbl_member WHERE id_member = 1 OR id_member = 2
Dari contoh di atas terlihat bahwa pada TRUNCATE, semua data di tabel dikosongkan tanpa kecuali.
Sedangkan pada DELETE, kita bisa menghapus hanya data tertentu saja (dengan menambahkan WHERE), atau seluruh data (tanpa WHERE).
Sekarang jika kita ingin menghapus seluruh data, dua-duanya mampu, lalu mana yang kita pilih?
TRUNCATE atau DELETE?.
Pada perintah TRUNCATE, penghapusan terjadi lebih cepat, yaitu bisa diibaratkan bahwa tabel di-DROP dan di-CREATE ulang.
Akibatnya selain data kosong, dengan TRUNCATE auto_increment juga ter-reset jadi awal (1).
Sedangkan pada DELETE, jika kita menghapus semua data, auto_increment masih melanjutkan auto_increment yang lalu.
Misal ada tabel berikut
Code:
==========
id - nama
==========
1 - joko
2 - budi
3 - bayu
Setelah kita meng-TRUNCATE tabel tersebut, jika kita memasukkan data baru lagi, maka id akan bernilai 1
Code:
==========
id - nama
==========
1 - data baru
Sedangkan bila kita men-DELETE data tabel tersebut, jika kita memasukkan data baru lagi, maka id akan bernilai 4
Code:
==========
id - nama
==========
4 - data baru
Selain itu pada perintah DELETE tanpa WHERE (penghapusan semua row), proses DELETE akan berjalan lambat karena setiap row di tabel di-DELETE satu per satu.
Bayangkan bila ada 2 ribu row, semua didelete satu per satu secara background.
Maka gunakan TRUNCATE & DELETE tergantung situasi, kondisi, & kebutuhan
Kesimpulan :
1 Untuk menghapus seluruh data, gunakan TRUNCATE.
2 Untuk menghapus data tertentu, gunakan DELETE.
Berikutnya untuk mengubah data di tabel.
Mengubah semua data di tabel
Code:
UPDATE member SET nama = 'nama_baru'
Ini untuk mengubah data tertentu
Code:
UPDATE member SET nama = 'nama_baru' WHERE id_member = 1
Ini untuk mengubah data tertentu versi 2
Code:
UPDATE member SET nama = 'nama_baru' WHERE id_member = 1 OR id_member = 2
UPDATE member SET nama = 'nama_baru' WHERE id_member = 1 OR id_member = 2 OR id_member = 3
Contoh kombinasi perintah MySQL WHERE, GROUP BY, HAVING, ORDER BY dalam satu query
Code:
SELECT
tabel_1.username,
tabel_2.user_id,
SUM(tabel_2.balance) AS x_total_balance
FROM
tabel_2
JOIN tabel_1 ON tabel_2.user_id = tabel_1.user_id
WHERE
tabel_2.stocks < 31
GROUP BY
tabel_2.user_id
HAVING
x_total_balance BETWEEN 1 AND 10000
ORDER BY
tabel_2.user_id ASC
Jangan lupa GROUP BY harus diletakkan lebih dahulu, setelah itu baru HAVING.
HAVING mirip seperti WHERE, hanya digunakan untuk pengkondisian kolom yang berisi fungsi semacam SUM(), MAX(), MIN(), AVG(), dan lain-lain.
SEKIAN GAES