0Pricing
SQL Interview Prep · Lekcja

Pierwszeństwo AND/OR i używanie nawiasów

Najczęstszy błąd filtrowania, który rekruterzy celowo umieszczają w pytaniach

Pierwszeństwo AND/OR i używanie nawiasów to bezpłatna lekcja SQL Interview Prep na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej SQL Interview Prep, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs SQL Interview Prep zawiera 4 lekcji w sumie.

Pułapka zastawiana przez osoby prowadzące rozmowy techniczne

Najczęstszy błąd filtrowania podczas rozmów technicznych na pierwszy rzut oka wygląda poprawnie. Otrzymuje Pan/Pani polecenie: znaleźć zamówienia klienta 5, które mają status oczekujące lub wysłane. Kandydat zapisuje klauzulę WHERE z połączonymi operatorami AND i OR, po czym otrzymuje dodatkowe wiersze.

Dlaczego? Ponieważ AND ma wyższy priorytet niż OR. Baza danych najpierw ocenia wszystkie pary AND, a dopiero potem operatory OR. Ta lekcja utrwala tę zasadę, aby nie tracić przez nią punktów.

Priorytet operatorów w jednym zdaniu

W każdym dialekcie SQL operatory logiczne mają następujący priorytet: najpierw NOT, następnie AND, a na końcu OR.

  • NOT ma najwyższy priorytet
  • AND ma średni priorytet
  • OR ma najniższy priorytet

Zatem A OR B AND C należy odczytać jako A OR (B AND C), a nigdy jako (A OR B) AND C. Osoba prowadząca rozmowę liczy na to, że ta zasada zostanie zapomniana.

Błędne zapytanie

Oto zapytanie, które kandydat zapisuje dla przypadku klient 5, status oczekujący lub wysłany. Wygląda poprawnie, ale takie nie jest.

Ponieważ AND ma wyższy priorytet, SQL odczytuje je jako (customer_id = 5 AND status = 'pending') OR status = 'shipped'. Druga gałąź nie zawiera żadnego filtra klienta, więc zwraca wysłane zamówienia od każdego klienta.

SELECT *
FROM orders
WHERE customer_id = 5
  AND status = 'pending'
  OR status = 'shipped';

Rozwiązanie: nawiasy

Należy ująć gałąź OR w nawiasy, aby filtr klienta dotyczył obu statusów. Nawiasy zmieniają priorytet operatorów i jasno wyrażają intencję.

Teraz SQL najpierw ocenia zgrupowane wyrażenie OR, a następnie stosuje customer_id = 5 do całej grupy. Doświadczeni recenzenci dodają nawiasy nawet wtedy, gdy priorytet operatorów już zapewnia poprawne działanie — wyłącznie dla czytelności.

SELECT *
FROM orders
WHERE customer_id = 5
  AND (status = 'pending' OR status = 'shipped');

Prześledzenie tabeli prawdy

Weźmy wysłane zamówienie klienta 9. Prześledźmy błędną wersję:

  • customer_id = 5 ma wartość false
  • status = 'pending' ma wartość false
  • false AND false ma wartość false
  • false OR (status = 'shipped' is true) ma wartość true

Wiersz zostaje zwrócony, mimo że nie dotyczy klienta 5. Głośne prześledzenie jednego konkretnego wiersza jest dokładnie tym, co osoby prowadzące rozmowy techniczne chcą zobaczyć.

NOT ma najwyższy priorytet

NOT dotyczy tylko warunku, który występuje bezpośrednio po nim. Zatem NOT status = 'open' AND priority = 'high' oznacza (NOT status = 'open') AND priority = 'high'.

Jeśli intencją jest zanegowanie całości, należy użyć nawiasów: NOT (status = 'open' AND priority = 'high'). Zgodnie z prawem de Morgana jest to równoważne status <> 'open' OR priority <> 'high'.

SELECT *
FROM tickets
WHERE NOT (status = 'open' AND priority = 'high');

Przykład z trzema warunkami

Znajdź produkty, które są (elektroniką lub sprzętem AGD) i dostępne w magazynie. Bez nawiasów filtr dostępności dotyczyłby tylko sprzętu AGD.

Poniższe zgrupowane zapytanie jest czytelne: wybierz jedną z dwóch kategorii, a następnie wymagaj dostępności. Zasada jest następująca: gdy zapytanie łączy AND z OR, niemal zawsze trzeba ująć grupę OR w nawiasy.

SELECT *
FROM products
WHERE (category = 'electronics' OR category = 'appliances')
  AND in_stock = true;

IN jako czytelniejsza alternatywa

Długi łańcuch operatorów OR dla tej samej kolumny jest jednocześnie podatny na błędy i rozwlekły. Zastąp go operatorem IN, który nie budzi wątpliwości i nie wymaga nawiasów.

Poniższe zapytanie jest dokładnie równoważne poprzedniemu, ale trudniej je zepsuć. Rekruterzy doceniają taką refaktoryzację, ponieważ pokazuje ona zrozumienie zarówno poprawności, jak i czytelności kodu.

SELECT *
FROM products
WHERE category IN ('electronics', 'appliances')
  AND in_stock = true;

Pierwszeństwo operatorów w filtrach obliczanych

Pierwszeństwo operatorów ma zastosowanie również wtedy, gdy łączone są działania arytmetyczne i logika. W wyrażeniu price * 1.2 > 100 OR discount = 0 AND active = true najpierw są rozwiązywane działania arytmetyczne i porównania, następnie AND, a na końcu OR.

Zatem wyrażenie należy odczytać jako (price * 1.2 > 100) OR ((discount = 0) AND (active = true)). W razie wątpliwości nie należy pod presją próbować zapamiętywać tabeli — wystarczy ująć każdą grupę w nawiasy.

Jak odpowiedzieć na żywo

Gdy rekruter pokazuje filtr łączący AND i OR oraz pyta co to zwraca, należy wykonać trzy czynności:

  • podać zasadę pierwszeństwa: AND przed OR
  • na głos przepisać zapytanie z nawiasami, aby ujawnić jego rzeczywiste grupowanie
  • prześledzić jeden wiersz, który ujawnia błąd

Następnie należy przedstawić poprawioną wersję z nawiasami. Taka sekwencja pokazuje rygor typowy dla doświadczonego programisty.

Nawyk zabezpieczający

Profesjonalny nawyk jest następujący: zawsze ujmować każdą grupę OR w nawiasy. Kosztuje to dwa znaki i eliminuje całą klasę błędów oraz uwag podczas przeglądu kodu.

Osoby przeglądające kod nigdy nie powinny musieć oceniać pierwszeństwa operatorów w myślach, aby potwierdzić poprawność filtra. Grupowanie powinno być widoczne. To jeden z nielicznych przypadków, w których nadmiarowa składnia jest powszechnie uznawana za dobry styl.

SELECT order_id, status
FROM orders
WHERE customer_id = 5
  AND (status = 'pending' OR status = 'shipped');

Szybki test

Przed odpowiedzią proszę rozważyć zasadę pierwszeństwa operatorów.

Podsumowanie

Najważniejsze wnioski:

  • Pierwszeństwo operatorów logicznych to NOT, następnie AND, a potem OR
  • Filtry łączące AND/OR niemal zawsze wymagają nawiasów wokół grupy OR
  • Brak nawiasu po cichu rozszerza wyniki, często całkowicie pomijając jeden z filtrów
  • Długie łańcuchy OR dla jednej kolumny należy zastępować operatorem IN
  • Odpowiadając na żywo: podaj zasadę, dodaj nawiasy, prześledź jeden wiersz, a następnie popraw zapytanie

Grupy OR zawsze należy ujmować w nawiasy, nawet gdy kolejność operatorów i tak daje poprawny wynik.

Często zadawane pytania

Czy lekcja „Pierwszeństwo AND/OR i używanie nawiasów” jest bezpłatna?

Tak — pełny tekst „Pierwszeństwo AND/OR i używanie nawiasów” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu SQL Interview Prep, przejdź na CoddyKit PRO. Kurs SQL Interview Prep zawiera 4 lekcji w sumie.

Co nauczysz się w „Pierwszeństwo AND/OR i używanie nawiasów”?

Najczęstszy błąd filtrowania, który rekruterzy celowo umieszczają w pytaniach Ćwiczysz SQL Interview Prep z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć SQL Interview Prep?

Nie wymagamy żadnego doświadczenia. SQL Interview Prep w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Pierwszeństwo AND/OR i używanie nawiasów”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji SQL Interview Prep?

Tak. Każda lekcja SQL Interview Prep zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Pierwszeństwo AND/OR i używanie nawiasów
  2. BETWEEN, IN i granice włączne
  3. LIKE, symbole wieloznaczne i znaki ucieczki
  4. Filtrowanie według wartości obliczanych
← Powrót do SQL Interview Prep