Keutamaan AND/OR dan Penggunaan Tanda Kurung
Pepijat penapisan yang paling lazim disisipkan oleh penemu duga dalam soalan mereka
Keutamaan AND/OR dan Penggunaan Tanda Kurung ialah pelajaran Persediaan Temu Duga Pengaturcaraan percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Persediaan Temu Duga Pengaturcaraan, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Persediaan Temu Duga Pengaturcaraan merangkumi sejumlah 4 pelajaran.
Perangkap yang Dipasang oleh Penemu Duga
Kesilapan penapisan yang paling lazim dalam temu duga kelihatan betul pada pandangan pertama. Anda diminta: cari pesanan daripada pelanggan 5 yang berstatus sama ada menunggu atau dihantar. Calon menulis WHERE dengan gabungan AND dan OR, lalu mendapat baris tambahan.
Mengapa? Kerana AND mempunyai keutamaan lebih tinggi daripada OR. Pangkalan data menilai semua pasangan AND dahulu, kemudian OR. Pelajaran ini menjadikan peraturan tersebut sebagai tindak balas automatik supaya Anda tidak kehilangan markah kerananya.
Keutamaan Operator dalam Satu Ayat
Dalam setiap dialek SQL, operator logik mengikat mengikut susunan ini: NOT dahulu, kemudian AND, dan akhir sekali OR.
NOTmempunyai keutamaan tertinggiANDberada di tengahORmempunyai keutamaan terendah
Jadi A OR B AND C dibaca sebagai A OR (B AND C), bukannya (A OR B) AND C. Penemu duga menjangkakan Anda akan terlupa perkara ini.
Pertanyaan yang Salah
Inilah pertanyaan yang ditulis oleh calon untuk pelanggan 5, status menunggu atau dihantar. Ia kelihatan betul tetapi sebenarnya salah.
Oleh sebab AND mempunyai keutamaan lebih tinggi, SQL membacanya sebagai (customer_id = 5 AND status = 'pending') OR status = 'shipped'. Cabang kedua langsung tiada penapis pelanggan, jadi ia mengembalikan pesanan yang dihantar daripada semua pelanggan.
SELECT *
FROM orders
WHERE customer_id = 5
AND status = 'pending'
OR status = 'shipped';Pembetulan: Tanda Kurung
Bungkus cabang OR dalam tanda kurung supaya penapis pelanggan terpakai pada kedua-dua status. Tanda kurung mengatasi keutamaan dan menjadikan niat kod jelas.
Kini SQL menilai OR yang dikumpulkan dahulu, kemudian menggunakan customer_id = 5 pada keseluruhan kumpulan itu. Penyemak berpengalaman menambah tanda kurung walaupun keutamaan sudah menghasilkan keputusan yang betul, semata-mata untuk memudahkan pembacaan.
SELECT *
FROM orders
WHERE customer_id = 5
AND (status = 'pending' OR status = 'shipped');Menelusuri Jadual Kebenaran
Ambil satu pesanan yang dihantar daripada pelanggan 9. Telusuri versi yang bermasalah:
customer_id = 5ialah falsestatus = 'pending'ialah falsefalse AND falseialah falsefalse OR (status = 'shipped' is true)ialah true
Baris tersebut dikembalikan walaupun bukan daripada pelanggan 5. Menelusuri satu baris sebenar secara lisan ialah tepat perkara yang ingin dilihat oleh penemu duga.
NOT Mempunyai Ikatan Paling Kuat
NOT hanya terpakai pada syarat yang hadir tepat selepasnya. Jadi NOT status = 'open' AND priority = 'high' bermaksud (NOT status = 'open') AND priority = 'high'.
Jika Anda bermaksud menafikan keseluruhan ungkapan, Anda mesti menggunakan tanda kurung: NOT (status = 'open' AND priority = 'high'). Berdasarkan hukum De Morgan, ungkapan itu bersamaan dengan status <> 'open' OR priority <> 'high'.
SELECT *
FROM tickets
WHERE NOT (status = 'open' AND priority = 'high');Contoh dengan Tiga Syarat
Cari produk yang (elektronik atau perkakas) dan tersedia dalam stok. Tanpa kurungan, penapis stok hanya akan terpakai pada perkakas.
Pertanyaan berkumpulan di bawah mudah dibaca: pilih salah satu daripada dua kategori, kemudian tetapkan bahawa produk mesti ada dalam stok. Panduan mudah diingati: apabila pertanyaan menggabungkan AND dengan OR, anda hampir selalu memerlukan kurungan di sekeliling kumpulan OR.
SELECT *
FROM products
WHERE (category = 'electronics' OR category = 'appliances')
AND in_stock = true;IN sebagai Alternatif yang Lebih Kemas
Rangkaian panjang OR pada lajur yang sama mudah menyebabkan ralat dan terlalu panjang. Gantikannya dengan IN, yang tidak mengelirukan dan tidak memerlukan kurungan.
Pertanyaan di bawah betul-betul setara dengan pertanyaan sebelumnya, tetapi lebih sukar untuk rosak. Penemuduga suka melihat penstrukturan semula ini kerana ia menunjukkan bahawa anda memahami ketepatan dan kebolehbacaan.
SELECT *
FROM products
WHERE category IN ('electronics', 'appliances')
AND in_stock = true;Keutamaan dalam Penapis Terhitung
Keutamaan turut terpakai apabila aritmetik dan logik bercampur. Dalam price * 1.2 > 100 OR discount = 0 AND active = true, perbandingan dan operasi aritmetik dinilai dahulu, kemudian AND, dan akhirnya OR.
Jadi, maksudnya ialah (price * 1.2 > 100) OR ((discount = 0) AND (active = true)). Jika ragu-ragu, jangan cuba menghafal jadual ketika tertekan; sebaliknya, letakkan kurungan pada setiap kumpulan.
Cara Menjawab Semasa Temu Duga
Apabila penemuduga menunjukkan penapis campuran AND/OR dan bertanya apakah hasil yang dikembalikan, lakukan tiga perkara:
- Nyatakan peraturan keutamaan:
ANDsebelumOR - Susun semula kurungan pertanyaan itu sambil bercakap untuk mendedahkan pengelompokan sebenarnya
- Jejaki satu baris yang mendedahkan pepijat tersebut
Kemudian tawarkan versi yang telah dibetulkan dan diletakkan kurungan. Urutan ini menunjukkan ketelitian seperti pembangun berpengalaman.
Amalan Berjaga-jaga
Amalan profesionalnya ialah: letakkan kurungan pada setiap kumpulan OR, sentiasa. Ia hanya menambah dua aksara, tetapi menghapuskan seluruh kategori pepijat dan komen semakan.
Penyemak kod tidak sepatutnya perlu menilai keutamaan secara mental untuk mengesahkan bahawa sesuatu penapis itu betul. Jadikan pengelompokan itu jelas. Ini ialah salah satu daripada beberapa keadaan apabila sintaks 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');Semakan Pantas
Fikirkan peraturan keutamaan sebelum menjawab.
Ringkasan
Perkara utama:
- Keutamaan logik ialah NOT, kemudian AND, kemudian OR
- Penapis campuran
AND/ORhampir selalu memerlukan kurungan di sekeliling kumpulanOR - Kurungan yang tiada akan meluaskan hasil secara senyap, dan sering menggugurkan sesuatu penapis sepenuhnya
- Gantikan rangkaian panjang
ORpada satu lajur denganIN - Untuk menjawab semasa temu duga: nyatakan peraturan, susun semula kurungan, jejaki satu baris, kemudian baiki
Sentiasa letakkan kurungan pada kumpulan OR, walaupun keutamaan sedia ada memberikan hasil yang sama.
Pelajari Persediaan Temu Duga Pengaturcaraan dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 90
- Pelajaran
- 360
Soalan Lazim
Adakah pelajaran “Keutamaan AND/OR dan Penggunaan Tanda Kurung” percuma?
Ya — teks penuh “Keutamaan AND/OR dan Penggunaan Tanda Kurung” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Persediaan Temu Duga Pengaturcaraan, tingkat taraf kepada CoddyKit PRO. Kursus Persediaan Temu Duga Pengaturcaraan merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Keutamaan AND/OR dan Penggunaan Tanda Kurung”?
Pepijat penapisan yang paling lazim disisipkan oleh penemu duga dalam soalan mereka Anda berlatih Persediaan Temu Duga Pengaturcaraan menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Persediaan Temu Duga Pengaturcaraan?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Persediaan Temu Duga Pengaturcaraan di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “Keutamaan AND/OR dan Penggunaan Tanda Kurung” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Persediaan Temu Duga Pengaturcaraan ini?
Ya. Setiap pelajaran Persediaan Temu Duga Pengaturcaraan menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Keutamaan AND/OR dan Penggunaan Tanda Kurung
- BETWEEN, IN dan Sempadan Inklusif
- LIKE, Kad Liar dan Pelolosan
- Menapis Nilai Terhitung