Lewati ke konten utama

Pengantar Klausul WHERE dalam SQL

Dalam tutorial ini, Anda akan diperkenalkan pada penyaringan baris di SQL menggunakan klausa WHERE.
Diperbarui 28 Sep 2026  · 7 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Menyaring baris dari sebuah tabel berdasarkan suatu kondisi atau sekumpulan kondisi adalah praktik yang sangat umum dalam analisis data. Di SQL, Anda dapat melakukannya menggunakan klausa where. Dalam tutorial ini, Anda akan menggunakannya untuk berbagai skenario.

Anda akan menggunakan PostgreSQL sebagai RDBMS (Relational Database Management System), tetapi sintaksnya tidak banyak berbeda saat menggunakan sistem basis data lainnya. Anda akan mulai dengan menyiapkan basis data PostgreSQL dan membuat tabel secara manual yang berisi data negara. Setelah ini disiapkan, Anda akan mengeksekusi beberapa kueri filter yang menggabungkan klausa WHERE.

Catatan: Untuk mengikuti tutorial ini, Anda harus memahami dasar-dasar SQL dan PostgreSQL. Sumber berikut mungkin membantu jika Anda belum familiar dengannya.

Membuat Tabel di PostgreSQL

Untuk mengikuti tutorial ini, Anda perlu membuat tabel di PostgreSQL yang memuat informasi tentang negara-negara di seluruh dunia. Tabel ini akan digunakan untuk mendemonstrasikan bagaimana klausa WHERE bekerja dalam berbagai skenario.

Langkah 1: Buat basis data baru

Buka pgAdmin (atau antarmuka SQL pilihan Anda) dan buat basis data PostgreSQL baru. Anda dapat menamainya misalnya world_data atau nama lain sesuai preferensi.

Langkah 2: Buat dan isi tabel kita

Setelah basis data siap, buka jendela editor kueri SQL baru dan jalankan kode SQL berikut. Ini akan membuat tabel bernama countries dan menyisipkan sekumpulan rekaman yang mencakup berbagai benua, tahun kemerdekaan, dan wilayah:

-- Create the countries tableCREATE TABLE countries (    code VARCHAR(3) PRIMARY KEY,    name VARCHAR(100),    continent VARCHAR(50),    region VARCHAR(100),    surface_area NUMERIC,    indep_year INTEGER,    local_name VARCHAR(100),    gov_form VARCHAR(100),    capital VARCHAR(100),    cap_long NUMERIC,    cap_lat NUMERIC);-- Insert sample data into the countries tableINSERT INTO countries (code, name, continent, region, surface_area, indep_year, local_name, gov_form, capital, cap_long, cap_lat)VALUES('IND', 'India', 'Asia', 'Southern Asia', 3287263, 1947, 'Bharat', 'Federal Republic', 'New Delhi', 77.2090, 28.6139),('PAK', 'Pakistan', 'Asia', 'Southern Asia', 881912, 1947, 'Pakistan', 'Federal Republic', 'Islamabad', 73.0551, 33.6844),('CHN', 'China', 'Asia', 'Eastern Asia', 9596961, NULL, 'Zhongguo', 'People''s Republic', 'Beijing', 116.4074, 39.9042),('VNM', 'Vietnam', 'Asia', 'South-Eastern Asia', 331212, 1945, 'Việt Nam', 'Socialist Republic', 'Hanoi', 105.8544, 21.0285),('JPN', 'Japan', 'Asia', 'Eastern Asia', 377975, NULL, 'Nippon', 'Constitutional Monarchy', 'Tokyo', 139.6917, 35.6895),('DEU', 'Germany', 'Europe', 'Western Europe', 357386, 1955, 'Deutschland', 'Federal Republic', 'Berlin', 13.4050, 52.5200),('FRA', 'France', 'Europe', 'Western Europe', 551695, 843, 'France', 'Republic', 'Paris', 2.3522, 48.8566),('RUS', 'Russia', 'Europe', 'Eastern Europe', 17098242, 1991, 'Rossiya', 'Federation', 'Moscow', 37.6173, 55.7558),('UKR', 'Ukraine', 'Europe', 'Eastern Europe', 603500, 1991, 'Ukrayina', 'Republic', 'Kyiv', 30.5234, 50.4501),('EGY', 'Egypt', 'Africa', 'Northern Africa', 1002450, 1922, 'Misr', 'Republic', 'Cairo', 31.2357, 30.0444),('NGA', 'Nigeria', 'Africa', 'Western Africa', 923768, 1960, 'Nigeria', 'Federal Republic', 'Abuja', 7.4951, 9.0578),('AUS', 'Australia', 'Oceania', 'Australia and New Zealand', 7682300, 1901, 'Australia', 'Federal Parliamentary Democracy', 'Canberra', 149.1245, -35.3075),('USA', 'United States', 'North America', 'North America', 9833517, 1776, 'United States', 'Federal Republic', 'Washington, D.C.', -77.0369, 38.9072),('CAN', 'Canada', 'North America', 'North America', 9984670, 1867, 'Canada', 'Constitutional Monarchy', 'Ottawa', -75.6972, 45.4215),('BRA', 'Brazil', 'South America', 'South America', 8515767, 1822, 'Brasil', 'Federal Republic', 'Brasília', -47.9292, -15.7801),('ARG', 'Argentina', 'South America', 'South America', 2780400, 1816, 'Argentina', 'Federal Republic', 'Buenos Aires', -58.3816, -34.6037);

Tabel ini memiliki berbagai informasi tentang total sekitar 16 negara di seluruh dunia. Tabel tersebut memiliki kolom-kolom berikut:

  • code yang merupakan primary key tabel dan menunjukkan kode negara universal untuk suatu negara

  • name yaitu nama sebuah negara

  • continent tempat negara berada

  • region lokasi geografis tempat negara berada

  • surface_area dari negara tersebut

  • indep_year yaitu tahun ketika suatu negara memperoleh kemerdekaan

  • local_name dari suatu negara

  • gov_form yaitu jenis pemerintahan yang berlaku di suatu negara

  • capital dari suatu negara

  • cap_long yaitu bujur ibu kota suatu negara

  • cap_lat yaitu lintang ibu kota suatu negara

Sekarang mari mulai menyaring beberapa rekaman dengan klausa WHERE.

Menggunakan Klausul WHERE di SQL

Di SQL, klausa WHERE memungkinkan Anda memfilter rekaman berdasarkan nilai tekstual maupun numerik. Anda dapat membandingkan nilai-nilai ini, dan operasi berbasis perbandingan berikut didukung -

  • = sama dengan

  • <> dan != tidak sama dengan

  • < kurang dari

  • > lebih dari

  • <= kurang dari atau sama dengan

  • >= lebih dari atau sama dengan

Disarankan untuk menggunakan <> alih-alih != sesuai standar SQL.

Sekarang mari ambil rekaman negara di mana code-nya adalah AUS. Kolom yang harus Anda bandingkan di sini adalah kolom code dan nilai yang dibandingkan adalah AUS. Kuerinya adalah:

SELECT * FROM countries WHERE code = 'AUS';

Dan Anda mendapatkan:

Perhatikan beberapa hal berikut -

  • Klausa WHERE selalu muncul setelah FROM.

  • Di SQL, string diapit menggunakan tanda petik tunggal.

Sekarang mari lihat perbandingan numerik. Mari ambil rekaman negara yang memperoleh kemerdekaan (indep_year) setelah 1901:

SELECT * FROM countries WHERE indep_year > 1901;

Anda mendapatkan rekaman total 3 negara yang memperoleh kemerdekaan setelah 1901. Perhatikan pemakaian operator pembanding di sini. Kolom indep_year bertipe bilangan bulat. Oleh karena itu, tidak menggunakan tanda petik dalam perbandingan.

Anda dapat menghubungkan beberapa kondisi dalam klausa WHERE menggunakan penghubung AND dan OR. Kueri berikut mendapatkan rekaman negara-negara where continent = 'Asia' and indep_year > 1900 -

SELECT * FROM countries WHERE continent = 'Asia' AND indep_year > 1901;

Anda mendapatkan informasi tentang total tiga negara yang berada di benua Asia dan memperoleh kemerdekaan setelah 1901. Perhatikan bahwa dalam kueri di atas, Anda membandingkan nilai tekstual dan numerik. Sebagai latihan, Anda bisa mencoba berbagai kombinasi AND dan OR dalam klausa WHERE.

Catatan: Saat Anda menggabungkan AND dan OR, jangan lupa untuk menutup masing-masing kondisi dalam tanda kurung. Jika tidak, SQL akan bingung saat menentukan prioritas evaluasi kondisi.

Dengan kueri berikut, Anda mendapatkan total enam negara.

SELECT * FROM countries WHERE(continent = 'Europe' AND indep_year > 1900)or(continent = 'Asia' AND indep_year > 1900);

Anda bahkan dapat menghubungkan lebih dari dua kondisi dalam klausa WHERE:

SELECT * FROM countries WHERE continent = 'Asia' OR indep_year > 1900 OR surface_area > 652090;

Di sini, Anda mendapatkan total 15 negara yang berada di Asia atau memperoleh kemerdekaan setelah 1901 atau memiliki luas wilayah lebih besar dari 652090.

Sekarang mari ubah kueri tersebut menjadi varian AND, yang lebih ketat:

SELECT * FROM countries WHERE continent = 'Asia' AND indep_year > 1901 AND surface_area > 652090;

Dalam kasus ini, Anda akan mendapatkan total dua negara.

Anda juga dapat memasangkan subkueri dalam klausa WHERE. Misalnya Anda ingin mengambil rekaman negara yang memiliki luas wilayah terbesar, tetapi Anda tidak tahu berapa luas wilayah maksimum yang dimiliki suatu negara. Kueri berikut dapat membantu dalam situasi seperti ini:

SELECT * FROM countries WHERE surface_area in (SELECT MAX(surface_area) FROM countries);

Anda akan mendapatkan rekaman Russia.

Kesimpulan

Selamat, Anda telah menyelesaikan tutorial ini. Menyaring hasil kueri berdasarkan kondisi jelas merupakan keterampilan penting, dan tutorial ini menjadi pengantar untuk itu. Jika Anda ingin mengasah keterampilan SQL lebih jauh, Anda dapat melihat kursus kami (tautan di bawah).


Sayak Paul's photo
Author
Sayak Paul

Sayak bekerja di Hugging Face, tempat ia menulis kode, menulis, dan berbicara. Sebagian besar waktunya dihabiskan untuk segala hal terkait pustaka Diffusers. Ia juga merupakan instruktur proyek DataCamp dan penulis banyak tutorial DataCamp. Di luar pekerjaan, Anda mungkin menemukannya menonton maraton Suits di Netflix untuk kesekian kalinya. 

FAQ Klausul WHERE di SQL

Dapatkah saya menggunakan kolom teks dan numerik dalam klausa WHERE?

Ya, Anda dapat memfilter berdasarkan nilai teks (misalnya, 'Asia') dan numerik (misalnya, > 1901). Ingat bahwa nilai teks harus diapit tanda petik tunggal.

Apakah ada perbedaan antara <> dan != dalam SQL?

Keduanya berarti "tidak sama dengan", tetapi <> adalah operator standar SQL. Beberapa basis data juga mendukung !=, tetapi sebaiknya gunakan <> demi kompatibilitas.

Bagaimana cara memfilter rekaman dengan nilai NULL?

Gunakan IS NULL atau IS NOT NULL. Contohnya:

SELECT * FROM countries WHERE indep_year IS NULL;

Bisakah saya menggunakan subkueri dalam klausa WHERE?

Ya, subkueri dapat digunakan untuk membandingkan kolom dengan hasil kueri lain. Contohnya:

SELECT * FROM countries WHERE surface_area = (SELECT MAX(surface_area) FROM countries);

Apakah klausa WHERE berada sebelum atau sesudah klausa FROM?

Klausa WHERE selalu berada setelah klausa FROM dan sebelum klausa seperti GROUP BY atau ORDER BY.

Bisakah saya menggunakan WHERE dengan JOIN?

Tentu. Anda dapat menerapkan klausa WHERE setelah melakukan JOIN untuk memfilter hasil gabungan.

Topik
Analisis Data
Data Science
SQL

Kursus SQL

Kursus

Meningkatkan Performa Kueri di PostgreSQL

4 jam
14.2K
Pelajari cara mengoptimalkan struktur kueri PostgreSQL Anda agar dapat dijalankan dalam waktu yang jauh lebih singkat.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat SelengkapnyaLihat Selengkapnya