Home > Archive > SQL_archive > πŸ’‰[SQL] AND, OR, NOT

πŸ’‰[SQL] AND, OR, NOT
SQL

AND, OR, NOT

AND

β€˜AND’ μ—°μ‚°μžλŠ” SQLμ—μ„œ μ—¬λŸ¬ 쑰건을 λ™μ‹œμ— λ§Œμ‘±ν•΄μ•Ό ν•  λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€.

  • 즉, β€˜AND’ λ₯Ό μ‚¬μš©ν•˜λŠ” μΏΌλ¦¬λŠ” λͺ¨λ“  쑰건인 μ°Έ(TRUE)일 λ•Œλ§Œ κ²°κ³Όλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.
  • μ΄λŠ” λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ 더 μ„Έλ°€ν•œ 필터링을 μˆ˜ν–‰ν•˜κ³ μž ν•  λ•Œ μœ μš©ν•˜λ©°, 특히 λ³΅μž‘ν•œ 데이터 μ§‘ν•©μ—μ„œ 기쀀에 λΆ€ν•©ν•˜λŠ” μ •ν™•ν•œ 데이터λ₯Ό 찾고자 ν•  λ•Œ μ€‘μš”ν•œ 역할을 ν•©λ‹ˆλ‹€.

β€˜AND’ μ‚¬μš© 예

  • μ—¬λŸ¬ 기쀀에 λ”°λ₯Έ 데이터 검색 : λ‚˜μ΄κ°€ 30μ„Έ μ΄μƒμ΄λ©΄μ„œ β€˜New York’에 κ±°μ£Όν•˜λŠ” λͺ¨λ“  μ‚¬λžŒμ„ μ°Ύκ³  싢을 λ•Œ
    SELECT * FROM people WHERE age >= 30 AND city = 'New York' ;
    

    이 μΏΌλ¦¬λŠ” β€˜age’ 열이 30 μ΄μƒμ΄λ©΄μ„œ λ™μ‹œμ— β€˜city’ 열이 β€˜New York’인 λͺ¨λ“  행을 λ°˜ν™˜ν•©λ‹ˆλ‹€.

  • λ‚ μ§œ λ²”μœ„μ™€ νŠΉμ • 쑰건을 λ™μ‹œμ— λ§Œμ‘±ν•˜λŠ” 데이터 검색 : 2023λ…„ 1μ›” 1일뢀터 2023λ…„ 3μ›” 31일 사이에 λ“±λ‘λ˜κ³ , μƒνƒœκ°€ β€˜ν™œμ„±ν™”β€™μΈ λͺ¨λ“  계정을 μ°Ύκ³  싢을 λ•Œ
    SELECT * FROM account WHERE registration_date BETWEEN '2023-01-01' AND '2023-03-31' AND status = 'Active';
    

    이 μΏΌλ¦¬λŠ” β€˜registration_date’ κ°€ μ§€μ •λœ λ‚ μ§œ λ²”μœ„ 내에 있으며, β€˜status’ κ°€ β€˜Active’ 인 행을 λ°˜ν™˜ν•©λ‹ˆλ‹€.

β€˜AND’ μ—°μ‚°μžμ˜ νŠΉμ§•

  • β€˜AND’ μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•  λ•ŒλŠ” 각 쑰건이 μ„œλ‘œ μ–΄λ–€ 관계에 μžˆλŠ”μ§€ κ³ λ €ν•΄μ•Ό ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, μƒν˜Έ 배타적인 쑰건을 β€˜AND’ 둜 μ—°κ²°ν•˜λ©΄ κ²°κ³Όκ°€ 항상 λΉ„μ–΄ μžˆμ„ κ²ƒμž…λ‹ˆλ‹€.
  • μ„±λŠ₯에 영ν–₯을 λ―ΈμΉ  수 μžˆλŠ” 큰 데이터 μ„ΈνŠΈμ—μ„œλŠ” μΈλ±μŠ€μ™€ 쑰건의 효율적인 μ‚¬μš©μ΄ μ€‘μš”ν•©λ‹ˆλ‹€. κ°€λŠ₯ν•œ ν•œ, μ„±λŠ₯에 영ν–₯을 덜 λ―ΈμΉ˜λŠ” 쑰건을 λ¨Όμ € μ μš©ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

β€˜AND’ μ—°μ‚°μžλŠ” 볡수의 쑰건을 μ‘°ν•©ν•˜μ—¬ 데이터λ₯Ό ν•„ν„°λ§ν•˜κ³ μž ν•  λ•Œ ν•„μˆ˜μ μΈ λ„κ΅¬μž…λ‹ˆλ‹€.
이λ₯Ό 톡해 더 μ •ν™•ν•˜κ³  의미 μžˆλŠ” 데이터 집합을 얻을 수 있으며, SQL 쿼리 μž‘μ„± μ‹œ λ‹€μ–‘ν•œ 상황에 맞좰 μœ μ—°ν•˜κ²Œ μ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.


OR

β€˜OR’ μ—°μ‚°μžλŠ” SQLμ—μ„œ 주어진 쑰건 쀑 ν•˜λ‚˜ 이상이 μ°Έ(TRUE)일 λ•Œ κ²°κ³Όλ₯Ό λ°˜ν™˜ν•˜κ³ μž ν•  λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€.

  • β€˜OR’ 을 μ‚¬μš©ν•˜λ©΄ μ—¬λŸ¬ 쑰건 쀑 ν•˜λ‚˜λΌλ„ λ§Œμ‘±ν•˜λŠ” 데이터λ₯Ό 선택할 수 μžˆμ–΄, λ°μ΄ν„°λ² μ΄μŠ€ 쿼리의 μœ μ—°μ„±μ„ 크게 ν–₯μƒμ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.
  • β€˜OR’ 은 λ‹€μ–‘ν•œ μ‹œλ‚˜λ¦¬μ˜€μ—μ„œ μœ μš©ν•˜κ²Œ μ‚¬μš©λ˜λ©°, 특히 μ—¬λŸ¬ λ‹€λ₯Έ κ°€λŠ₯성을 λͺ¨λ‘ 포함해야 ν•  λ•Œ μ€‘μš”ν•œ 역할을 ν•©λ‹ˆλ‹€.

β€˜OR’ μ‚¬μš© 예

  • μ—¬λŸ¬ λ‹€λ₯Έ κ°’ 쀑 ν•˜λ‚˜λ₯Ό λ§Œμ‘±ν•˜λŠ” 데이터 검색 : β€˜Manager’ λ˜λŠ” β€˜Sales’ λΆ€μ„œμ— μ†ν•œ λͺ¨λ“  직원을 μ°Ύκ³  싢을 λ•Œ
    SELECT * FROM employees WHERE department = 'Manager' OR department = 'Sales';
    

    이 μΏΌλ¦¬λŠ” β€˜department’ 열이 β€˜Managerβ€™μ΄κ±°λ‚˜ β€˜Sales’인 λͺ¨λ“  행을 λ°˜ν™˜ν•©λ‹ˆλ‹€.

  • μ—¬λŸ¬ 쑰건 쀑 ν•˜λ‚˜ 이상을 λ§Œμ‘±ν•˜λŠ” 데이터 검색 : λ‚˜μ΄κ°€ 18μ„Έ λ―Έλ§Œμ΄κ±°λ‚˜ 65μ„Έ 이상인 λͺ¨λ“  μ‚¬λžŒμ„ μ°Ύκ³  싢을 λ•Œ
    SELECT * FROM people WHERE age < 18 OR age >= 65;
    

    이 μΏΌλ¦¬λŠ” β€˜age’ 열이 18μ„Έ λ―Έλ§Œμ΄κ±°λ‚˜ 65μ„Έ 이상인 λͺ¨λ“  행을 λ°˜ν™˜ν•©λ‹ˆλ‹€.

β€˜OR’ μ—°μ‚°μžμ˜ νŠΉμ§•

  • β€˜OR’ μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•  λ•ŒλŠ” 주어진 쑰건 쀑 ν•˜λ‚˜λΌλ„ 참이면 κ²°κ³Ό 집합에 ν•΄λ‹Ή 행이 ν¬ν•¨λ©λ‹ˆλ‹€. λͺ¨λ“  쑰건이 거짓(FALSE)인 κ²½μš°μ—λ§Œ κ²°κ³Όμ—μ„œ μ œμ™Έλ©λ‹ˆλ‹€.
  • μ—¬λŸ¬ 개의 λ‹€λ₯Έ κ°€λŠ₯성을 ν—ˆμš©ν•˜λŠ” 데 μœ μš©ν•˜λ©°, 특히 μ‚¬μš©μžμ˜ μž…λ ₯μ΄λ‚˜ 선택에 따라 λ‹€μ–‘ν•œ κ²°κ³Όλ₯Ό λ³΄μ—¬μ€˜μ•Ό ν•  λ•Œ 자주 μ‚¬μš©λ©λ‹ˆλ‹€.
  • β€˜AND’ μ—°μ‚°μžμ™€ ν•¨κ»˜ μ‚¬μš©λ  수 μžˆμœΌλ‚˜, 이 경우 μš°μ„  μˆœμœ„μ— μ£Όμ˜ν•΄μ•Ό ν•˜λ©°, κ΄„ν˜Έλ₯Ό μ‚¬μš©ν•˜μ—¬ μ—°μ‚°μž κ°„μ˜ μš°μ„  μˆœμœ„λ₯Ό λͺ…ν™•ν•˜κ²Œ ꡬ뢄해야 ν•©λ‹ˆλ‹€.

μ‚¬μš© μ‹œ 고렀사항

  • β€˜OR’ μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•  λ•ŒλŠ” 쿼리의 μ„±λŠ₯에 μ£Όμ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€. 특히 λŒ€κ·œλͺ¨ 데이터 μ…‹μ—μ„œλŠ” β€˜OR’ 쑰건이 λ§Žμ„ 수둝 쿼리 μ„±λŠ₯이 μ €ν•˜λ  수 μžˆμŠ΅λ‹ˆλ‹€.
  • κ°€λŠ₯ν•œ 경우, β€˜OR’ 을 μ‚¬μš©ν•˜λŠ” λŒ€μ‹  λ‹€λ₯Έ μ ‘κ·Ό 방식을 κ³ λ €ν•΄λ³΄λŠ” 것도 μ’‹μŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, β€˜IN’ μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜λ©΄ β€˜OR’ κ³Ό μœ μ‚¬ν•œ κ²°κ³Όλ₯Ό 더 효율적으둜 얻을 수 μžˆμ„ λ•Œκ°€ λ§ŽμŠ΅λ‹ˆλ‹€.
  • λ³΅μž‘ν•œ μΏΌλ¦¬μ—μ„œλŠ” β€˜OR’ κ³Ό β€˜AND’ λ₯Ό ν˜Όν•©ν•˜μ—¬ μ‚¬μš©ν•  λ•Œ κ΄„ν˜Έλ₯Ό 적절히 μ‚¬μš©ν•˜μ—¬ λͺ…ν™•ν•œ 논리 ꡬ쑰λ₯Ό μœ μ§€ν•˜λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€.

β€˜OR’ μ—°μ‚°μžλŠ” λ‹€μ–‘ν•œ 쑰건을 μœ μ—°ν•˜κ²Œ μ²˜λ¦¬ν•˜κ³ μž ν•  λ•Œ 맀우 μœ μš©ν•˜λ©°, SQL 쿼리λ₯Ό μž‘μ„±ν•˜λŠ” κ³Όμ •μ—μ„œ ν•„μš”ν•œ κ²°κ³Όλ₯Ό μ–»κΈ° μœ„ν•΄ λ‹€μ–‘ν•œ μ‹œλ‚˜λ¦¬μ˜€λ₯Ό κ³ λ €ν•  수 있게 ν•΄μ€λ‹ˆλ‹€.


NOT

β€˜NOT’ μ—°μ‚°μžλŠ” SQLμ—μ„œ 쑰건의 논리λ₯Ό λΆ€μ •ν•  λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€.

  • 즉, β€˜NOT’ 은 νŠΉμ • 쑰건이 거짓(FALSE)일 λ•Œ μ°Έ(TRUE)인 κ²°κ³Όλ₯Ό λ°˜ν™˜ν•˜λ„λ‘ ν•©λ‹ˆλ‹€.
    • 이λ₯Ό 톡해 νŠΉμ • 쑰건을 λ§Œμ‘±ν•˜μ§€ μ•ŠλŠ” 데이터λ₯Ό κ²€μƒ‰ν•˜κ³ μž ν•  λ•Œ 맀우 μœ μš©ν•˜κ²Œ ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • β€˜NOT’ μ—°μ‚°μžλŠ” β€˜WHERE’ 절 λ‚΄μ—μ„œ λ‹€λ₯Έ μ—°μ‚°μž(예: β€˜IN’, β€˜BETWEEN’, β€˜LIKE’, β€˜EXISTS’)와 ν•¨κ»˜ μ‚¬μš©λ˜μ–΄, ν•΄λ‹Ή 쑰건의 λ°˜λŒ€λ˜λŠ” κ²°κ³Όλ₯Ό μ–»κ³ μž ν•  λ•Œ μ‚¬μš©λ©λ‹ˆλ‹€.

β€˜NOT’ μ‚¬μš© 예

  • νŠΉμ • 쑰건을 λ§Œμ‘±ν•˜μ§€ μ•ŠλŠ” 데이터 검색 : β€˜Sales’ λΆ€μ„œμ— μ†ν•˜μ§€ μ•ŠλŠ” λͺ¨λ“  직원을 μ°Ύκ³  싢을 λ•Œ
    SELECT * FROM employees WHERE NOT department = 'Sales';
    

    μ΄λŠ” β€˜department’ κ°€ β€˜Sales’ κ°€ μ•„λ‹Œ λͺ¨λ“  행을 λ°˜ν™˜ν•©λ‹ˆλ‹€.

  • νŠΉμ • λ²”μœ„μ— μ†ν•˜μ§€ μ•ŠλŠ” 데이터 검색 : 20μ„Έμ—μ„œ 30μ„Έ 사이가 μ•„λ‹Œ μ‚¬λžŒμ„ μ°Ύκ³  싢을 λ•Œ
    SELECT * FROM people WHERE NOT age BETWEEN 20 AND 30;
    

    μ΄λŠ” λ‚˜μ΄κ°€ 20μ„Έ 이상 30μ„Έ μ΄ν•˜κ°€ μ•„λ‹Œ λͺ¨λ“  μ‚¬λžŒμ„ μ°ΎμŠ΅λ‹ˆλ‹€.

  • μ§€μ •λœ λͺ©λ‘μ— ν¬ν•¨λ˜μ§€ μ•ŠλŠ” 데이터 검색 : β€˜Manager’와 β€˜Sales’ λΆ€μ„œμ— μ†ν•˜μ§€ μ•Šμ€ λͺ¨λ“  직원을 μ°Ύκ³  싢을 λ•Œ
    SELECT * FROM employee WHERE department NOT IN ('Manager', 'Sales');
    

    이 μΏΌλ¦¬λŠ” β€˜department’ κ°€ β€˜Manager’ λ˜λŠ” β€˜Sales’가 μ•„λ‹Œ λͺ¨λ“  행을 λ°˜ν™˜ν•©λ‹ˆλ‹€.

β€˜NOT’ μ—°μ‚°μžμ˜ νŠΉμ§•.

  • β€˜NOT’ μ—°μ‚°μžλŠ” 쑰건의 논리λ₯Ό λΆ€μ •ν•˜μ—¬, 쑰건이 거짓일 λ•Œ 참을 λ°˜ν™˜ν•©λ‹ˆλ‹€.
  • β€˜NOT’ 은 β€˜WHERE’ μ ˆμ—μ„œ λ‹€μ–‘ν•œ μ—°μ‚°μžμ™€ ν•¨κ»˜ μ‚¬μš©λ  수 있으며, νŠΉμ • 쑰건을 μ œμ™Έν•œ 데이터λ₯Ό μ„ νƒν•˜κ³ μž ν•  λ•Œ μœ μš©ν•©λ‹ˆλ‹€.
  • λ³΅μž‘ν•œ μ‘°κ±΄μ—μ„œλŠ” β€˜NOT’ 을 μ‚¬μš©ν•˜μ—¬ μ˜ˆμ™Έμ μΈ 경우λ₯Ό μ‰½κ²Œ 필터링할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ‚¬μš© μ‹œ 고렀사항.

  • β€˜NOT’ μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•  λ•ŒλŠ” 쿼리의 μ„±λŠ₯에 μ£Όμ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€. 특히, β€˜NOT’ 이 ν¬ν•¨λœ 쑰건은 인덱슀 ν™œμš©μ΄ μ–΄λ €μ›Œ μ„±λŠ₯ μ €ν•˜λ₯Ό μΌμœΌν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€.
  • λͺ…ν™•ν•˜μ§€ μ•Šμ€ 논리λ₯Ό ν”Όν•˜κΈ° μœ„ν•΄, κ°€λŠ₯ν•œ ν•œ β€˜NOT’ 의 μ‚¬μš©μ„ μ΅œμ†Œν™”ν•˜κ³ , λŒ€μ‹  λͺ…ν™•ν•œ 쑰건을 μ‚¬μš©ν•˜μ—¬ μ›ν•˜λŠ” κ²°κ³Όλ₯Ό μ–»λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

β€˜NOT’ μ—°μ‚°μžλŠ” SQL μΏΌλ¦¬μ—μ„œ νŠΉμ • 쑰건을 λ§Œμ‘±ν•˜μ§€ μ•ŠλŠ” 데이터λ₯Ό ν•„ν„°λ§ν•˜κ³ μž ν•  λ•Œ μœ μš©ν•˜κ²Œ μ‚¬μš©λ©λ‹ˆλ‹€.
ν•˜μ§€λ§Œ, 쿼리의 λͺ…ν™•μ„±κ³Ό μ„±λŠ₯을 κ³ λ €ν•˜μ—¬ μ‹ μ€‘ν•˜κ²Œ μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.