Assalamu'alaikum,
teman-teman sekarang kita akan membahas tentang operator dasar SQL. Seperti
biasanya, saya akan menggunakan DBMS PostgreSQL dan MySQL, lalu kita lihat
perbandingannya di akhir praktikum nanti. Oke kita mulai!
A. Dasar Teori
Operator dasar pada SQL ada banyak, kali ini akan saya bahas
beberapa diantarnya,
1.
Operator
AS
Operator AS digunakan untuk menampilkan nama
kolom dengan nama lain, tetapi nama kolom yang asli tidak berubah. Struktur
query operator AS secara umum yaitu
SELECT
namakolomlama AS namakolombaru FROM namatabel;
2.
Operator
AND dan OR
Operator OR
digunakan untuk memilih baris yang memenuhi setidaknya satu dari kondisi yang
diberikan, kita dapat menggunakan operator logis, OR. Jika ingin memilih baris
yang harus memenuhi semua kondisi yang diberikan, Anda dapat menggunakan
operator logis, AND. Struktur query operator AND dan OR secara umum yaitu
select * from namatabel where namakolom = ‘pencarian 1’ [operator
AND atau OR] namakolom = ‘pencarian 2’;
3.
Operator
BETWEEN
BETWEEN digunakan untuk menentukan lebar nilai dari nilai
terendah dan nilai tertinggi. Pada BETWEEN menggunakan operator
pembanding seperti >, <, >=, <=, =, <> atau !=. Bisa juga
menggunakan NOT BETWEEN untuk lawan dari BETWEEN. Struktur query operator
BETWEEN secara umum yaitu
select * from nama_tabel where nama_kolom between ‘nilai_awal’ and
‘nilai_akhir’;
4.
Operator
IN dan NOT IN
Operator IN berguna melakukan pencocokan dengan salah satu yang ada
pada suatu daftar nilai. Bisa juga menggunakan NOT IN untuk lawan dari IN.
Struktur querynya secara umum yaitu
Select
* from nama_tabel where nama_kolom in (kata_kunci1, kata_kunci2);
5.
Operator
LIKE
Operator ini menggunakan mode pencarian berdasarkan huruf awal atau
huruf akhir atau kombinasi dari keduanya dari data yang diinginkan. Untuk
tujuan ini kita menggunakan karakter wildcard '%'. Struktur querynya secara
umum yaitu
select * from nama_tabel where nama_kolom like ‘operator’;
6.
Operator
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. Kalau di PostgreSQL menggunakan symbol
“ ~ ”.
SELECT nama_kolom_tampil
FROM nama_tabel WHERE nama_kolom_cari REGEXP keyword_reguler_expression
7.
Operator DISTINCT
Operator DISTINCT, operator ini digunakan untuk menampilkan data
tanpa duplikasi data pada suatu kolom, jika terdapat duplikasi data maka yang
ditampilkan hanya satu data saja. Operator ini dapat mengurangi redudansi data.
select
distinct nama_kolom from nama_tabel;
8.
Operator LIMIT and OFFSET
Kegunaan operator LIMIT terletak pada pembatasan atas jumlah data
yang boleh ditampilkan, contohnya kita hanya ingin menampilkan 3 data pada
tbl_anggota, maka hanya 3 data terataslah yang akan ditampilkan. Apabila
operator LIMIT yang membatasi jumlah data yang ditampilkan, operator ini adalah
kebalikannya , dia akan menghilangkan jumlah data yang akan ditampilkan dan
menampilkan sisa dari data yang dihilangkan.
select
* from nama_tabel [limit atau offset] 2;
9.
UNION,
EXCEPT dan INTERSECT
UNION merupakan operator yang digunakan untuk menggabungkan hasil query,
dengan ketentuan jumlah, nama dan tipe kolom dari masing-masing tabel yang akan
ditampilkan datanya harus sama.
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;
INTERSECT merupakan operator yang digunakan untuk memperoleh data
dari dua buah query dimana data yang ditampilkan adalah yang memenuhi
kedua query tersebut dengan ketentuan jumlah, nama dan tipe kolom dari
masing-masing tabel yang akan ditampilkan datanya harus sama.
SELECT * FROM namatabel1 INTERSECT SELECT * FROM namatabel2;
Untuk MySQL, menggunakan operator IN.
EXCEPT merupakan operator yang digunakan untuk memperoleh data dari
dua buah query dimana data yang ditampilkan adalah data yang ada pada
hasil query 1 dan tidak terdapat pada data dari hasil query 2
dengan ketentuan jumlah, nama dan tipe kolom dari masing-masing tabel yang akan
ditampilkan datanya harus sama.
SELECT * FROM namatabel1 EXCEPT SELECT * FROM namatabel2;
Untuk
MySQL, menggunakan operator NOT IN.
B. Hasil Praktikum
Dalam
bagian ini, saya akan menjawab soal praktikum di kelas praktikum saya di
praktikum desain basis data.
Berikut
ini adalah tugas praktikum saya.
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 :
Tabel organ_dalam
Nomor Nama
1 Jantung
2 Paru-Paru
3 Tenggorokan
Tabel organ_luar
Nomor Nama
1 Hidung
2 Mata
3 Tenggorokan
Tampilkan data dari kedua tabel tersebut menggunakan UNION, EXCEPT
dan INTERSECT.
Untuk menjawab tugas di atas, kita menggunakan PostgreSQL dan
MySQL.
- Menggunakan PostgreSQL
Pertama, kita persiapkan dulu
database dan kita gunakan tabel fakultas dan tabel mahasiswa. Kita insert dulu
nama-nama fakultas. Kemudian kita tambahkan kolom di tabel mahasiswa yang sudah
ada, dengan alter table mahasiswa add column “gender” varchar(2); . Lalu
kita update gender data mahasiswa yang sudah ada dengan update mahasiswa set
gender=’L’ where nim_mah=14; seperti di bawah ini.
Kemudian kita tambahkan data
mahasiswa sampai 7 baris dengan insert into mahasiswa values (15, 'ratna',
'malang', '085708345126',
1, 'P'), (16, 'binta', 'surabaya',
'089765436578', 3, 'P'), (17, 'rizki', 'kedir
i', '089564321786', 1, 'L'), (18,
'hanafi', 'blitar', '087645321786', 4, 'L'), (
19, 'isfa', 'tulungagung',
'085776432007', 2, 'P'), (20, 'kamil', 'tulungagung',
'089765456832', 1, 'L'); seperti di bawah ini.
1.
Untuk
menjawab soal nomor 1, kita gunakan operator AS yaitu 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; seperti di
bawah ini.
2. Menampilkan
nama mahasiswa fakultas saintek yang berjenis kelamin laki-laki. Untuk
menjawabnya kita gunakan operator AND yaitu select*from mahasiswa where
id_fak=1 and gender='L'; . Kemudian nama mahasiswa fakultas saintek atau
berjenis kelamin laki-laki, kita gunakan operator OR yaitu select*from
mahasiswa where id_fak=1 or gender='L'; seperti di bawah ini.
3. Pada
database saya ini, data 3 sampai dengan 5 adalah nim 16, 17, dan 18. Dengan
between querynya select*from mahasiswa where nim_mah between 16 and 18; sedangkan
tanpa menggunakan between querynya select*from mahasiswa where
nim_mah>=16 and nim_mah<=18; seperti di bawah ini.
Untuk
menampilkan data yang bukan 3 sampai 5, dengan menggunakan between querynya select*from
mahasiswa where nim_mah not between 16 and 18; sedangkan tanpa menggunakan
between select*from mahasiswa where nim_mah<16 or nim_mah>18;
4. Untuk
menampilkan data ke 2,3 dan 5, kita gunakan query select*from mahasiswa
where nim_mah in (15, 16, 18); seperti di bawah ini.
5. Untuk
mencari data mahasiswa dengan nama awalan saja, saya menggunakan operator like
dengan awalan I dengan query select*from mahasiswa where nama_mah like 'i%';
6. Untuk
menjawab soal nomor 6, kita bisa gunakan operator regexp dengan query select*from
mahasiswa where nama_mah ~ '..n.a';
Kita
juga bisa menggunakan operator like yaitu select*from mahasiswa where
nama_mah like '__n_a';
7. Untuk
soal nomor 7, yaitu menampilkan nomor fakultas di tabel mahasiswa agar tidak di
ulang kita gunakan operator distinct yaitu select distinct id_fak from
mahasiswa; seperti di bawah ini.
8. Untuk
soal nomor 8, yaitu menampilkan 3 data mahasiswa, kita gunakan operator limit
yaitu select*from mahasiswa limit 3; seperti di bawah ini.
9. Untuk
soal nomor 9, yaitu mencari nama mahasiswa seperti yang dimaksudkan soal kita
gunakan operator regexp lagi yaitu select*from mahasiswa where nama_mah ~
'r[aiu]'; seperti di bawah ini.
10. Untuk
nomor 10, kita buat dulu tabelnya yaitu dengan create table organ_dalam
(nomor integer not null, nama varchar(20)); kemudian masukkan datanya
dengan insert into organ_dalam values (1, 'Jantung'), (2, 'Paru-Paru'),
(3,'Tenggorokan'); Lalu kita gunakan cara yang sama untuk membuat tabel
organ_luar seperti di bawah ini.
Lalu
kita gunakan operator union untuk menggabungkan data keduanya. Kita bisa
menggunakan query select*from organ_dalam union select*from organ_luar; dengan
satu kali perulangan data tenggorokan atau select*from organ_dalam union all
select*from organ_luar; dengan data tenggorokan diulangi sua kali seperti
di bawah ini.
Untuk
except atau menampilkan data yang berbeda dari kedua tabel kita gunakan query select*from
organ_dalam except select*from organ_luar; lalu untuk intersect atau
menampilkan irisan dari kedua tabel querynya select*from organ_dalam
intersect select*from organ_luar; seperti di bawah ini.
- Menggunakan MySQL
Pertama, kita
persiapkan dulu database dan kita gunakan tabel fakultas dan tabel mahasiswa.
Kita insert dulu nama-nama fakultas. Kemudian kita tambahkan kolom di tabel
mahasiswa yang sudah ada, dengan alter table mahasiswa add column
“gender” varchar(2); . Lalu kita update gender data mahasiswa yang sudah
ada dengan update mahasiswa set gender=’L’ where nim_mah=14; seperti di
bawah ini.
Kemudian kita tambahkan data
mahasiswa sampai 7 baris dengan insert into mahasiswa values (15, 'ratna',
'malang', '085708345126',
1, 'P'), (16, 'binta', 'surabaya',
'089765436578', 3, 'P'), (17, 'rizki', 'kedir
i', '089564321786', 1, 'L'), (18,
'hanafi', 'blitar', '087645321786', 4, 'L'), (
19, 'isfa', 'tulungagung',
'085776432007', 2, 'P'), (20, 'kamil', 'tulungagung',
'089765456832', 1, 'L'); seperti di bawah ini.
1.
Untuk
menjawab soal nomor 1, kita gunakan operator AS yaitu 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; seperti
di bawah ini.
2. Menampilkan
nama mahasiswa fakultas saintek yang berjenis kelamin laki-laki. Untuk
menjawabnya kita gunakan operator AND yaitu select*from mahasiswa where
id_fak=1 and gender='L'; . Kemudian nama mahasiswa fakultas saintek atau
berjenis kelamin laki-laki, kita gunakan operator OR yaitu select*from
mahasiswa where id_fak=1 or gender='L'; seperti di bawah ini.
3. Pada
database saya ini, data 3 sampai dengan 5 adalah nim 16, 17, dan 18. Dengan
between querynya select*from mahasiswa where nim_mah between 16 and 18; sedangkan
tanpa menggunakan between querynya select*from mahasiswa where
nim_mah>=16 and nim_mah<=18; seperti di bawah ini.
Untuk
menampilkan data yang bukan 3 sampai 5, dengan menggunakan between querynya select*from
mahasiswa where nim_mah not between 16 and 18; sedangkan tanpa menggunakan
between select*from mahasiswa where nim_mah<16 or nim_mah>18;
4. Untuk
menampilkan data ke 2,3 dan 5, kita gunakan query select*from mahasiswa
where nim_mah in (15, 16, 18); seperti di bawah ini.
5. Untuk
mencari data mahasiswa dengan nama awalan saja, saya menggunakan operator like
dengan awalan I dengan query select*from mahasiswa where nama_mah like 'i%';
6. Untuk
menjawab soal nomor 6, kita bisa gunakan operator regexp dengan query select*from
mahasiswa where nama_mah regexp '..n.a';
Kita
juga bisa menggunakan operator like yaitu select*from mahasiswa where
nama_mah like '__n_a';
7. Untuk
soal nomor 7, yaitu menampilkan nomor fakultas di tabel mahasiswa agar tidak di
ulang kita gunakan operator distinct yaitu select distinct id_fak from
mahasiswa; seperti di bawah ini.
8. Untuk
soal nomor 8, yaitu menampilkan 3 data mahasiswa, kita gunakan operator limit
yaitu select*from mahasiswa limit 3; seperti di bawah ini.
9. Untuk
soal nomor 9, yaitu mencari nama mahasiswa seperti yang dimaksudkan soal kita
gunakan operator regexp lagi yaitu select*from mahasiswa where nama_mah
regexp 'r[aiu]'; seperti di bawah ini.
10. Untuk
omor 10, kita buat dulu tabelnya yaitu dengan create table organ_dalam
(nomor integer not null, nama varchar(20)); kemudian masukkan datanya
dengan insert into organ_dalam values (1, 'Jantung'), (2, 'Paru-Paru'),
(3,'Tenggorokan'); Lalu kita gunakan cara yang sama untuk membuat tabel
organ_luar seperti di bawah ini.
Lalu
kita gunakan operator union untuk menggabungkan data keduanya. Kita bisa
menggunakan query select*from organ_dalam union select*from organ_luar; dengan
satu kali perulangan data tenggorokan atau select*from organ_dalam union all
select*from organ_luar; dengan data tenggorokan diulangi sua kali seperti
di bawah ini.
Untuk
except atau menampilkan data yang berbeda dari kedua tabel kita gunakan query select*from
organ_dalam where nama not in (select nama from organ_luar); lalu untuk
intersect atau menampilkan irisan dari kedua tabel querynya select*from
organ_dalam where nama in (select nama from organ_luar); seperti di bawah
ini.
C.
Tugas Rumah
Tugas rumah kali ini saya ditugaskan untuk menjelaskan evaluasi
dari DBMS MySQL dan PostgreSQL berdasarkan tugas praktikum 1-10. (evaluasi
meliputi perbedaan atau kesamaan, kelebihan atau kekurangan, tambahan dari
penulis).
Dalam praktikum kali ini, postgresql dan mysql memiliki beberapa
persamaan dan beberapa perbedaan dalam struktur querynya. Semua query dari
nomor 1 sampai 10 sama, kecuali beberapa nomor di bawah ini.
Pada
soal nomor 6 dan nomor 9, di postgresql saya harus menggunakan symbol “~” untuk regexp seperti di bawah ini.
sedangkan di mysql saya harus mengetikkan
langsung regexp
Pada bagian
ini, postgresql memiliki keunggulan yaitu memiliki query yang lebih pendek
yaitu hanya dengan symbol ~.
2.
Perbedaan
lain yaitu pada soal nomor 10 untuk menampilkan irisan (intersect) dari 2 tabel
dan perbedaan dari 2 tabel (except).
Postgresql = except : select*from organ_dalam except select*from
organ_luar;
Intersect : select*from organ_dalam intersect select*from organ_luar;
MySQL = except : select*from organ_dalam where nama not in (select nama
from organ_luar);
Intersect : select*from
organ_dalam where nama not in (select nama from organ_luar);
Pada bagian
ini, postgresql lebih unggul dan lebih mudah karena memiliki struktur query
yang lebih sedikit dengan hanya mengetikkan except maupun intersect.
D.
Evaluasi
Perbandingan DBMS MySQL dan DBMS PostgreSQL
Pada tugas rumah di atas sudah saya jelaskan perbandingan di antara
kedua DBMS yaitu PostgreSQL dan MySQL. Kali ini akan saya bahas lagi secara
singkat perbandingannya.
·
Operator
Regexp
PostgreSQL : menggunakan symbol ~ .
MySQL: menggunakan peirintah regexp dengan langsung
mengetiknya tanpa menggunakan symbol seperti postgreSQL.
·
Except
PostgreSQL :
menggunakan perintah seperti select*from organ_dalam except select*from
organ_luar;
MySQL: menggunakan
perintah seperti select*from organ_dalam where nama not in (select nama from
organ_luar);
·
Intersect
PostgreSQL :
menggunakan perintah seperti select*from organ_dalam intersect select*from organ_luar;
MySQL: menggunakan
perintah seperti select*from organ_dalam where nama not in (select nama from
organ_luar);
Menurut saya,
postgresql lebih mudah dan lebih unggul karena memiliki struktur query yang
lebih mudah dipahami dan lebih sederhana.
E.
Kesimpulan,
Saran, Kritik dan Manfaat bagi Pembaca
1.
Kesimpulan
Setelah melakukan praktikum ini, saya dapat mengambil kesimpulan
bahwa operator dasar pada SQL antara lain As, And dan Or, Between, In, Not In,
Like, Limit dan Offset, Distinct, Regexp, Union, Except dan Intersect. Setelah
mempraktikkan operator dasar tersebut menggunakan 2 DMBS yaitu PostgreSQL dan
MySQL terdapat kesamaan dan beberapa perbedaan diantara keduanya. Diantaranya
adalah penggunaan operator Regexp serta operator Union, Except dan Intersect.
2.
Saran
Diperlukan
pembelajaran lebih lanjut mengenai operator-operator dasar SQL dalam database
menggunakan PostgreSQL maupu MySQL agar praktikan dapat menguasai kedua DBMS
tersebut dalam membuat database yang lebih baik.
3.
Kritik
Dalam laporan ini, masih banyak terdapat kekurangan karena
terbatasnya pengetahuan saya dalam menguasai 2 DBMS yang digunakan dalam
praktikum ini.
4.
Manfaat
Manfaat yang
akan didapat pembaca dalam laporan ini antara lain dapat mengetahui operator-operator
dasar SQL secara umum. Pembaca juga dapat mengetahui persamaan dan perbedaan
penggunaan operator dasar dari kedua DBMS tersebut.
0 komentar:
Posting Komentar