Haiii, see you again at fourth meeting :D
A. LANDASAN TEORI
Di pertemuan ini, materinya ngupas tentang operator dasar sql secara umum.
Operator dalam sql terdapat operator pembanding, operator logika, dan operator
lainnya seperti BETWEEN, LIKE, UNION, EXCEPT, INTERSECT, IN, NOT IN, REGEXP,
DISTINCT, LIMIT, OFFSET. (*Ngomong apa yaa ? o.O)
Oke, daripada kalian memendam rasa penasaran kalian, yuk
kita bahas operator diatas.
AS.
biasa
digunakan untuk menampilkan tabel kolom dengan nama lain sehingga yang akan
muncul dalam hasil query bukan nama asli kolom, tetapi nama yang lebih mudah
dimengerti dan simpel. AS digunakan setelah nama kolom yang akan diganti yang
kemudian diikuti dengan nama penggantinya. Ini nih struktur query-nya:
SELECT nama_kolom AS nama_kolom_pengganti FROM
nama_tabel;
Operator Precedence.
Adalah tingkatan hirarki dalam memproses serangkaian
operator.
Tingkatan Hirarki
|
Jenis Operator
|
Paling Tinggi
|
BINARY
|
NOT
|
|
- (unary minus)
|
|
* / %
|
|
+ -
|
|
<< >>
|
|
&
|
|
|
|
|
< <= =
<=>!=<> >= > IN IS LIKE
REGEXP RLIKE
|
|
BETWEEN
|
|
AND &&
|
|
Paling Rendah
|
OR ||
|
Semakin keatas posisi operator, maka semakin tinggi tingkat
hirarki operator tersebut. Begitu pula sebaliknya, semakin rendah posisinya
maka akan semakin lemah hirarkinya.
LIKE.
Operator LIKE ini digunakan untuk mencari data
yang "menyerupai" atau "hampir sama" dengan kriteria
tertentu. Biasanya untuk mencari data sring/teks. Simbol "%"
digunakan untuk membantu pelaksanaan operator LIKE. Posisi "%" sangat
berpengaruh dalam menentukan kriteria. Langsung saja, kita lihat
contoh-contohnya:
Contoh Kasus
|
Operator
|
Diawali dengan huruf A
|
LIKE 'A%'
|
Diakhiri dengan huruf A
|
LIKE '%A'
|
Huruf A pada posisi kedua
|
LIKE '_A%'
|
Diawali dengan huruf A dan mengandung huruf I
|
LIKE 'A%I%'
|
Tidak diawali dengan huruf A
|
NOT LIKE 'A%'
|
REGEXP.
Merupakan kepanjangan dari Regular Expression
yang merupakan bentuk lain dari LIKE, dengan fungsi yang lebih disempurnakan
lagi.Biasanya lebih sering digunakan untuk string. Dalam Postgre, biasa disimbolkan dengan " ~ ".
Contoh sintaksnya :
SELECT * FROM nama_tabel WHERE nama_kolom ~ 'operator_regexp ' ;
SELECT * FROM nama_tabel WHERE nama_kolom ~ 'operator_regexp ' ;
Operator Pembanding.
Namanya saja sudah pembanding,
berarti operator ini digunakan untuk membandingkan kedua tabel yang akan
direlasikan. Berikut ini adalah beberapa operator pembanding beserta
keterangannya.
Operator
|
Keterangannya
|
<
|
Kurang dari
|
>
|
Lebih dari
|
<=
|
Kurang dari atau sama dengan
|
>=
|
Lebih dari atau sama dengan
|
=
|
Sama dengan
|
<> atau !=
|
Tidak sama dengan
|
Operator yang
biasanya menggunakan operator pembanding adalah operator BETWEEN.
Operator BETWEEN digunakan untuk menentukan lebar antara nilai terendah dan
tertinggi.
Logika Operator BETWEEN dapat dituliskan sebagaimana query
berikut ini :
·
SELECT*FROM nama_tabel
WHERE nama_kolom BETWEEN 'nilai_Awal'
AND 'nilai_akhir'
atau
·
SELECT*FROM nama_tabel WHERE nama_kolom >=
'nilai_Awal' AND nama_kolom <=
'nilai_akhir'
Logika Operator NOT BETWEEN (kebalikan dari BETWEEN)
menampilkan data selain yang ditampilkan oleh fungsi BETWEEN
·
SELECT*FROM nama_tabel
WHERE nama_kolom NOT BETWEEN 'nilai_Awal'
AND 'nilai_akhir'
·
SELECT*FROM nama_tabel
WHERE nama_kolom < 'nilai_Awal' OR
nama_kolom > 'nilai_akhir'
Operator Logika.
Operator ini mencakup tiga operator,
yakni AND, OR, dan NOT. Penggunaan operator ini biasanya digunakan dalam
sintaks WHERE yang lebih kompleks.
AND.
Digunakan untuk menampilkan data dengan dua atau lebih kondisi yang harus
dipenuhi, apabila salah satu tidak terpenuhi atau bernilai false, maka
pencarian tidak akan ada hasilnya.
OR. Digunakan untuk
menampilkan data dengan dua atau lebih kondisi. Pencarian akan ada hasilnya
meskipun salah satu kondisinya bernilai false.
IN dan NOT IN
Operator IN akan melakukan pencocokan dengan salah satu yang
ada pada suatu daftar nilai. Berikut struktur yang digunakan:
SELECT*FROM nama_tabel WHERE nama_kolom IN('kata_kunci',
'kata_kunci1', 'kata_kunci2');
DISTINCT
Sebuah pengertian yang sederhana dari DISTINCT adalah untuk
mencegah terjadinya duplikasi pada output sebuah tabel. DISTINCT sering kali
diperlukan untuk mengembalikan hasil dari sebuah query dengan tidak terdapay
duplikasi, artinya hasil outputnya tidak terjadi kesamaan data.
SELECT DISTINCT nama_kolom FROM nama_tabel;
LIMIT dan OFFSET
LIMIT dan OFFSET digunakan untuk membatasi jumlah output
dari query berdasarkan jumlah row, tetapi berbeda loh sama klausa WHERE.
Contohnya aja ya, kita mau nampilkan baris ke q-qo secara berurutan, nah kita
bisa pake ni operator. Bisa dikatakan LIMIT adalah untuk menentukan jumlah
baris yang akan ditampilkan dihitung dari baris pertama, sedangkan OFFSET
digunakan untuk menghilangkan baris sesuai dengan jumlah yang diberikan, jadi
nanti yang tampil adalah selain yang diOFFSET.
Perintah SQL nya kaya gini :
SELECT * FROM nama_tabel LIMIT 2;
atau
SELECT * FROM nama_tabel OFFSET 2;
UNION, EXCEPT dan INTERSECT
UNION digunakan untuk menggabungkan hasil data suatu
kolom dari dua tabel menjadi satu kolom saja.
SELECT nama_kolom FROM nama_tabel UNION SELECT nama_kolom1
FROM nama_tabel1;
atau
SELECT nama_kolom FROM nama_tabel UNION ALL SELECT
nama_kolom1 FROM nama_tabel1;
EXCEPT digunakan untuk mengurangi data tabel pertama
dengan tabel kedua, sehingga yang ditampilkan nanti hanya data yang ada pada
tabel pertama saja yang tidak memiliki pengurang ditabel kedua.
SELECT nama_kolom FROM nama_tabel EXCEPT SELECT nama_kolom1
FROM nama_tabel1;
INTERSECT digunakan untuk menampilkan seluruh isi
data dari dua tabel yang memiliki kesamaan diantara hasil kedua query tersebut.
SELECT nama_kolom FROM nama_tabel INTERSECT SELECT
nama_kolom1 FROM nama_tabel1;
B. TUGAS PRAKTIKUM
Yaaap. Langsung saja kita cus mengupas satu persatu soal seperti di bawah ini.Soal Tugas Praktikum dan Tugas Rumah |
*eitts, don't shock kalo liat soalnya makin lama makin panjang:D
Seperti biasa sob, buka Postgre kamu.. Login, masukin
database, password.
1. Sebelum mengarah ke nomor satu, lebih baik cek dulu deh
sob, tabel yang ada didatabase (Lihat Modul 3.)
Naah loh ada empat tabel. Untuk persiapannya, kita pake
tabel mahasiswa dan fakultas yang udah dibuat kemaren. Cek dulu data kedua
tabel tersebut.
Tambahkan kolom gender pada tabel mahasiswa.
2. Tambahkan satu data pada tabel fakultas yaitu 'SAINTEK'
3. Masukkan 7 data pada tabel mahasiswa, (nim, nama, dll
terserah kalian deh mau kalian isi apa). Karena faktanya ada satu data, maka
cukup nambah 6 data lagi.
4. Kalo yang ini baru deh ngerjain nomer satu (*Fiuhhh,
preparenya kudu mateng nih). Tampilkan data mahasiswa dengan nama kolomnya
menjadi nomor_identitas, nama, alamat, nama_fakultas tanpa mengubahnya secara
permanen.
In short, bedanya pake AND sama OR, ntar akan menampilkan
data yang berbeda. Dengan menggunakan
AND, maka apa yang diinginkan oleh user pasti sama dengan hasilnya. Kalo pake
OR, data nanti akan di silangkan terlebih dahulu antara data gender dengan data
nama_fak. Sehingga, mengalami pengulangan data seperti diatas.
6. Tampilkan data mahasiswa dari nomor 3 sampai dengan 5
dengan menggunakan between dan tanpa between.
Kemudian, tampilkan data mahasiswa selain nomor 3 sampai
dengan 5 dengan menggunakan between dan tanpa between.
8. Tampilkan semua data mahasiswa yang namanya mempunyai
awalan huruf "a".
NOTE: Dalam Postgre, penulisan huruf pada data bersifat case sensitive, artinya, mereka membedakan huruf kapital dengan yang tidak.
9. Tampilkan semua data mahasiswa yang namanya mempunyai
akhiran "a" dan huruf ke-3 dari nama tersebut terdapat huruf
"n".
10. Tunjukkan nomor fakultas dalam tabel mahasiswa dengan
syarat tidak adanya redundansi dari baris pertama sampai terakhir.
12. Tampilkan data mahasiswa dengan nama awalan a kemudian
diikuti oleh huruf r,d dan t.Tampilkan juga data mahasiswa dengan huruf awalan r dan t kemudian diikuti oleh kata oni
13. Buat dua tabel dengan data seperti ini :
a. Tabel
organ_dalam
Nomor
|
Nama
|
1
|
Jantung
|
2
|
Paru-paru
|
3
|
Tenggorokan
|
b.
Tabel organ_luar
Nomor
|
Nama
|
1
|
Hidung
|
2
|
Mata
|
3
|
Tenggorokan
|
Tampilkan data dari kedua tabel tersebut dengan menggunakan UNION, EXCEPT dan INTERSECT.
C. TUGAS RUMAH
Sekarang, move ke tugas rumah sob. Sekarang, pake DBMS mysql
yapp. FIGHTING ! :D
3. Aktifkan database yang kemaren udah dibuat pada modul
sebelumnya sob. Sekalian cek tabel yang ada dalam database tersebut.
Tambahkan kolom gender pada tabel mahasiswa.
5. Tambahkan satu data pada tabel fakultas yaitu 'SAINTEK'
6. Masukkan 7 data pada tabel mahasiswa, (nim, nama, dll
terserah kalian deh mau kalian isi apa). Karena faktanya ada satu data, maka
cukup nambah 6 data lagi.
Waaaitt !!! itu datanya masih ada yang NULL. UPDATE data pada kolom nim_mah=14
7. Kalo yang ini baru deh ngerjain nomer satu (*Fiuhhh,
preparenya kudu mateng nih). Tampilkan data mahasiswa dengan nama kolomnya
menjadi nomor_identitas, nama, alamat, nama_fakultas tanpa mengubahnya secara
permanen.
8. Tampilkan nama mahasiswa yang berada di fakultas saintek
yang berjenis kelamin laki-laki.
Next, tampilkan nama mahasiswa yang berada di fakultas
saintek atau berjenis laki-laki.
9. Tampilkan data mahasiswa dari nomor 3 sampai dengan 5
dengan menggunakan between dan tanpa between.
Kemudian, tampilkan data mahasiswa selain nomor 3 sampai
dengan 5 dengan menggunakan between dan tanpa between.
10. Tampilkan data mahasiswa dengan nomor 2,3,5 dengan
menggunakan operator IN
11. Tampilkan semua data mahasiswa yang namanya mempunyai
awalan huruf "a".
Lihat !!! Pake huruf kapital maupun tidak, mysql tetep akan menampilkan hasilnya. Artinya, dia tidak case sensitive
12. Tampilkan semua data mahasiswa yang namanya mempunyai
akhiran "a" dan huruf ke-3 dari nama tersebut terdapat huruf
"n".
13. Tunjukkan nomor fakultas dalam tabel mahasiswa dengan
syarat tidak adanya redundansi dari baris pertama sampai terakhir.
14. Tampilkan data mahasiswa just 3 baris saja.
Mysql nggak mengenal operator offset. So, alhasil, terjadi ERROR
15. Tampilkan data mahasiswa dengan nama awalan a kemudian
diikuti oleh huruf r,d dan t.
Tampilkan juga data mahasiswa dengan huruf awalan r dan t
kemudian diikuti oleh kata oni.
16. Buat dua tabel dengan data seperti ini :
a. Tabel
organ_dalam
Nomor
|
Nama
|
1
|
Jantung
|
2
|
Paru-paru
|
3
|
Tenggorokan
|
b.
Tabel organ_luar
Nomor
|
Nama
|
1
|
Hidung
|
2
|
Mata
|
3
|
Tenggorokan
|
Tampilkan data dari kedua tabel tersebut dengan menggunakan
UNION, INTERSECT dan EXCEPT.
Query UNION pada MySQL maupun Postgre, strukturnya sama saja. Seperti yang terlihat pada gambar, tidak terdapat perbedaan. Sedangkan untuk Intersect dan Except, MySQL tidak mengenali quey tersebut. MySQL bisa melakukan fungsi yang sama, tetapi struktur querynya. Dalam MySQL, digunakan IN untuk menghasilkan hasil query yang sama untuk INTERSECT. Sedangkan NOT IN sama seperti EXCEPT.
D. EVALUASI PERBANDINGAN MYSQL dengan POSTGRESQL
Okee, saatnya banding-membandingkan antara MySQL dengan Postgre...
1. Tentang REGEXP
Postgre, kalo mau pake fungsi REGEXP, disimbolkan dengan (~)
SELECT * FROM nama_tabel WHERE nama_kolom ~ 'karakteryangditampilkan' ;
MySQL, ngga pake simbol sob, langsung aja ketik REGEXP
SELECT * FROM nama_tabel WHERE nama_kolom REGEXP 'karakteryangditampilkan' ;
2. Tentang OFFSET
Postgre, berlaku operator OFFSET
MySQL, kayaknyaa ngga ada deh. soalnya pas aku lagi ngerjain pake OFFSET, hasilnya ERROR.
3. Tentang EXCEPT
Postgre, untuk mengurangi data tabel pertama ke tabel kedua, bisa pake EXCEPT.
SELECT nama_kolom FROM nama_tabel EXCEPT SELECT nama_kolom1 FROM nama_tabel1;
MySQL, nggak bisa sob, dia bisanya pake NOT IN
SELECT nama_kolom FROM nama_tabel WHERE nama_kolom NOT IN(SELECT nama_kolom1 FROM nama_tabel1);
4. Tentang INTERSECT
Postgre, untuk menampilkan isi data yang sama dari dua tabel, bisa pake INTERSECT.
SELECT nama_kolom FROM nama_tabel INTERSECT SELECT nama_kolom1 FROM nama_tabel1;
MySQL, nggak bisa sob, dia bisanya pake IN
SELECT nama_kolom FROM nama_tabel WHERE nama_kolom IN(SELECT nama_kolom1 FROM nama_tabel1);
5. Tentang CASE SENSITIVE
Postgre, sifatnya kaya cewek sob. Dia sensitif. Dia bisa bedain mana huruf kecil, mana huruf kapital
MySQL, naah kalo yang ini cowoknya. NGGAK PEKA !:D Nggak ada bedanya huruf besar ataupun huruf kecil
Kaloo tentang persamaannya, ya selain perbedaan itu rek :D LIKE, LIMIT, UNION, BETWEEN, IN, NOT IN, struktur sintaksnya sama semua kok ;) cuma yang diatas aja yang bedain antara mysql sama Postgre.
Kaloo tentang persamaannya, ya selain perbedaan itu rek :D LIKE, LIMIT, UNION, BETWEEN, IN, NOT IN, struktur sintaksnya sama semua kok ;) cuma yang diatas aja yang bedain antara mysql sama Postgre.
E. KESIMPULAN
In Short, Pada pertemuan kali ini, kita mengenal adanya operator dasar pada database. Nggak hanya di matematika, fisika, kimia aja, di DATABASE, mereka juga punya operator-operator dasar antara lain :
AND, OR, NOT, BETWEEN, NOT BETWEEN, IN, NOT IN, LIKE, NOT LIKE, REGEXP, LIMIT, OFFSET, UNION, INTERSECT, EXCEPT.
Mohon kritikan dan sarannya yang membangun yakk ;)
Semoga bermanfaat, dunia dan akhirat :D
Mohon kritikan dan sarannya yang membangun yakk ;)
Semoga bermanfaat, dunia dan akhirat :D
F. DAFTAR PUSTAKA
Kadir, Abdul. 2002. Penuntun Praktis Belajar SQL. Yogyakarta: ANDI.
Nugroho, Bunafit. 2009. Panduan Lengkap Menguasai Perintah SQL. Jakarta: Media Kita.
Mantap, Artikelnya bagus
ReplyDeletehttp://blog.binadarma.ac.id/irman_effendy