Melanjutkan praktikum yang ke-4, kali ini saya akan membahas pengenalan operator dasar melanjutan dari pertemuan ke-3. semoga apa yang materi saya tampilkan pada blog ini dapat bermanfaat bagi semua pengunjung blog.
AS
AS biasa digunakan untuk menampilkan label kolom dengan nama lain sehingga yang akan muncul dalam hasil query bukan nama asli kolom, tetapi nama yang mungkin lebih sesuai dan mudah dimengerti. AS digunakan setelah nama kolom yang akan diganti yang kemudian diikuti dengan nama penggantinya. Berikut struktur querynya :
select namakolom as namakolompengganti from namatabel;
Contoh :
AND dan OR
Pada bagian sebelumnya kita menggunakan anak kalimat atau sintaks WHERE hanya pada konteks yang sederhana. Berikut ini kita akan mencoba menggunakan WHERE untuk konteks yang lebih kompleks lagi, anak kalimat where yang kompleks akan bekerja dengan baik dengan menggunakan kata AND dan OR.
SQL menggunakan standar logika boolean three-valued seperti pada tabel berikut ;
A NOT A
Berikut struktur SQL untuk penampilan data :
select * from namatabel where namakolom = ‘pencarian 1’ and namakolom = ‘pencarian 2’;
Atau
select * from namatabel where namakolom = ‘pencarian 1’ or namakolom = ‘pencarian 2’;
Contoh :
Kondisi A Kondisi B A AND B A OR B
BETWEEN
BETWEEN digunakan untuk menentukan lebar nilai dari nilai terendah dan nilai tertinggi. Pada BETWEEN menggunakan operator pembanding seperti pada tabel
berikut;
Operator Penjelasan
Logika operator BETWEEN sebagai berikut :
¨ Nilai a dalam formula “a BETWEEN x AND y” indentik dengan “a >= x AND a <= y“
¨ “a NOT BETWEEN x AND y “ identik dengan “a < x OR a > y”
Berikut Struktur yang digunakan :
select * from nama_tabel where nama_kolom between ‘nilai_awal’ and ‘nilai_akhir’;
Contoh : Memunculkan data pegawai dimana tanggal lahirnya antara tanggal 9-9-
1999 sampai 1-1-2001.
IN dan NOT IN
Operator IN berguna melakukan pencocokan dengan salah satu yang ada pada suatu daftar nilai. Berikut Struktur yang digunakan
Select * from nama_tabel where nama_kolom in (kata_kunci1, kata_kunci2, kata_kunci13, kata_kunci14);
Contoh : menampilkan data pegawai yang memiliki ip 1,2, dan 3
LIKE
LIKE digunakan ketika kita ingin mencari sebuah data yang hanya diwakili oleh salah satu atau lebih hurufnya saja. Misalkan kita ingin mencari nama yang huruf awalnya R, maka kita harus menggunakan LIKE. Berikut adalah tabel contoh kasus
penggunaan LIKE :
Kasus Operator
Berikut struktur SQL untuk pencarian data menggunakan LIKE :
select * from nama_tabel where nama_kolom like ‘operator’;
Contoh : Mencari data pegawai yang mempunyai nama dengan huruf awalan r.
REGEXP
Regular Expression atau Regex, merupakan sebuah teknik atau cara untuk mencari persamaan - presamaan string atau data dan memanipulasinya. Biasanya lebih sering digunakan untuk string. Didalam PostgreSQL disimbolkan dengan “~”. Berikut
tabel daftar simbol pada reguler expression :
Berikut struktur SQL untuk pencarian data menggunakan REGEXP :
select * from nama_tabel where nama_kolom ~ ‘operator_regexp dan patern’;
Contoh :
DISTINCT
DISTINCT sering kali diperlukan untuk mengembalikan hasil dari sebuah query dengan tidak terdapat duplikasi, artinya pada hasil outputnya tidak terjadi kesamaan data meskipun pada data sesungguhnya sangat mungkin banyak duplikasi.. Hal ini juga berlaku jika data yang ada dalam bentuk angka. Berikut struktur perintah
dasar SQL :
select distinct nama_kolom from nama_tabel;
Contoh :
LIMIT
LIMIT dan OFFSET digunakan untuk membatasi jumlah output dari query berdasarkan jumlah row bukan karena kondisi seperti WHERE. Bisa dikatakan LIMIT adalah untuk menentukan jumlah baris yang akan ditampilkan yang dihitung dari baris pertama, sedangkan OFFSET digunakan untuk menghilangkan baris sesuai dengan jumlah yang diberikan pada OFFSET. Berikut struktur perintah dasar SQL :
select * from nama_tabel limit 2;
Atau
select * from nama_tabel offset 2;
Contoh :
UNION, EXCEPT dan INTERSECT
Hasil dari dua buah query dapat dikombinasikan dengan menggunakan UNION, EXCEPT atau INTERSECT. UNION digunakan untuk menggabungkan hasil dua buah query menjadi satu kolom. Berikut struktur query untuk UNION :
select nama_kolom from nama_tabel union select nama_kolom from nama_tabel;
atau
select nama_kolom from nama_tabel union all select nama_kolom from nama_tabel;
EXCEPT digunakan untuk menampilkan hanya query pertama saja, sedangkan hasil query kedua dan yang sama dengan hasil query kedua tidak akan ditampilkan.
Berikut struktur query penggunaan EXCEPT :
select nama_kolom from nama_tabel except select nama_kolom from nama_tabel;
Perintah INTERSECT hanya akan menampilkan seluruh isi dari data yang memiliki kesaman diantara hasil kedua query tersebut. Berikut struktur query penggunaan INTERSECT :
select nama_kolom from nama_tabel except select nama_kolom from nama_tabel;
Dari uraian materi tentang UNION, EXCEPT dan INTERSECT dapat digambarkan sebagai berikut :
Sedangkan pada MySQL tidak ada perintah EXCEPT dan INTERSECT, namun digantikan dengan IN untuk INTERSECT dan NOT IN untuk EXCEPT. Syarat tabelnya harus terdiri hanya 1 field/ kolom saja.
IN/ INTERSECT query sebagai berikut:
SELECT * FROM tabel1 WHERE nama_field IN (SELECT * FROM tabel2);
NOT IN/ EXCEPT query sebagai berikut:
SELECT * FROM tabel1 WHERE nama_field NOT IN (SELECT * FROM tabel2);
SELECT * FROM tabel1 WHERE nama_field IN (SELECT * FROM tabel2);
NOT IN/ EXCEPT query sebagai berikut:
SELECT * FROM tabel1 WHERE nama_field NOT IN (SELECT * FROM tabel2);
Tugas Praktikum
Persiapan praktek : Gunakan tabel mahasiswa dan fakultas pada pertemuan 3. Tambahkan kolom gender di tabel mahasiswa kemudian update data mahasiswa. Insert data mahasiswa hingga 7 baris.
1. Berdasarkan tabel sebelumnya yaitu bab 3, tampilkan data mahasiswa dengan nama dari kolomnya berubah menjadi nomor_identitas, nama, alamat,nama_fakultas tanpa harus merubah nama kolom secara permanen.
2. Tampilkan nama mahasiswa fakultas saintek yang berjenis kelamin laki-laki. Kemudian nama mahasiswa fakultas saintek atau berjenis kelamin laki-laki
3. Suatu tabel mahasiswa terdapat 7 baris data mahasiswa. Tampilkan data mahasiswa dari nomor 3 sampai dengan 5, kemudian tampilkan juga data mahasiswa yang bukan dari nomor 3 sampai dengan 5 menggunakan between dan tanpa menggunakan between.
4. Tampilkan mahasiswa dengan nomor 2,3,5 menggunakan operator IN.
5. Tampilkan semua data mahasiswa yang namanya mempunyai awalan huruf “a”.
6. Tampilkan semua data mahasiswa yang namanya mempunyai akhiran “a” dan huruf ke-3 dari nama tersebut terdapat huruf “n”.
7. Tampilkan nomor fakultas di tabel mahasiswa dengan nomor harus tidak ada yang sama dari baris pertama sampai akhir.
8. Tampilkan data mahasiswa 3 baris saja.
9. Tampilkan data mahasiswa dengan ciri-ciri memiliki nama awalan a kemudian kata selanjutnya boleh r atau boleh t atau boleh d. misalkan yang memenuhi kriteria ciri tersebut seperti adi, atik, arif, adam dll.
*Boleh dengan awalan dan ciri yang lain namun karakteristiknya harus sesuai soal
10. Buatlah tabel dengan nama organ_dalam dan organ_luar sebagai berikut :
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 menggunakan UNION, EXCEPT dan
INTERSECT
Tugas Rumah
1. Buat laporan, Tampilkan perintah-perintah SQL menggunakan DBMS MYSQL
beserta hasilnya di blog anda. Perintahnya sesuai dengan tugas praktikum 1-10.
2. Jelaskan evaluasi dari DBMS MySQL dan PostgreSQL dalam blog anda berdasarkan
tugas praktikum 1-10. (evaluasi meliputi perbedaan atau kesamaan, kelebihan atau
kekurangan, tambahan dari penulis)
Jawaban
kita tampilkan tabel mahasiswa pada pertemuan ke3, jika belum mari kita membuat dari awal lagi.
setelah itu menampilkan tabel mahasiswa dengan nama dari kolomnya secara sementara menjadi nomor_identitas, nama, alamat, nama_fakultas dengan query :
select nim_mah as nomor identitas, nama_mah as nama, alamat_mah as alamat, nama_fak as nama_fakultas from mahasiswa, fakultas where mahasiswa.id_fak=fakultas.id_fak;
menampilkan nama mahasiswa fakultas saintek yang ber gender laki laki maka:
select*from mahasiswa where id_fak=65 and gender='L';
sama dengan diatas hanya saja diantaranya terdapat kata "atau" maka;
select*from mahasiswa where id_fak=65 or gender='L';
manampilkan data mahasiswa dari no 3-5, menggunakan between maka:
select*from mahasiswa where nim_mah between 14 and 16;
dan bukan between:
select*from mahasiswa where nim_mah>=14 and nim_mah<=16;
menampilkan mahasiswa yang bukan dari no3-5 menggunakan not between
select*from mahasiswa where nim_mah not between 14 and 16;
menampilkan mahasiswa dengan nomor 2,3,5 menggunakan operator IN:
select*from mahasiswa where nim_mah in(15,16,18);
menampilkan semua data mahasiswa yang namanya awalan huruf "a":
select*from mahasiswa where nama_mah like 'a%';
menampilkan data mahasiswa yang berakhiran "a" dan huruf ketiganya adalah "n":
select*from mahasiswa where nama_mah like '___n%a';
menampilkan nomor fakultas di tabel mahasiswa dengan nomor tidak boleh ada yang sama:
select distinct id_fak from mahasiswa;
menampilkan mahasiswa 3 baris :
select*from mahasiswa limit 3;
menampilkan data mahasiswa yang awalannya "a" lalu "t" dan juga "d":
select*from mahasiswa where nama_mah regexp 'a[dt]';
membuat tabel organ dalam:
create table organ_dalam (nomor integer not null, nama varchar(15));
insert into organ_dalam values (1,'jantung'),(2,'paru-paru'),(3,'tenggorokan');
membuat tabel organ luar:
create table organ_luar (nomor integer not null, nama varchar(15));
insert into organ_luar (1,'hidung'),(2,'mata"),(3,'tenggorokan');
union
select*from organ_dalam select*from organ_luar;
except
select*from organ_dalam where(nomor,nama) not in (select*from organ_luar);
intersect
Select*from organ_dalam where (nomor,nama) in (select*from organ_luar);
Perbandingan MySQL dan PostgreSQL
1.pada regexp
pada MySql:
select*from mahasiswa where nama_mah regexp 'a[dt]';
pada postgreSql:
select*from mahasiswa where nama ~'a[dt]';
2.pada except
pada MySql:
select*from organ_dalam where(nomor, nama) not in (select*from organ_luar);
pada postgresQl:
select*from organ_dalam except select*from organ_luar;
3.pada intersect
pada MySql:
select*from organ_dalam where(nomor, nama)in(select*from organ_luar);
pada postgreSql:
select*from organ_dalam intersect select*from organ_luar;
Kesimpulan
Dari beberapa data dan percobaan di atas menunjukkan bahwasanya dalam bab ini, yaitu bab “Pengenalan Operator Dasar”, kedua DBMS ini memiliki beberapa perbedaan diantaranya adalah pada pengoprasian REGEXP, terdapat sedikit perbedaan antara kedua DBMS ini, pada PostgreSQL operator REGEXP dituliskan dalam bentuk simbol ( ~ ), tapi apabila dalam MySQL operator REGEXP tidak di tulis dalam simbol tetapi ditulis operatornya langsung yaitu dengan menuliskan (REGEXP) saat penulisan querynya. Selanjutnya, pada perintah INTERSECT dan EXCEPT terdapat perbedaan yang sangat jauh, apabila pada PostgreSQL disediakan sendiri perintah INTERSECT dan EXCEPT, tetapi jika di MySQL perintah INTERSECT dan EXCEPT tidak di sediakan. Jadi untuk mendapatkan perintah ini kita bisa menggunakan operatop IN untuk INTERSECT dan NOT IN untuk EXCEPT.
Daftar Pustaka
Sutanta Edhy, 2011, Basis Data Dalam Tinjauan Konseptual. Yogyakarta: Andi
Kadir Abdul, 2000, Konsep & Tuntutan Praktis Basis Data, Yogyakarta: Andi
Hindro H, 2012. Media Pengetahuan Teknologi Informasi http://www.termasmedia.com \\diakses tanggal 2 Oktober 2013.
Radit, 2011, Operator Dasar SQL http://raditz21.blogspot.com/2011/10/pengenalan-operator-dasar-di-sql-shell.html \\diakses tanggal 2 Oktober 2013
Sutanta Edhy, 2011, Basis Data Dalam Tinjauan Konseptual. Yogyakarta: Andi
Kadir Abdul, 2000, Konsep & Tuntutan Praktis Basis Data, Yogyakarta: Andi
Hindro H, 2012. Media Pengetahuan Teknologi Informasi http://www.termasmedia.com \\diakses tanggal 2 Oktober 2013.
Radit, 2011, Operator Dasar SQL http://raditz21.blogspot.com/2011/10/pengenalan-operator-dasar-di-sql-shell.html \\diakses tanggal 2 Oktober 2013
Training Scriptcase di Indonesia, kunjungi www.OwenSolution.com
BalasHapus