Friday, 1 November 2013

Query pada Database



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 :
  1.   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;
  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%';

  1. 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'

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

 

Leave a Reply