Prioritas AND/OR dan Penggunaan Tanda Kurung
Kesalahan pemfilteran yang paling umum ditanamkan pewawancara dalam pertanyaan mereka.
Prioritas AND/OR dan Penggunaan Tanda Kurung adalah pelajaran SQL Interview Prep gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Interview Prep, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Interview Prep mencakup 4 pelajaran total.
Jebakan yang Dipasang Pewawancara
Kesalahan penyaringan yang paling umum dalam wawancara terlihat benar sekilas. Anda diminta: cari pesanan dari pelanggan 5 yang berstatus tertunda atau dikirim. Seorang kandidat menulis WHERE yang mencampurkan AND dan OR, lalu mendapatkan baris tambahan.
Mengapa? Karena AND memiliki prioritas lebih tinggi daripada OR. Basis data mengevaluasi semua pasangan AND terlebih dahulu, kemudian semua OR. Pelajaran ini membuat aturan tersebut menjadi refleks sehingga Anda tidak pernah kehilangan poin karenanya.
Prioritas Operator dalam Satu Kalimat
Dalam setiap dialek SQL, operator logis memiliki urutan prioritas berikut: NOT terlebih dahulu, lalu AND, dan terakhir OR.
NOTmemiliki prioritas tertinggiANDberada di tengahORmemiliki prioritas terendah
Jadi A OR B AND C dibaca sebagai A OR (B AND C), bukan (A OR B) AND C. Pewawancara mengandalkan Anda untuk melupakan hal ini.
Kueri yang Salah
Inilah kueri yang ditulis kandidat untuk pelanggan 5, berstatus tertunda atau dikirim. Kueri ini terlihat benar, tetapi sebenarnya salah.
Karena AND memiliki prioritas lebih tinggi, SQL membacanya sebagai (customer_id = 5 AND status = 'pending') OR status = 'shipped'. Cabang kedua sama sekali tidak memiliki penyaring pelanggan, sehingga mengembalikan pesanan yang dikirim dari semua pelanggan.
SELECT *
FROM orders
WHERE customer_id = 5
AND status = 'pending'
OR status = 'shipped';Perbaikannya: Tanda Kurung
Bungkus cabang OR dengan tanda kurung agar penyaring pelanggan berlaku untuk kedua status. Tanda kurung mengesampingkan prioritas dan memperjelas maksud kueri.
Sekarang SQL mengevaluasi kelompok OR terlebih dahulu, lalu menerapkan customer_id = 5 pada seluruh kelompok tersebut. Peninjau senior menambahkan tanda kurung meskipun prioritas sudah menghasilkan perilaku yang benar, semata-mata demi keterbacaan.
SELECT *
FROM orders
WHERE customer_id = 5
AND (status = 'pending' OR status = 'shipped');Menelusuri Tabel Kebenaran
Ambil pesanan berstatus dikirim dari pelanggan 9. Telusuri versi yang salah:
customer_id = 5bernilai falsestatus = 'pending'bernilai falsefalse AND falsebernilai falsefalse OR (status = 'shipped' is true)bernilai true
Baris tersebut tetap dikembalikan meskipun bukan milik pelanggan 5. Menelusuri satu baris konkret dengan lantang persis menunjukkan hal yang ingin dilihat pewawancara.
NOT Memiliki Prioritas Tertinggi
NOT hanya berlaku pada kondisi yang langsung mengikutinya. Jadi NOT status = 'open' AND priority = 'high' berarti (NOT status = 'open') AND priority = 'high'.
Jika yang Anda maksud adalah menegasikan seluruh kondisi, Anda harus menggunakan tanda kurung: NOT (status = 'open' AND priority = 'high'). Berdasarkan hukum De Morgan, bentuk tersebut sama dengan status <> 'open' OR priority <> 'high'.
SELECT *
FROM tickets
WHERE NOT (status = 'open' AND priority = 'high');Contoh dengan Tiga Kondisi
Temukan produk yang (elektronik atau peralatan rumah tangga) dan tersedia. Tanpa tanda kurung, penyaring ketersediaan hanya akan berlaku pada peralatan rumah tangga.
Kueri yang dikelompokkan di bawah ini mudah dibaca: pilih salah satu dari dua kategori, lalu wajibkan ketersediaan stok. Aturan praktisnya: setiap kali kueri mencampur AND dengan OR, Anda hampir selalu memerlukan tanda kurung di sekitar kelompok OR.
SELECT *
FROM products
WHERE (category = 'electronics' OR category = 'appliances')
AND in_stock = true;IN sebagai Alternatif yang Lebih Rapi
Rangkaian panjang penggunaan OR pada kolom yang sama rentan terhadap kesalahan dan bertele-tele. Gantilah dengan IN, yang tidak ambigu dan tidak memerlukan tanda kurung.
Kueri di bawah ini benar-benar setara dengan kueri sebelumnya, tetapi lebih sulit rusak. Pewawancara senang melihat pemfaktoran ulang ini karena menunjukkan bahwa Anda memahami ketepatan dan keterbacaan.
SELECT *
FROM products
WHERE category IN ('electronics', 'appliances')
AND in_stock = true;Prioritas Operator dalam Penyaring Hasil Perhitungan
Prioritas operator juga berlaku ketika aritmetika dan logika bercampur. Dalam price * 1.2 > 100 OR discount = 0 AND active = true, perbandingan dan aritmetika diselesaikan terlebih dahulu, lalu AND, kemudian OR.
Jadi, cara membacanya adalah (price * 1.2 > 100) OR ((discount = 0) AND (active = true)). Jika ragu, jangan menghafalkan tabel saat berada di bawah tekanan; cukup beri tanda kurung pada setiap kelompok.
Cara Menjawabnya Saat Wawancara
Ketika pewawancara menunjukkan penyaring campuran AND/OR dan bertanya apa yang dikembalikan, lakukan tiga hal:
- Nyatakan aturan prioritas:
ANDsebelumOR - Susun ulang tanda kurung kueri sambil mengucapkannya untuk memperlihatkan pengelompokan sebenarnya
- Telusuri satu baris yang menyingkap cacatnya
Kemudian tawarkan versi yang sudah diperbaiki dan diberi tanda kurung. Urutan tersebut menunjukkan ketelitian tingkat senior.
Kebiasaan Pencegahan
Kebiasaan profesionalnya adalah: beri tanda kurung pada setiap kelompok OR, selalu. Tindakan ini hanya memerlukan dua karakter, tetapi menghilangkan seluruh jenis cacat dan komentar tinjauan.
Peninjau kode tidak seharusnya harus mengevaluasi prioritas secara mental untuk memastikan suatu penyaring sudah benar. Buat pengelompokannya terlihat jelas. Ini adalah salah satu dari sedikit kasus ketika sintaks yang berlebihan dianggap sebagai gaya yang baik oleh semua orang.
SELECT order_id, status
FROM orders
WHERE customer_id = 5
AND (status = 'pending' OR status = 'shipped');Pemeriksaan Singkat
Pertimbangkan aturan prioritas sebelum menjawab.
Rangkuman
Poin penting:
- Prioritas logika adalah NOT, lalu AND, kemudian OR
- Penyaring campuran
AND/ORhampir selalu memerlukan tanda kurung di sekitar kelompokOR - Tanda kurung yang hilang secara diam-diam memperluas hasil, sering kali menghapus sebuah penyaring sepenuhnya
- Gantilah rangkaian panjang
ORpada satu kolom denganIN - Untuk menjawab secara langsung: nyatakan aturannya, susun ulang tanda kurung, telusuri satu baris, lalu perbaiki
Selalu beri tanda kurung pada kelompok OR, bahkan ketika prioritasnya sudah menghasilkan pengelompokan yang benar.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Prioritas AND/OR dan Penggunaan Tanda Kurung” gratis?
Ya — teks lengkap “Prioritas AND/OR dan Penggunaan Tanda Kurung” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Interview Prep, upgrade ke CoddyKit PRO. Kursus SQL Interview Prep mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Prioritas AND/OR dan Penggunaan Tanda Kurung”?
Kesalahan pemfilteran yang paling umum ditanamkan pewawancara dalam pertanyaan mereka. Kamu berlatih SQL Interview Prep dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai SQL Interview Prep?
Tidak diperlukan pengalaman sebelumnya. SQL Interview Prep di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Prioritas AND/OR dan Penggunaan Tanda Kurung” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Interview Prep ini?
Ya. Setiap pelajaran SQL Interview Prep menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Prioritas AND/OR dan Penggunaan Tanda Kurung
- BETWEEN, IN, dan Batas Inklusif
- LIKE, Karakter Pengganti, dan Escape
- Memfilter Nilai yang Dihitung