Membuat sebuah query untuk menampilkan suatu data dari database merupakan kesenangan saya, ntah kenapa merancang sebuah query dengan panjang dan dibutuhkan JOIN , INNER JOIN dll. sangat menyenangkan, layaknya sebuah mysteri ketika kita membuatnya kemudian terjadi kesalahan demi kesalahan yang banyak, tetapi akhirnya Itu loh Bisa mas brooh :D. Kebanyakan dari kita ada yang menggunakan suatu manajemen database yang disana menyediakan fitur untuk membentuk/menghasilkan sebuah query.
menurut saya AAAAAhhhhh kagak keyennn. (terlebih saya ngk tau ngoperasiinya juga sih Hahaha!).
Okeh untuk lebih jelasnya mari kita bersama-sama mempelajari Query ini. Maaf jika masih kurang ngerti, tergantung kapasitas HD, RAM anda dan proccesor Otak anda masing-masing haha.
Kita mulai dari DML.
DML adalah kelompok perintah yang berfungsi untuk memanipulasi data dalam basis data, misalnya untuk pengambilan, penyisipan, pengubahan, dan penghapusan data. Perintah yang masuk kategori DML adalah :
-
Insert
Perintah Insert
digunakan untuk menyisipkan data baru ke dalam sebuah tabel database. Ada dua macam perintah Insert,
yaitu yang digunakan untuk menyisipkan data satu persatu dan yang menyisipkan
banyak data sekaligus. Sintaksnya adalah sebagai berikut :
Untuk
menyisipkan banyak record :
Untuk
menyisipkan satu record :
INSERT INTO tujuan [(t_field1[,
t_field2[, …]])] VALUES (nilai1[, nilai2[, … ] ])
Arti
parameter-parameter yang disertakan:
Tujuan adalah
nama tabel yang akan disisipi data.
Sumber adalah
nama tabel sumber data.
T_field1,
t_field2
adalah nama field yang akan disisipi data.
s_field1,
s_field2 adalah
nama field sumber data.
Nilai1,
nilai2
adalah nilai data yang akan disisipkan.
Sebagai latihan, akan
ditambahkan kedalam tabel buku beberapa data.
mysql>
insert into buku values(1,'KD-OD9-HW-EMK-1',1,1);
Perintah
di atas bertujuan menambahkan/menyisipkan tabel kedalam tabel buku dengan data
sesuai urutan field ketika membuat tabel (bisa ditampilkan dengan perintah
describe).
Bisa juga
menggunakan cara:
mysql>
INSERT INTO buku(id_buku,id_judul,no_urut,referensi)
-> VALUES (2,'AF-HMA-MA-MDK-5',1,1);
Ataupun
mysql>
INSERT INTO buku (id_judul,referensi, no_urut)
-> VALUES ('KP-PDM-RS-AOF,3',1,1);
Tampilkan
semua data yang ada di dalam tabel buku
mysql>
select * from buku;
+---------+-----------------+---------+-----------+
|
id_buku | id_judul | no_urut |
referensi |
+---------+-----------------+---------+-----------+
| 1 | KD-OD9-HW-EMK-1 | 1 | 1 |
| 2 | AF-HMA-MA-MDK-5 | 1 | 1 |
| 3 | KP-PDM-RS-AOF,3 | 1 | 1 |
+---------+-----------------+---------+-----------+
mysql>
INSERT INTO buku
-> SET id_judul='KP-PWP-IFB-4',
-> no_urut=1,
-> referensi=1;
-
Select
Perintah
Select digunakan untuk memilih data-data yang diperlukan dari sebuah database
ke dalam sebuah database sementara. Ada
beberapa istilah dalam menyebut database sementara ini, misalnya query,
recordset, view. Sintaks selengkapnya adalah sebagai berikut:
SELECT
{ * | namafield } FROM namatabel [INTO tujuan] [WHERE kriteria] [GROUP BY grup] [HAVING kriteria]
[ORDER BY namafield] [{ASC|DESC}]
Tanda *
berarti menetapkan bahwa semua field pada tabel akan dipilih.
NamaField adalah
nama field yang akan dipilih.
NamaTabel adalah
nama tabel yang akan dipilih.
Kriteria merupakan
suatu ekspresi logika yang mjd syarat pemilihan data.
Tujuan merupakan
nama dari tabel baru yang dibentuk.
Grup merupakan
pengelompokan data berdasarkan nama field.
ASC atau DESC
adalah pengurutan data berdasarkan abjad atau angka.
Jalankan
perintah-perintah berikut:
select * from buku;
select * from buku where referensi=2;
select id_judul,judul,id_penerbit,thn_terbit from
judul_buku;
select nama_anggota,tmp_lahir,sekolah from anggota
select nama_anggota,tmp_lahir from anggota where
sekolah='STMIK El Rahma';
select nama_anggota,tmp_lahir from anggota where
tmp_lahir='Yogyakarta';
select nama_anggota,tmp_lahir from anggota where
nama_anggota like 'Untung%';
select nama_anggota,tmp_lahir from anggota where
nama_anggota like '%ma%';
- Delete
Perintah
Delete digunakan untuk menghapus record pada suatu tabel. Sintaks dari
perintah Delete adalah sebagai berikut :
DELETE FROM nama_tabel [WHERE
kriteria]
hati-hati
dalam memberikan perintah delete ini, karena jika terlupa memberikan pernyataan
kondisi , perintah ini akan menyebabkan terhapusnya seluruh isi tabel.
Sebagai
contoh kita hapus dari tabel anggota, anggota dengan id_anggota='0520002', maka
perintahnya:
DELETE FROM anggota WHERE id_anggota='0520002'
- Update
Perintah
Update digunakan untuk memodifikasi atau memperbaharui nilai-nilai record pada sebuah tabel. Sintaksnya adalah
sebagai berikut :
UPDATE nama_tabel
SET field1 = nilai1 [,field2 = nilai2 [,...]]
[WHERE kondisi]
wah..., ternyata data anggota yang kita
masukan tadi ada yang salah. Coba tampilkan nama_anggota, beserta sekolahnya, kalau
pingin tahu, boleh juga dengan tgl_lahirnya :), untuk anggota yang
tempat lahirnya di Kebumen. (masih ingat caranya? Tentu dong.....).
Nah, ternyata kita menginputkan sekolah yang
salah.
Coba jalankan perintah berikut:
UPDATE anggota SET sekolah='STMIK El Rahma' WHERE tmp_lahir LIKE
'%bumen';
Hati-hati juga dalam
menjalankan perintah update ini, jangan sampai lupa untuk menuliskan kondisi
data dalam tabel yang akan diperbaiki. Maksud hati ingin merubah data yang
tempat lahirnya di 'bumen' saja, apa daya karena lupa menuliskan
kondisi, jadi berubah semua datanya.
Menggabungkan Dua Tabel atau Lebih
Jika
kita memperhatikan tabel buku, maka disitu hanya ada field id_buku, id_judul,
no_urut, dan referensi. Bagaimana untuk mengetahui judul bukunya? Sedangkan
judul ada di tabel yang lain. Terkadang atau bahkan sering, kita memang akan
bekerja dengan dua tabel atau lebih. Kalau kita menggabungkan dua tabel atau
lebih, seperti permasalahan di atas hanya menyebut field beserta tabel-tabel
yang digunakan, misalnya perintah berikut:
select id_judul,judul,no_urut from buku,judul_buku;
maka
akan ditampilkan kesalahan
ERROR 1052: Column: 'id_judul' in field list is ambiguous
Jika
kebetulan nama field id-nya berbeda, atau perintah yang digunakan adalah:
select buku.id_judul,judul,no_urut from buku,judul_buku;
maka
akan ditampilkan data sebanyak jumlah data buku * jumlah data judul buku, yaitu
dengan menghubungkan tiap id_judul di tabel buku dengan judul yang ada di tabel
judul_buku.
Jika
yang diinginkan adalah data yang bertepatan, yaitu data id_judul yang ada di
tabel buku dihubungkan dengan id_judul yang sama yang ada di tabel judul buku,
maka perintahnya:
SELECT buku.id_judul,judul,no_urut FROM buku,judul_buku
-> WHERE
buku.id_judul=judul_buku.id_judul;
atau
SELECT buku.id_judul,judul,no_urut
-> FROM buku INNER JOIN
judul_buku
-> ON
buku.id_judul=judul_buku.id_judul;
Menampilkan
data judul, nama penerbit dan nama pengarangnya
SELECT judul, penerbit, nama
FROM judul_buku
INNER JOIN penerbit ON judul_buku.id_penerbit = penerbit.id_penerbit
INNER JOIN pengarang ON judul_buku.kd_pengarang =
pengarang.id_pengarang;
SELECT judul, penerbit
FROM judul_buku
INNER JOIN penerbit ON judul_buku.id_penerbit = penerbit.id_penerbit;
SELECT judul, penerbit
FROM judul_buku
LEFT JOIN penerbit ON judul_buku.id_penerbit = penerbit.id_penerbit;
SELECT judul, penerbit
FROM judul_buku
RIGHT JOIN penerbit ON judul_buku.id_penerbit = penerbit.id_penerbit;
Perhatikan perbedaan ketiga perintah terakhir di atas
beserta hasilnya, dan simpulkan.
Cobalah untuk menghapus data penerbit 'Andi offset' yang ada
di tabel penerbit
Kemudian ulangi ketiga perintah di atas
Perhatikan perbedaan
perubahan hasil ketiga perintah terakhir di atas beserta hasilnya, dan
simpulkan.
Source : Pelajaran D3 saya dahulu yang diajarkan bapak gatot satryo.