Fundamental SQL using SELECT Statement
Halo guys!!! Kali ini aku akan berbagi materi tentang SELECT statement pada SQL. Yuk langsung aja simak materinya!
Structured Query Language
SQL (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. Terdapat dua kategori dari interaksi SQL:
- 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.
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. Penguasaan SQL akan membantu perusahaan pada area berikut:
- Manajemen memerlukan laporan dengan informasi yang semakin beragam, seperti: tren penjualan bulan ke bulan, pertumbuhan pelanggan, apakah perusahaan mencapai target, dan lain-lain. Dan ini membutuhkan keahlian SQL yang mumpuni.
- Programmer yang membangun sistem aplikasi hampir dipastikan selalu bergantung kepada sistem database SQL agar aplikasinya berjalan dengan baik. Dengan demikian, penguasaan SQL adalah hal mutlak.
- Bisa meningkatkan kinerja perusahaan karena informasi yang kaya dapat dihasilkan melalui SQL.
Perusahaan yang sudah menerapkan sistem IT pasti memiliki sistem database dan bisa dipastikan menyimpan datanya dalam suatu database. Contohnya perusahaan berbasis teknologi seperti e-commerce, menyimpan data baik itu data profile user, data transaksi pembelian dan penjualan, data produk dan data traffic kunjungan user ke halaman website di sistem database atau lebih tepatnya sistem manajemen database atau database management system (DBMS).
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.
Sistem Database Relasional
RDMBS atau Relational Database Management System adalah suatu program yang memungkinkan untuk Membuat, Memperbarui, dan Mengelola suatu basis data relasional (Relational Database).
Umumnya RDMBS ini menggunakan SQL untuk mengakses database. 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 atau 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.
Selain MySQL, masih ada produk lain RDBMS, baik yang berbayar (proprietary) maupun open source. Berikut adalah sebagian produk yang cukup populer di pasaran :
- MySQL: Open-source SQL database yang cukup populer. Umumnya digunakan untuk pengembangan aplikasi web.
- PostgreSQL: Open-source RDBMS product, dan juga umumnya digunakan untuk pengembangan aplikasi web. Akan tetapi secara kinerja, postgreSQL lebih lambat dibandingkan MySQL
- 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.
- Microsoft SQL Server: Produk RDBMS yang dimiliki oleh Microsoft dan sama seperti Oracle DB, SQL Server bersifat proprietary atau tidak open source, SQL Server umumnya digunakan di perusahaan skala besar yang juga menggunakan produk keluaran Microsoft lainnya.
- 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 sintaks pun bisa jadi sedikit berbeda untuk setiap produk tersebut. Berikut contoh perbandingan MySQL, Oracle, dan SQLSERVER untuk menampilkan beberapa baris data dari suatu tabel:
Sebagai penyimpan data, sistem database relasional memiliki struktur hirarki objek penyimpanan sebagai berikut:
- Database
- Tabel (table)
- Kolom (column) atau Field
Dari sini kita tahu bahwa 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).
Gambar berikut adalah contoh suatu Tabel dalam database. Karena setiap tabel dalam database memiliki nama, maka, nama tabel ini adalah ms_produk.
Jika diperhatikan, 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”.
Penggunaan Perintah SELECT … FROM …
Mengambil Seluruh Kolom dalam Suatu Tabel
Untuk mengakses data di database, kita dapat menggunakan SELECT statement. Pada SELECT statement kita menyatakan kolom-kolom mana saja yang ingin kita tampilkan dari suatu tabel di database. SELECT statement tidak berdiri sendiri. Setelah menyatakan kolom-kolom yang ingin ditampilkan, kita melanjutkan dengan FROM. Di FROM inilah kita menyatakan dari tabel mana data yang ingin kita tampilkan berada. SELECT … FROM … adalah statement paling sederhana di SQL, dan merupakan bagian utama dari query. Kita tidak bisa meng-query data tanpa menggunakan statement ini.
- 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.
Coba kita praktekkan perintah SQL SELECT untuk menampilkan data pada tabel yang bernama ms_produk.
Jika kita jalankan, maka akan mendapatkan tabel seperti berikut:
Mengambil Satu Kolom dari Tabel
Secara umum penggunaan perintah SELECT untuk mengambil satu kolom dinyatakan oleh sintaks berikut ini:
Kita coba 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.
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.
Mengambil Lebih dari Satu Kolom dari Tabel
Tabel ms_produk memiliki lebih dari satu kolom data. Kalau kita ingin mengambil kolom lainnya, kita hanya perlu menuliskan tiap kolom yang ingin ditampilkan dipisahkan dengan tanda koma, seperti contoh berikut untuk dua kolom.
Menggunakan tabel ms_produk, kita menggunakan perintah SELECT berikut untuk menampilkan dua kolom (kode_produk dan nama_produk).
Hasilnya, sistem database akan menampilkan data kode_produk dan 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.
Membatasi Pengambilan Jumlah Row Data
Selain pembatasan kolom, kita juga bisa membatasi jumlah baris data yang diambil. Seperti yang kita pelajari di materi RDMS sebelumnya, bahwa untuk tiap produk RDBMS, caranya agak berbeda-beda. Untuk MySQL dan PostgreSQL, kita dapat menggunakan LIMIT yang secara umum sintaks-nya dinyatakan sebagai berikut:
Sebagai contoh, kita 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.
Penggunaan SELECT DISTINCT Statement
Kita akan mengambil data dari tabel ms_pelanggan menggunakan perintah di bawah:
Ternyata, dari data pelanggan, kita menemukan duplikasi data dalam nama_customer dan alamat untuk no_urut 3 & 11, serta 5 & 12 yang sama persis dengan kode_pelanggan yang berbeda. Tentunya ini akan berdampak pada hasil analisa kita nantinya.
Untuk menghilangkan data duplikasi, kita bisa menggunakan SELECT DISTINCT statement. Dengan SELECT DISTINCT, data yang sama atau duplikat akan dieliminasi dan akan ditampilkan data yang unik saja. Berikut sintaks-nya:
Sekarang coba tampilkan nama_customer dan alamat dari tabel ms_pelanggan dan hilangkan data duplikat.
Jika dijalankan, maka hasilnya akan seperti ini:
Jika dihitung jumlah row data yang berbeda maka diperoleh ada 10 row data berbeda dari tabel ms_pelanggan.
Prefix dan Alias
Ada beberapa variasi penggunaan nama tabel dan kolom pada bagian SELECT, diantaranya adalah:
- Prefix, dimana kita akan menambahkan nama tabel di depan nama kolom.
- Alias, dimana kita memberikan alias atau nama lain untuk tabel maupun kolom.
Menggunakan Prefix pada Nama Kolom
Pada dasarnya, penulisan nama kolom yang lengkap perlu mencantumkan nama tabel di depan nama kolom tersebut, dengan tanda penyambung berupa tanda titik. Umumnya, jika kita hanya mengambil kolom dari satu tabel, prefix ini jarang digunakan karena sudah jelas dari tabel mana kolom itu berasal. Tetapi ketika kita mengambil data dari dua tabel, misalnya dengan menggabungkan 2 tabel menggunakan JOIN, dan terdapat 2 kolom dengan nama yang sama, maka penggunaan prefix menjadi penting untuk menghindari error karena ambiguitas.
Untuk mengambil nama kolom nama_produk data dari tabel ms_produk dengan penulisan prefix nama tabel adalah sebagai berikut.
Jika dijalankan maka akan mendapatkan hasil berikut.
Penggunaan nama lengkap prefix ini akan sangat berguna ketika ingin mengidentifikasi data dari beberapa tabel.
Menggunakan Alias pada Kolom
Selain prefix, kita dapat merubah identitas nama kolom yang diambil dengan SELECT dengan menggunakan keyword AS, ini dinamakan alias. Perubahan nama tabel bersifat temporary, artinya hanya berubah ketika mengambil/meng-query data, sedangkan nama kolom di tabel dalam database tidak akan berubah.
Berikut adalah contoh untuk meubah nama kolom dari kode_produk menjadi product_code dari table ms_produk.
Ketika dijalankan maka akan mendapatkan hasil berikut.
Terlihat kolom kode_produk telah berubah nama menjadi product_code.
Catatan: alias tidak bisa digunakan untuk wildcard (*)
Menghilangkan Keyword ‘AS’
Keyword AS yang digunakan sebagai penanda alias pada kolom dapat dihilangkan dengan sintaks:
Berikut adalah contoh yang sama dari sub-bab sebelumnya, dimana untuk merubah nama kolom dari kode_produk menjadi product_code dari tabel ms_produk dapat dilakukan tanpa menggunakan alias.
Ketika dijalankan maka akan mendapatkan hasil berikut.
Menggabungkan Prefix dan Alias
Prefix dan alias juga dapat digunakan secara bersamaan.
Kita menerapkannya dengan tabel ms_produk, menggunakan prefix nama tabel dan alias untuk merubah nama_produk menjadi nama.
Jika dijalankan maka akan muncul hasil berikut.
Menggunakan Alias pada Tabel
Selain kolom, nama alias juga bisa digunakan untuk tabel dengan menggunakan keyword AS setelah nama tabel. Dan keyword ini juga bisa digunakan atau tidak. Umumnya penggunaan alias pada tabel jika nama tabel tersebut cukup panjang dan muncul atau dirujuk beberapa kali dalam query. Sehingga dengan menggunakan alias pada tabel, dapat menghemat waktu dalam menuliskan query, khususnya untuk query yang cukup rumit, panjang dan melibatkan banyak tabel. Penulisannya adalah sebagai berikut.
Berikut adalah contoh untuk menggunakan alias pada tabel ms_produk menjadi t1.
Jika dijalankan maka akan muncul hasil berikut.
Terlihat hasil yang dikeluarkan adalah seluruh isi tabel ms_produk.
Prefix dengan Alias Tabel
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.
Penggunaan nama original tabel sebagai prefix akan menimbulkan error saat query dijalankan karena dengan penggunaan alias, nama tabel secara temporary sudah digantikan oleh alias.
Jika dijalankan maka akan muncul hasil berikut.
Jika kolom dan tabel memiliki alias, dapat dilakukan dengan menuliskan perintah berikut.
Dari contoh di atas, kita bisa mengetahui kalau kita 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:
Menggunakan Filter
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. Adapun kegunaan dari klausul WHERE adalah sebagai berikut:
- Filter data dengan kondisi teks tertentu.
- Filter data dengan nilai angka tertentu.
- Filter data dengan dua kondisi menggunakan operator AND dan OR.
Menggunakan WHERE
Klausul WHERE dari SELECT digunakan untuk memfilter data berdasarkan kondisi tertentu. Untuk sintaks lengkapnya adalah sebagai berikut.
Kondisi paling sederhana memiliki format sebagai berikut.
[nama_kolom] = 'nilai_untuk_filter'
Biar lebih jelasnya, mari langsung contohkan dengan perintah berikut.
Jika dijalankan maka akan muncul hasil berikut.
Terlihat hanya satu baris data saja yang dikeluarkan dari total sepuluh, yaitu data dimana kolom nama_produk berisi nilai ‘Gantungan Kunci DQLab’.
Menggunakan Operand OR
Pada subbab sebelumnya, kita 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? Kita bisa menggunakan Operand OR.
Untuk memunculkan hasil query yang memuat data produk dengan nama_produk ‘Gantungan Kunci DQLab’ dan ‘Tas Travel Organizer DQLab’, kita dapat menggunakan logika sederhana, yaitu: Kita 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, kita 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 sintaks berikut:
Catatan: Perhatikan bahwa perintah SELECT ini cukup panjang, dan riil-nya bisa dibagi menjadi beberapa baris. Namun untuk sistem DQLab, ini masih perlu dijadikan satu baris.
Jika dijalankan maka akan muncul hasil berikut.
Terlihat bukan hanya satu baris data, tapi terdapat dua baris data yang diambil karena memenuhi kondisi yang diberikan pada perintah SELECT.
Filter untuk Angka
Sebelumnya, kita telah melakukan filtering untuk teks, namun WHERE tidak terbatas untuk tipe data teks saja tapi malah umumnya untuk angka. Berikut adalah contoh filter dimana kolom harga harus memiliki nilai di bawah 50000.
Jika dijalankan, maka kita akan mendapatkan tiga baris data sebagai berikut.
Terlihat seluruh data yang diambil memiliki kondisi harga di bawah 50000.
Menggunakan Operand AND
Kita juga bisa menggunakan operand AND agar dua atau lebih kondisi terpenuhi semuanya. Jika salah satu kondisi tidak terpenuhi, data tidak akan diambil. Secara umum sintaks-nya diilustrasikan berikut ini.
Berikut adalah contoh dimana kedua kondisi digunakan dengan penghubung AND.
Jika dijalankan maka akan muncul hasil berikut.
Tidak ada hasil yang keluar, 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. Sekarang coba ganti kondisi contoh di atas dimana harga menjadi lebih kecil dari 50000, dengan nama_produk yang sama..
Jika dijalankan maka akan muncul hasil berikut.
Nah, materi di atas adalah materi tentang SELECT Statement pada SQL yang dapat aku bagi. Masih ada materi-materi yang bakal aku share di postingan selanjutnya. Stay tune!!!
Reference:
Modul DQLab : Fundamental SQL using SELECT Statement