SQL Select
SQL Select
SQL yang merupakan singkatan dari Structured Query Language, yaitu bahasa komputer
standar yang digunakan untuk berinteraksi dengan suatu sistem database - atau lebih
tepatnya sistem manajemen database relasional. Jadi, user dapat menambahkan, mengubah,
mengupdate, mencari dan menghapus data dari suatu sistem database dengan menggunakan
SQL.
SQL dilafalkan dengan membaca tiap karakternya S Q L (es kiu el) atau sikuel.
Data Definition Language (DDL), yaitu berbagai perintah yang berfungsi lebih kepada
memanipulasi struktur database, seperti Membuat (CREATE), meubah (ALTER), dan
menghapus (DROP) struktur penyimpanan data, yaitu database, table, kolom dan tipe data.
Data Manipulation Language (DML), yaitu berbagai perintah yang digunakan untuk
Menyisipkan data (INSERT), Mengambil data atau query (SELECT), Meubah data (UPDATE)
dan Menghapus data (DELETE).
Berikut adalah satu contoh query atau perintah untuk mengambil data:
SELECT nama_produk FROM ms_produk;
Dengan perintah tersebut, sistem database akan mengerti bahwa ‘dia’ harus menampilkan
data ‘nama_produk’ dari suatu tabel yang namanya ‘ms_produk’ seperti berikut.
nama_produk
------------------------------------
Kotak Pensil DQLab
Flashdisk DQLab 64 GB
Gift Voucher DQLab 100rb
Flashdisk DQLab 32 GB
Gift Voucher DQLab 250rb
Pulpen Multifunction + Laser DQLab
Tas Travel Organizer DQLab
Gantungan Kunci DQLab
Buku Planner Agenda DQLab
Sticky Notes DQLab 500 sheets
Terlihat ada sepuluh nama peralatan kantor dengan label DQLab yang ditampilkan. Ini
menunjukkan bahwa interaksi antara SQL dan sistem database telah berjalan dengan baik.
Aku mengangguk sembari mengangkat modul. Selagi ada Senja, aku pun penasaran untuk
bertanya. “Nja, kenapa sih data analyst perlu memahami SQL? Bukankah ada tools lain untuk
analisis data, tapi kenapa harus SQL?”
“Begini, Aksara. Pada dasarnya, setiap perusahaan memiliki sistem penyimpanan data,
khususnya untuk perusahaan yang memiliki sistem IT. Sistem penyimpanan ini bukan di
komputer atau laptop dalam bentuk file atau folder, tetapi di suatu sistem database. Nah,
sistem database ini biasanya diakses menggunakan SQL. Sebagai analyst, tugas kita tidak
hanya menganalisa data yang sudah tersedia tetapi juga mampu untuk mengambil,
memodifikasi dan mengakses sendiri data tersebut dari sumber datanya, yaitu dari database,”
jelas Senja dengan rinci. Bahkan, ia juga sempat memberiku buku catatannya padaku.
“Nih coba kamu baca. Selain yang tadi kujelaskan, penguasaan SQL akan membantu
perusahaan pada area berikut,” tunjuk Senja pada salah satu halaman buku catatannya:
“Jadi, untuk beberapa alasan inilah, maka tidak heran SQL menjadi keterampilan utama yang
diminta oleh banyak perusahaan?” ujarku menyimpulkan.
Semua informasi ataupun analisa yang dibutuhkan oleh manajemen, umumnya bersumber
dan diolah dari data DBMS ini. Dan di perusahaan, sistem database biasanya tidak hanya
satu, bisa dua, tiga bahkan puluhan. Oleh karena itu, SQL sangat berperan disini, karena
dengan menggunakan SQL dapat memenuhi kebutuhan manajemen tersebut. Tanpa
penguasaan SQL akan kesulitan memperoleh data yang dibutuhkan, dan akan kesulitan
dalam melakukan analisa dan menghasilkan informasi yang dibutuhkan manajemen dan
perusahaan.
Akan tetapi, perlu diketahui bahwa tidak semua sistem database mendukung SQL. Hanya
sistem database berbasis relational database management system (RDBMS) yang mendukung
bahasa ini. Untuk RDBMS sendiri akan dijelaskan kemudian.
Kesimpulan
SQL singkatan dari Structured Query Language, adalah sebuah bahasa komputer sederhana
yang menjadi standar untuk memungkinkan seseorang berkomunikasi dengan suatu sistem
database manajemen relasional (RDBMS).
Karena RDBMS bisa dikatakan digunakan oleh sistem IT oleh seluruh perusahaan di dunia
dan di Indonesia, maka pengetahuan SQL menjadi aset yang penting di perusahaan.
Walaupun sederhana, aspek SQL sangat luas.
Aku semangat sekali, karena pada module Fundamental SQL using SELECT statement, aku
akan mempelajari proses pengambilan data dengan pendekatan best practice yang dibutuhkan
oleh mayoritas perusahaan di dunia dan Indonesia.
Pendahuluan
“Dasar mengenai SQL sudah cukup paham, Aksara?”
“Sudah, ini baru saja selesai baca dan latihan soal,” sahutku sembari membuka halaman baru
modul.
Basis data relasional sendiri merupakan suatu jenis database dimana data – data umumnya
disimpan dalam bentuk yang terstruktur berupa tabel (baris dan kolom) dan setiap tabel/ data
yang terdapat dalam database memiliki relasi (relational) satu sama lain. Seperti terlihat pada
gambar berikut
Basis data relasional sangat popular dan banyak digunakan oleh perusahaan – perusahaan
karena jenis database ini mudah dikelola terlebih jika memiliki banyak data atau informasi
yang perlu disimpan, scalable dan flexibel.
Basis data rasional cukup mudah dikelola. Setiap tabel/data dapat diupdate atau
dimodifikasi tanpa mengganggu tabel/data yang lain.
Flexible : jika perlu memperbarui data, hanya perlu melakukannya sekali saja - jadi
tidak perlu lagi mengubah banyak file satu per satu. Selain itu, basis data rasional juga
cukup mudah untuk di-extend. Misalnya saat data sudah semakin banyak, dapat
dengan mudah memperbesar kapasitas dari database yang dimiliki.
1. MySQL
Open-source SQL database yang cukup populer. Umumnya digunakan untuk
pengembangan aplikasi web.
2. PostgreSQL
Open-source RDBMS product, dan juga umumnya digunakan untuk pengembangan
aplikasi web. Akan tetapi secara kinerja, postgreSQL lebih lambat dibandingkan
MySQL.
3. Oracle DB
Produk RDBMS yang dimiliki oleh Oracle Corporation dan produk ini bersifat
proprietary atau tidak open source. Oracle DB umumnya digunakan di industri
perbankan.
5. SQLite
Open source RDBMS, umumnya digunakan sebagai database di handphone, MP3
player, and perangkat lainnya.
Selain itu, juga ada MariaDB yang juga gratis atau open source, IBM DB2, Microsoft Access,
dan masih banyak lainnya.
Umumnya RDBMS menggunakan SQL untuk mengakses database dan produk RDBMS tidak
hanya satu macam saja tetapi ada berbagai macam produk, maka SQL syntax pun bisa jadi
sedikit berbeda untuk setiap produk tersebut. Berikut contoh perbandingan MySQL, Oracle,
dan SQLSERVER untuk menampilkan beberapa baris data dari suatu tabel :
Database
Tabel (table)
Kolom (column) atau Field
Dari sini aku belajar informasi menarik yaitu setiap database bisa berisi beberapa tabel, dan
setiap tabel bisa terdiri dari beberapa kolom. Di setiap database, tabel dan kolom memiliki
nama sendiri sebagai identitas mereka. Tabel dan kolom inilah yang akan diisi data yang
kemudian membentuk row (baris data).
Jika aku perhatikan, struktur tabel ms_produk terdiri dari empat kolom (column), masing-
masing dengan nama berikut:
no_urut
kode_produk
nama_produk
harga
Dan dalam tabel tersebut terdapat 10 baris data (row) dengan isi data yang bervariasi, contoh
isi data untuk kolom "nama_produk" pada baris kelima adalah "Gift Voucher DQLab
250rb".
Klik tombol Next untuk melanjutkan ke kuis untuk menguji pemahaman sejauh ini.
Kesimpulan
Wah ternyata seru sekali belajar SQL!
Aku mulai membuka catataanku, mengambil pena, dan menuliskan apa yang aku pelajari:
Pendahuluan
“Nja, aku sudah selesai dengan SQL dan RDMS. Sekarang mau lanjut ke materi SELECT.
Ada catatan penting darimu soal materi lanjutan ini?” tanyaku karena biasanya Senja punya
catatan khusus untuk tiap materi.
“Oh, sudah? Kalau mau pakai perintah SELECT untuk akses data, lebih baik belajarnya
langsung praktik. Sini perhatikan, sambil bawa modulnya,” tawar Senja.
Nah, kan! Apa kubilang. Senja pasti punya catatan khusus sekaligus metode belajar sendiri
untuk tiap materi. Enggak salah aku nanya dulu.
Senja juga menunjukkan padaku Query dasar dan sederhana perintah SELECT yang
berfungsi untuk menampilkan seluruh kolom, sebagai berikut:
Kata awal, yaitu SELECT digunakan untuk menginformasikan kepada sistem bahwa
kita ingin mengambil data.
Tanda * (bintang) artinya seluruh kolom perlu diambil dari tabel yang dirujuk. Tanda
ini sering juga disebut sebagai wildcard.
FROM [NAMA_TABLE], artinya table yang akan diambil datanya.
Tanda ; (titik koma) adalah tanda yang menyatakan akhir dari perintah SELECT atau
SQL lain.
Senja mengajak aku untuk langsung mempraktekkan perintah SQL SELECT untuk
menampilkan data pada tabel yang bernama ms_produk.
Jika aku menjalankan tombol RUN, maka aku akan mendapatkan tabel seperti berikut:
“Secara umum penggunaan perintah SELECT untuk mengambil satu kolom dinyatakan oleh
sintaks berikut ini,” ujar Senja sambil menggeser layar laptopnya agar bisa kuperhatikan:
“Kita coba ya dengan menampilkan data pelanggan yang ada di database. Kita sudah
menggunakan perintah SELECT sebelumnya untuk mengambil seluruh kolom. Nah, berikut
adalah contoh query untuk mengambil satu kolom saja yaitu nama_produk,” tambah Senja.
Aku mencatat beberapa tampilan penting yang menjadi contoh dari Senja buatku.
Ketikkan perintah berikut pada code editor dan kemudian klik tombol Run,
Hasilnya, sistem database akan menampilkan data nama_produk saja dari tabel ms_produk
seperti terlihat sebagai berikut.
Terlihat ada sepuluh nama peralatan kantor yang ditampilkan, dan jumlah ini sesuai dengan
jumlah seluruh row yang terdapat pada tabel ms_produk.
Hasilnya, sistem database akan menampilkan data kode_produk, nama_produk dari tabel
ms_produk seperti terlihat sebagai berikut.
Terlihat data dengan dua kolom ditampilkan yaitu kode_produk dan nama_produk. Jumlah
data yang dikeluarkan masih sepuluh, sesuai dengan jumlah seluruh row yang terdapat pada
tabel ms_produk.
Tugas:
Sekarang gantilah perintah SELECT di code editor untuk menampilkan nama_produk dan
harga dari tabel yang sama. Ingat untuk memisahkan setiap kolom dengan comma (,).
Jika berjalan dengan lancar, maka hasilnya akan terlihat sebagai berikut.
Sebagai contoh, aku bisa menggunakan perintah LIMIT untuk membatasi pengambilan data
dari tabel ms_produk sebanyak tiga baris data (row).
Jika berjalan dengan lancar, akan terlihat hasil tiga data pertama yang ditampilkan seperti
berikut.
Terlihat hanya tiga baris data pertama yang ditampilkan dari keseluruhan sepuluh baris data
yang ada.
Tugas:
Jika perintah yang diketikkan berjalan dengan benar, maka Live Code Editor Console akan
menampilkan hasil seperti berikut.
Berikut syntax-nya:
Aku langsung mempraktikkan syntax SELECT DISTINCT untuk mengambil data pelanggan
dan menghilangkan duplikasi data.
Tugas:
Tampilkan nama_customer dan alamat dari tabel ms_pelanggan dan hilangkan data
duplikat. Jika benar, maka Live Code Editor akan menampilkan tabel seperti berikut pada
console.
Jika dihitung jumlah row data yang berbeda maka diperoleh ada 10 row data berbeda dari
tabel ms_pelanggan.
Kesimpulan
Aku mengambil catatanku, dan mulai menulis apa yang aku pelajari, sebelum aku
melanjutkan belajarku:
1. Perintah SELECT dapat digunakan untuk menentukan apa saja kolom yang akan
diambil dengan menuliskan nama-nama kolom yang diinginkan menggunakan
pemisah tanda koma.
2. Perintah SELECT juga dapat digunakan untuk membatasi jumlah data yang
dikeluarkan. Namun untuk berbagai produk bisa berbeda penulisannya. MySQL
menggunakan LIMIT untuk tujuan tersebut.
3. Perintah SELECT DISTINCT dapat digunakan untuk menghilangkan duplikasi baris
dalam tabel dan hanya menampilkan baris data yang unik tanpa duplikasi.
Pendahuluan
Sejauh ini, aku sudah cukup paham cara menggunakan SQL dengan perintah SELECT,
terutama untuk mengakses data dari database. Aku pun berniat untuk mengambil dan
menganalisis data produk dengan syntax yang ada:
Beberapa detik aku termenung melihat syntax ini. Mengapa ada ‘t1’, dan ‘AS’? Apa
maksudnya? Aku terdorong untuk bertanya kembali pada Senja.
“Nja, sorry gangguin kamu lagi. Aku lagi mau nyoba latihan nih. Tapi aku nemu syntax ini
dan agak bingung terutama karena ada ‘t1’, dan ‘AS’. Maksudnya?”
“Oh, ini hanya variasi penggunaan nama table dan kolom pada bagian SELECT. Sini saya
kasih tahu.”
Prefix, dimana kita akan menambahkan nama tabel di depan nama kolom.
Alias, dimana kita memberikan alias atau nama lain untuk tabel maupun kolom.
Aku masih menyimak pada layar laptop Senja yang menunjukkan syntax dasar dari
penggunaan prefix pada nama kolom.
Untuk mengambil nama kolom nama_produk data dari tabel ms_produk dengan penulisan
prefix nama tabel adalah sebagai berikut.
Penggunaan nama lengkap prefix ini akan sangat berguna ketika ingin mengidentifikasi data
dari beberapa tabel, yang akan dipelajari pada course SQL untuk topik JOIN.
Tugas:
Gantilah seluruh code yang ada pada code editor dengan perintah SELECT untuk
menampilkan kolom kode_produk dari tabel ms_produk dengan penulisan menggunakan
prefix nama tabel.
Jika berjalan dengan lancar maka hasilnya akan terlihat sebagai berikut.
Berikut adalah contoh untuk mengubah nama kolom dari kode_produk menjadi
product_code dari table ms_produk.
Ketik dan jalankan code tersebut pada code editor, jika berjalan dengan lancar akan muncul
hasil sebagai berikut.
Terlihat kolom kode_produk telah berubah nama menjadi product_code.
Tugas:
Coba ubah perintah SELECT di atas untuk mengubah nama kolom dengan details berikut:
Klik tombol untuk melanjutkan.
Berikut adalah contoh yang sama dari sub-chapter sebelumnya, dimana untuk mengubah
nama kolom dari kode_produk menjadi product_code dari tabel ms_produk dapat
dilakukan tanpa menggunakan alias.
Tugas:
Jika berjalan lancar, maka Live Code Editor akan menampilkan hasil berikut:
Aku menerapkannya dengan tabel ms_produk, menggunakan prefix nama tabel dan alias
untuk merubah nama_produk menjadi nama.
Tampilkan kolom harga dari tabel ms_produk dengan nama alias harga_jual lengkap
dengan prefix.
Jika berjalan dengan lancar, Live Code Editor akan mengeluarkan hasil sebagai berikut.
Berikut adalah contoh untuk menggunakan alias pada tabel ms_produk menjadi t1.
Tugas:
Ganti nama tabel ms_produk menjadi t2 dan tampilkan seluruh isinya tanpa menggunakan
keyword AS.
“Nja, kalau kita menggunakan alias tabel, maka nama prefix yang digunakan untuk kolom
adalah alias tabel dan bukan nama original tabel, seperti yang ditunjukkan berikut ini.
Gimana hasilnya?”
“Penggunaan nama original tabel sebagai prefix akan menimbulkan error saat query
dijalankan karena dengan penggunaan alias, nama tabel secara temporary sudah di-gantikan
oleh alias, Aksara,” jawab Senja lugas.
Mari lihat contoh berikut ini dari tabel ms_produk yang telah digunakan sebelumnya
Jalankan dan jika berhasil dengan baik maka akan memunculkan hasil berikut.
Jika kolom dan tabel memiliki alias, dapat dilakukan dengan mengetikkan perintah berikut di
code editor
“Oke, Nja. Sekarang aku sudah paham syntax query,” ujarku bersemangat.
Dari apa yang ditunjukkan Senja, aku bisa mengetahui kalau Senja menggunakan alias tabel
yaitu t1, prefix untuk kolom adalah t1, dan alias untuk nama kolom. Maka itu, hasil yang
diperoleh dengan menjalankan query adalah seperti ini:
Tugas:
Gantilah perintah pada code editor dengan nama alias t2 - tanpa menggunakan keyword AS
- untuk tabel ms_produk dan menampilkan kolom nama_produk dan harga, lengkap dengan
prefix alias.
Kesimpulan
Aku kembali mengambil catatanku dan menuliskan apa yang telah aku pelajari:
1. Perintah SELECT dapat ditulis dengan variasi identitas kolom dan tabel berupa prefix
dan alias.
o Penulisan lengkap untuk nama kolom adalah prefix berupa nama tabel disertai
tanda titik sebelum nama kolom itu sendiri.
o Alias adalah nama lain yang diberikan untuk kolom maupun tabel.
o Alias dapat digunakan dengan keyword AS atau tanpa keyword AS setelah
nama kolom dan tabel.
o Prefix nama tabel bisa menggunakan alias.
Pemahaman mengenai prefix dan alias akan mendorong kemampuan identifikasi tabel
maupun kolom yang terlibat untuk perintah SELECT yang lebih kompleks.
Pendahuluan
“Nja, sampai sini aku sudah paham bagaimana menggunakan alias dan prefix. Tapi aku
masih ada pertanyaan. Terkadang kita hanya ingin menampilkan data berdasarkan kondisi
tertentu, jadi kita tidak butuh semua data dari tabel. Kalau seperti itu, berarti kita hanya ingin
mengambil data produk dengan nama produk tertentu. Nah, di SQL caranya gimana ya?”
tanyaku. Hal ini sedari tadi membuatku penasaran.
“Untuk case dimana kita ingin mengambil data berdasarkan kondisi tertentu saja, kita bisa
menggunakan filter. SQL memiliki fungsi filter dengan menggunakan klausul WHERE. Jika
kondisi WHERE terpenuhi, maka hasil query hanya akan menampilkan data yang sudah
terfilter.”
Seperti biasa, aku akan lebih memahami Senja jika ada praktik yang menyertai
penjelasannya. Jadi kusampaikan saja, “Nja, boleh sekalian praktik enggak?”
Senja hanya tersenyum dan hafal kebiasaanku. “Oke, biar lebih mudah dipahami, selanjutnya
kita akan mempraktikkan bagaimana menggunakan klausul WHERE.”
Menggunakan WHERE
Klausul WHERE dari SELECT digunakan untuk memfilter data berdasarkan kondisi tertentu.
Untuk syntax lengkapnya adalah sebagai berikut.
Jika dijalankan dengan baik, Live Code Editor akan menampilkan hasil berikut.
Terlihat hanya satu baris data saja yang dikeluarkan dari total sepuluh, yaitu data dimana
kolom nama_produk berisi nilai 'Gantungan Kunci DQLab'.
Tugas:
Cobalah ubah perintah SELECT pada code editor untuk mengeluarkan data dengan
nama_produk bernilai 'Tas Travel Organizer DQLab'. Jika semua berjalan dengan lancar,
maka hasilnya akan terlihat sebagai berikut.
Menggunakan Operand OR
Pada subbab sebelumnya, aku telah menggunakan filter teks sederhana untuk mengeluarkan
data masing-masing dengan nama_produk 'Gantungan Kunci DQLab' dan 'Tas Travel
Organizer DQLab'.
Pertanyaannya, bagaimana jika ingin mengeluarkan keduanya sekaligus? Aku bisa
menggunakan Operand OR.
Untuk memunculkan hasil query yang memuat data produk dengan nama_produk 'Gantungan
Kunci DQLab' dan 'Tas Travel Organizer DQLab', aku dapat menggunakan logika sederhana,
yaitu: Aku perlu mengambil data dengan kondisi nama_produk itu bernilai 'Gantungan Kunci
DQLab' ATAU 'Tas Travel Organizer DQLab'. Logika ini bisa dinotasikan dengan
menggunakan logika OR.
Sehingga, dengan menggunakan logika OR, aku dapat menggabungkan dua atau lebih
kondisi untuk memfilter data. Jadi, untuk menyelesaikan problem yaitu memunculkan data
dengan kondisi kolom nama_produk bernilai 'Gantungan Kunci DQLab' ATAU 'Tas Travel
Organizer DQLab', dapat menggunakan syntax berikut:
Jika dijalankan dengan baik maka hasilnya akan tampak sebagai berikut.
Terlihat bukan hanya satu baris data, tapi terdapat dua baris data yang diambil karena
memenuhi kondisi yang diberikan pada perintah SELECT.
Tugas:
Tambahkan nama_produk 'Flashdisk DQLab 64 GB' ke dalam tabel. Jika berjalan dengan
lancar, maka hasilnya terlihat sebagai berikut.
Berikut adalah contoh filter dimana kolom harga harus memiliki nilai di bawah 50000.
Jika dijalankan, maka aku akan mendapatkan tiga baris data sebagai berikut.
Terlihat seluruh data yang diambil memiliki kondisi harga di bawah 50000.
Tugas:
Tampilkan informasi dengan harga diatas 50000. Jika berjalan dengan lancar, maka akan
mendapatkan hasil berikut.
Berikut adalah contoh dimana kedua kondisi digunakan dengan penghubung AND.
Jika dijalankan dengan baik, maka akan menampilkan
Iya, karena tidak ada nama_produk yang mengandung “Gantungan Kunci DQLab” dan
dengan harga di atas 50,000, sehingga tidak ada hasil yang keluar karena kedua kondisi
tersebut tidak terpenuhi.
Tugas:
Cobalah ganti kondisi contoh di atas dimana harga menjadi lebih kecil dari 50000, dengan
nama_produk yang sama.
Kali ini jika dijalankan maka akan memunculkan satu data sebagai berikut.
Kesimpulan
Wah, semakin seru saja nih belajar SQL! Sebelum aku lupa, aku mencatat apa yang aku
pelajari tadi. Siapa yang punya kebiasaan seperti aku? Dengan mencatat apa yang aku
pelajari, aku merasa ilmu yang aku pelajari tadi lebih mudah untuk aku pahami.
CONTOH SOAL
Format datanya yang akan kamu tampilkan adalah: kode_pelanggan, nama_produk, qty,
harga, dan total, serta diurutkan mulai dari total revenue terbesar,” pinta Senja padaku.
Kalau kasusnya seperti ini, berarti aku perlu meng-query data tersebut dari tabel
tr_penjualan yang terdapat di database perusahaan.
perkalian antara kolom qty dan harga untuk memperoleh total revenue setiap kode
pelanggan yang dinyatakan ke dalam kolom total, dan
menggunakan “ORDER BY total DESC” pada akhir query untuk mengurutkan data.
Aku pun menerima tantangan proyek ini! Senja pun segera mengirim detailnya melalui email
yang berisi contoh tabel sebagai berikut untuk segera kukerjakan.
JAWABAN:
Hasil Belajarku
Wah seru sekali bagian pertama dari Module SQL ini! Dari materi yang telah aku pelajari
dalam 'Fundemental SQL using SELECT Statement', aku telah memahami dan mampu
mempraktekkan:
Dengan kemampuan ini, aku telah siap untuk mengambil dan mengolah data secara
sederhana. Keterampilan ini sendiri adalah 60% aktivitas awal yang akan dilakukan seorang
analis.
Semangat belajar!