Materi SQL Selection
1. Pendahuluan SQL dan Seleksi Data
Structured Query Language (SQL) adalah bahasa standar yang digunakan untuk
berkomunikasi dengan database relasional. SQL memungkinkan Anda untuk
melakukan berbagai operasi pada data, seperti mengambil (query), menyisipkan
(insert), memperbarui (update), dan menghapus (delete) data. Salah satu operasi yang
paling fundamental dan sering digunakan dalam SQL adalah seleksi data, yaitu proses
mengambil data dari satu atau lebih tabel dalam database.
Apa itu SQL?
SQL adalah bahasa deklaratif, yang berarti Anda mendeskripsikan apa yang ingin Anda
dapatkan dari database, bukan bagaimana database harus mengambilnya. Ini
berbeda dengan bahasa pemrograman prosedural di mana Anda harus menulis
langkah-langkah detail. SQL digunakan secara luas di berbagai sistem manajemen
database relasional (RDBMS) seperti MySQL, PostgreSQL, Oracle, SQL Server, SQLite,
dan banyak lagi.
Pentingnya Seleksi Data
Seleksi data adalah inti dari setiap operasi database. Tanpa kemampuan untuk
mengambil data, database tidak akan berguna. Berikut adalah beberapa alasan
mengapa seleksi data sangat penting:
1. Mengambil Informasi: Tujuan utama database adalah menyimpan informasi.
Seleksi data memungkinkan kita untuk mengambil informasi yang relevan dari
database untuk analisis, pelaporan, atau tampilan di aplikasi.
2. Analisis Data: Dengan memilih subset data tertentu atau data yang memenuhi
kriteria tertentu, analis dapat melakukan analisis mendalam untuk
mengidentifikasi tren, pola, dan insight.
3. Pelaporan: Sebagian besar laporan bisnis didasarkan pada data yang diambil
dari database. Seleksi data yang tepat memastikan bahwa laporan akurat dan
relevan.
4. Integrasi Aplikasi: Aplikasi web, mobile, dan desktop secara terus-menerus
mengambil data dari database untuk ditampilkan kepada pengguna atau untuk
melakukan operasi bisnis.
5. Debugging dan Validasi: Pengembang menggunakan seleksi data untuk
memeriksa isi database, memvalidasi data, dan melakukan debugging ketika ada
masalah.
Dalam materi ini, kita akan fokus pada klausa-klausa SQL yang digunakan untuk
seleksi data, yaitu SELECT , FROM , WHERE , ORDER BY , dan LIMIT (atau padanannya
seperti TOP / ROWNUM ). Memahami klausa-klausa ini adalah langkah pertama yang
krusial dalam menguasai SQL.
2. Klausa SELECT
Klausa SELECT adalah bagian paling fundamental dari setiap pernyataan SQL yang
digunakan untuk mengambil data. Ini menentukan kolom mana yang ingin Anda
ambil dari tabel.
Memilih Semua Kolom ( SELECT * )
Untuk mengambil semua kolom dari sebuah tabel, Anda dapat menggunakan tanda
bintang ( * ). Ini adalah cara cepat untuk melihat semua data dalam tabel, tetapi tidak
disarankan untuk penggunaan dalam produksi karena dapat mengambil data yang
tidak perlu dan mengurangi kinerja.
Sintaks:
SELECT *
FROM nama_tabel;
Contoh:
Misalkan kita memiliki tabel Pelanggan :
ID_Pelanggan Nama_Depan Nama_Belakang Email Kota
1 Budi Santoso budi@[Link] Jakarta
2 Siti Aminah siti@[Link] Bandung
3 Joko Susilo joko@[Link] Surabaya
SELECT *
FROM Pelanggan;
Hasil:
ID_Pelanggan Nama_Depan Nama_Belakang Email Kota
1 Budi Santoso budi@[Link] Jakarta
2 Siti Aminah siti@[Link] Bandung
3 Joko Susilo joko@[Link] Surabaya
Memilih Kolom Tertentu ( SELECT kolom1, kolom2 )
Untuk mengambil hanya kolom-kolom spesifik yang Anda butuhkan, sebutkan nama
kolom tersebut setelah klausa SELECT , dipisahkan dengan koma.
Sintaks:
SELECT kolom1, kolom2, ...
FROM nama_tabel;
Contoh:
SELECT Nama_Depan, Email
FROM Pelanggan;
Hasil:
Nama_Depan Email
Budi budi@[Link]
Siti siti@[Link]
Joko joko@[Link]
Alias Kolom ( AS )
Anda dapat memberikan nama sementara (alias) untuk kolom dalam hasil query
menggunakan kata kunci AS . Ini berguna untuk membuat nama kolom lebih mudah
dibaca atau untuk menangani nama kolom yang panjang atau ambigu.
Sintaks:
SELECT kolom1 AS alias_kolom1, kolom2 AS alias_kolom2, ...
FROM nama_tabel;
Kata kunci AS bersifat opsional di banyak sistem database, tetapi disarankan untuk
kejelasan.
Contoh:
SELECT Nama_Depan AS Nama, Nama_Belakang AS Keluarga, Email AS Alamat_Email
FROM Pelanggan;
Hasil:
Nama Keluarga Alamat_Email
Budi Santoso budi@[Link]
Siti Aminah siti@[Link]
Joko Susilo joko@[Link]
DISTINCT Keyword
Kata kunci DISTINCT digunakan untuk mengambil hanya nilai-nilai unik dari kolom
tertentu. Ini akan menghilangkan baris duplikat dari hasil query.
Sintaks:
SELECT DISTINCT kolom1
FROM nama_tabel;
Contoh:
Misalkan tabel Produk memiliki data berikut:
ID_Produk Nama_Produk Kategori Harga
1 Laptop Elektronik 1200
2 Mouse Elektronik 25
3 Keyboard Elektronik 75
4 Meja Furnitur 300
5 Kursi Furnitur 150
SELECT DISTINCT Kategori
FROM Produk;
Hasil:
Kategori
Elektronik
Furnitur
Ini akan mengembalikan hanya nilai unik dari kolom Kategori , yaitu 'Elektronik' dan
'Furnitur', tanpa duplikasi.
3. Klausa FROM
Klausa FROM adalah bagian penting dari setiap pernyataan SELECT . Ini menentukan
tabel atau tabel-tabel dari mana data akan diambil. Tanpa klausa FROM , SQL tidak
akan tahu dari mana harus mengambil kolom yang Anda minta.
Dasar Penggunaan FROM
Sintaks:
SELECT kolom1, kolom2, ...
FROM nama_tabel;
Atau jika Anda mengambil dari beberapa tabel (yang akan dibahas lebih lanjut dalam
topik JOIN):
SELECT kolom1, kolom2, ...
FROM tabel1, tabel2, ...;
Contoh:
Menggunakan tabel Pelanggan yang sama:
ID_Pelanggan Nama_Depan Nama_Belakang Email Kota
1 Budi Santoso budi@[Link] Jakarta
2 Siti Aminah siti@[Link] Bandung
3 Joko Susilo joko@[Link] Surabaya
SELECT Nama_Depan, Kota
FROM Pelanggan;
Hasil:
Nama_Depan Kota
Budi Jakarta
Siti Bandung
Joko Surabaya
Dalam contoh ini, FROM Pelanggan memberi tahu SQL untuk mencari kolom
Nama_Depan dan Kota di dalam tabel bernama Pelanggan . Ini adalah klausa yang
wajib ada dalam setiap pernyataan SELECT untuk menentukan sumber data.
4. Klausa WHERE
Klausa WHERE digunakan untuk memfilter baris berdasarkan kondisi tertentu. Ini
memungkinkan Anda untuk mengambil hanya baris-baris yang memenuhi kriteria
yang Anda tentukan, sehingga Anda dapat fokus pada subset data yang relevan.
Sintaks:
SELECT kolom1, kolom2, ...
FROM nama_tabel
WHERE kondisi;
Operator Perbandingan
Digunakan untuk membandingkan nilai.
= : Sama dengan
!= atau <> : Tidak sama dengan
> : Lebih besar dari
< : Lebih kecil dari
>= : Lebih besar dari atau sama dengan
<= : Lebih kecil dari atau sama dengan
Contoh:
Menggunakan tabel Produk :
ID_Produk Nama_Produk Kategori Harga
1 Laptop Elektronik 1200
2 Mouse Elektronik 25
3 Keyboard Elektronik 75
4 Meja Furnitur 300
5 Kursi Furnitur 150
-- Produk dengan harga di atas 100
SELECT Nama_Produk, Harga
FROM Produk
WHERE Harga > 100;
Hasil:
Nama_Produk Harga
Laptop 1200
Meja 300
Kursi 150
-- Produk dengan kategori Elektronik
SELECT Nama_Produk, Kategori
FROM Produk
WHERE Kategori = 'Elektronik';
Hasil:
Nama_Produk Kategori
Laptop Elektronik
Mouse Elektronik
Keyboard Elektronik
Operator Logika
Digunakan untuk menggabungkan beberapa kondisi.
AND : Kedua kondisi harus benar.
OR : Salah satu kondisi harus benar.
NOT : Membalikkan hasil kondisi.
Contoh:
-- Produk Elektronik dengan harga di atas 100
SELECT Nama_Produk, Kategori, Harga
FROM Produk
WHERE Kategori = 'Elektronik' AND Harga > 100;
Hasil:
Nama_Produk Kategori Harga
Laptop Elektronik 1200
-- Produk Elektronik ATAU harga di bawah 50
SELECT Nama_Produk, Kategori, Harga
FROM Produk
WHERE Kategori = 'Elektronik' OR Harga < 50;
Hasil:
Nama_Produk Kategori Harga
Laptop Elektronik 1200
Mouse Elektronik 25
Keyboard Elektronik 75
-- Produk yang BUKAN kategori Furnitur
SELECT Nama_Produk, Kategori
FROM Produk
WHERE NOT Kategori = 'Furnitur';
Hasil:
Nama_Produk Kategori
Laptop Elektronik
Mouse Elektronik
Keyboard Elektronik
Operator Khusus
IN : Memilih nilai yang cocok dengan salah satu nilai dalam daftar.
BETWEEN : Memilih nilai dalam rentang tertentu (inklusif).
LIKE : Mencari pola tertentu dalam kolom string.
% : Mewakili nol atau lebih karakter.
_ : Mewakili satu karakter tunggal.
IS NULL : Memilih baris di mana kolom memiliki nilai NULL.
IS NOT NULL : Memilih baris di mana kolom tidak memiliki nilai NULL.
Contoh:
-- Produk dengan Kategori Elektronik atau Furnitur
SELECT Nama_Produk, Kategori
FROM Produk
WHERE Kategori IN ('Elektronik', 'Furnitur');
Hasil:
Nama_Produk Kategori
Laptop Elektronik
Mouse Elektronik
Keyboard Elektronik
Meja Furnitur
Kursi Furnitur
-- Produk dengan harga antara 50 dan 200 (inklusif)
SELECT Nama_Produk, Harga
FROM Produk
WHERE Harga BETWEEN 50 AND 200;
Hasil:
Nama_Produk Harga
Keyboard 75
Kursi 150
-- Produk yang namanya diawali dengan 'M'
SELECT Nama_Produk
FROM Produk
WHERE Nama_Produk LIKE 'M%';
Hasil:
Nama_Produk
Mouse
Meja
-- Produk yang namanya memiliki huruf 'o' di posisi kedua
SELECT Nama_Produk
FROM Produk
WHERE Nama_Produk LIKE '_o%';
Hasil:
Nama_Produk
Mouse
Monitor
-- Misalkan ada produk dengan Nama_Produk NULL
-- Produk dengan Nama_Produk yang NULL
SELECT ID_Produk
FROM Produk
WHERE Nama_Produk IS NULL;
Hasil: (Jika ada baris dengan Nama_Produk NULL)
ID_Produk
Klausa WHERE adalah alat yang sangat kuat untuk menyaring data dan merupakan
salah satu klausa yang paling sering digunakan dalam SQL.
5. Klausa ORDER BY
Klausa ORDER BY digunakan untuk mengurutkan hasil query dalam urutan menaik
(ascending) atau menurun (descending) berdasarkan satu atau lebih kolom. Ini sangat
berguna untuk menyajikan data dalam format yang lebih terstruktur dan mudah
dianalisis.
Sintaks:
SELECT kolom1, kolom2, ...
FROM nama_tabel
WHERE kondisi
ORDER BY kolom_urut1 [ASC|DESC], kolom_urut2 [ASC|DESC], ...;
ASC : Mengurutkan hasil dalam urutan menaik (default jika tidak ditentukan).
DESC : Mengurutkan hasil dalam urutan menurun.
Mengurutkan Ascending ( ASC )
Contoh:
Menggunakan tabel Produk :
ID_Produk Nama_Produk Kategori Harga
1 Laptop Elektronik 1200
2 Mouse Elektronik 25
3 Keyboard Elektronik 75
4 Meja Furnitur 300
5 Kursi Furnitur 150
-- Mengurutkan produk berdasarkan Harga dari terendah ke tertinggi
SELECT Nama_Produk, Harga
FROM Produk
ORDER BY Harga ASC;
Hasil:
Nama_Produk Harga
Mouse 25
Keyboard 75
Kursi 150
Meja 300
Laptop 1200
Mengurutkan Descending ( DESC )
Contoh:
-- Mengurutkan produk berdasarkan Harga dari tertinggi ke terendah
SELECT Nama_Produk, Harga
FROM Produk
ORDER BY Harga DESC;
Hasil:
Nama_Produk Harga
Laptop 1200
Meja 300
Kursi 150
Keyboard 75
Mouse 25
Mengurutkan Berdasarkan Multiple Kolom
Anda dapat mengurutkan berdasarkan lebih dari satu kolom. Urutan pengurutan akan
diterapkan dari kiri ke kanan. Jika ada nilai yang sama di kolom pertama, kolom kedua
akan digunakan untuk mengurutkan, dan seterusnya.
Contoh:
-- Mengurutkan produk berdasarkan Kategori (ASC) lalu Harga (DESC)
SELECT Nama_Produk, Kategori, Harga
FROM Produk
ORDER BY Kategori ASC, Harga DESC;
Hasil:
Nama_Produk Kategori Harga
Laptop Elektronik 1200
Keyboard Elektronik 75
Mouse Elektronik 25
Meja Furnitur 300
Kursi Furnitur 150
Dalam contoh ini, produk pertama diurutkan berdasarkan Kategori secara alfabetis.
Kemudian, di dalam setiap kategori, produk diurutkan berdasarkan Harga dari
tertinggi ke terendah.
6. Klausa LIMIT / TOP / ROWNUM
Klausa ini digunakan untuk membatasi jumlah baris yang dikembalikan oleh query. Ini
sangat berguna ketika Anda hanya membutuhkan sejumlah kecil data, misalnya untuk
pratinjau atau untuk aplikasi yang hanya menampilkan beberapa hasil teratas.
Nama klausa ini bervariasi tergantung pada sistem manajemen database relasional
(RDBMS) yang Anda gunakan:
LIMIT : Digunakan di MySQL, PostgreSQL, SQLite.
TOP : Digunakan di SQL Server, MS Access.
ROWNUM : Digunakan di Oracle.
Membatasi Jumlah Hasil
Sintaks (MySQL, PostgreSQL, SQLite):
SELECT kolom1, kolom2, ...
FROM nama_tabel
WHERE kondisi
ORDER BY kolom_urut
LIMIT jumlah_baris;
Contoh (MySQL, PostgreSQL, SQLite):
Menggunakan tabel Produk :
ID_Produk Nama_Produk Kategori Harga
1 Laptop Elektronik 1200
2 Mouse Elektronik 25
3 Keyboard Elektronik 75
4 Meja Furnitur 300
5 Kursi Furnitur 150
-- Mengambil 3 produk dengan harga tertinggi
SELECT Nama_Produk, Harga
FROM Produk
ORDER BY Harga DESC
LIMIT 3;
Hasil:
Nama_Produk Harga
Laptop 1200
Meja 300
Kursi 150
Sintaks (SQL Server, MS Access):
SELECT TOP jumlah_baris kolom1, kolom2, ...
FROM nama_tabel
WHERE kondisi
ORDER BY kolom_urut;
Contoh (SQL Server, MS Access):
-- Mengambil 3 produk dengan harga tertinggi
SELECT TOP 3 Nama_Produk, Harga
FROM Produk
ORDER BY Harga DESC;
Hasil: (Sama seperti LIMIT )
Nama_Produk Harga
Laptop 1200
Meja 300
Kursi 150
Sintaks (Oracle):
SELECT kolom1, kolom2, ...
FROM nama_tabel
WHERE kondisi AND ROWNUM <= jumlah_baris
ORDER BY kolom_urut;
Contoh (Oracle):
-- Mengambil 3 produk dengan harga tertinggi
SELECT Nama_Produk, Harga
FROM Produk
WHERE ROWNUM <= 3
ORDER BY Harga DESC;
Catatan Penting untuk Oracle ROWNUM : ROWNUM ditetapkan sebelum klausa ORDER
BY dieksekusi. Jadi, jika Anda ingin mendapatkan baris teratas setelah pengurutan,
Anda perlu menggunakan subquery atau Common Table Expression (CTE).
Contoh yang benar untuk Oracle:
SELECT Nama_Produk, Harga
FROM (
SELECT Nama_Produk, Harga
FROM Produk
ORDER BY Harga DESC
)
WHERE ROWNUM <= 3;
Klausa LIMIT / TOP / ROWNUM sangat berguna untuk optimasi kinerja dan untuk
menampilkan data dalam halaman (pagination) di aplikasi web.
7. Studi Kasus Sederhana: Seleksi Data Pelanggan
Mari kita terapkan klausa-klausa SQL Selection yang telah kita pelajari untuk
mengambil dan memfilter data dari tabel Pelanggan .
Tabel Pelanggan :
ID_Pelanggan Nama_Depan Nama_Belakang Email Kota Usia
1 Budi Santoso budi@[Link] Jakarta 30
2 Siti Aminah siti@[Link] Bandung 25
3 Joko Susilo joko@[Link] Surabaya 35
4 Ani Wijaya ani@[Link] Jakarta 28
5 Doni Pratama doni@[Link] Bandung 40
Skenario 1: Ambil semua informasi pelanggan yang tinggal di Jakarta.
SELECT *
FROM Pelanggan
WHERE Kota = 'Jakarta';
Hasil:
ID_Pelanggan Nama_Depan Nama_Belakang Email Kota Usia
1 Budi Santoso budi@[Link] Jakarta 30
4 Ani Wijaya ani@[Link] Jakarta 28
Skenario 2: Ambil nama depan, nama belakang, dan email dari pelanggan yang
berusia di atas 30 tahun, urutkan berdasarkan usia dari yang tertua.
SELECT Nama_Depan, Nama_Belakang, Email
FROM Pelanggan
WHERE Usia > 30
ORDER BY Usia DESC;
Hasil:
Nama_Depan Nama_Belakang Email
Doni Pratama doni@[Link]
Joko Susilo joko@[Link]
Skenario 3: Ambil nama depan dan kota dari pelanggan yang tinggal di Jakarta
atau Bandung, dan berusia antara 25 dan 35 tahun (inklusif).
SELECT Nama_Depan, Kota
FROM Pelanggan
WHERE (Kota = 'Jakarta' OR Kota = 'Bandung')
AND Usia BETWEEN 25 AND 35;
Hasil:
Nama_Depan Kota
Budi Jakarta
Siti Bandung
Ani Jakarta
Skenario 4: Ambil 2 pelanggan termuda.
SELECT Nama_Depan, Usia
FROM Pelanggan
ORDER BY Usia ASC
LIMIT 2; -- Gunakan TOP 2 untuk SQL Server/MS Access, atau ROWNUM <= 2 untuk
Oracle
Hasil:
Nama_Depan Usia
Siti 25
Ani 28
Studi kasus ini menunjukkan bagaimana Anda dapat menggabungkan klausa SELECT ,
FROM , WHERE , ORDER BY , dan LIMIT untuk mengambil data yang sangat spesifik dan
relevan dari database Anda. Ini adalah dasar dari hampir semua interaksi dengan
database menggunakan SQL.