DB/sql

3. where, 연산자

wooweee 2023. 4. 16. 11:48
728x90
  • 주의
  • NULL 값은 특별한 취급이 필요하며, 일반적인 비교 연산자(=, !=, >, < 등)를 사용하여 NULL 값을 비교할 수 없다.
    • 일반적인 비교 연산자 : = , !=, < , > 등등
    • null 값 비교 연산자: IS NULL, IS NOT NULL
where title != null; -- 에러
where title is not null; -- 정상 작동

 

1. where

 

  • where 에 들어가는 것
    1. 형식
    2. 연산자
    3. subquery  - subqueary 블로그에서 설명

 

  • where : 해당 조건일 때만 적용되는 문법
SELECT * FROM STUDENT.S_EMP
WHERE START_DATE < '16/12/31' -- 자동형변환. 별로 좋은 방식 아님
ORDER BY START_DATE ASC -- order By 해도되고 안해도 되고
;

SELECT * FROM STUDENT.S_EMP
WHERE START_DATE < TO_DATE ('16/12/31', 'yy/mm/dd') -- 자동형변환 방지 위한 To_DATE()로 수동 형변환
ORDER BY START_DATE
;

 

 

 

2. 연산자

 

  • 연산자 종류
    1. 논리 비교 연산자 : !=, =, <> , ^= 
    2. SQL 비교 연산자 : between ~ AND ~ , in, like, IS NULL  + Not 붙인 것
    3. 논리 연산자         : AND, OR, NOT

 


2.1.  논리 비교 연산자

 

  • a<>b : a와 b의 값이 달라야 true
SELECT NAME, SALARY 
FROM STUDENT.S_EMP
WHERE SALARY >= 1000 -- 논리비교연산자
ORDER BY SALARY
;

 

 

2.2. SQL 비교 연산자

 

  • SQL 비교 연산자
    • 와일드 카드
      1.  % : 0 ~ N 개
        • 개수 상관 없이 다 적용 가능
        • ex) %1,  %1%  1%  
      2.  _ : only 1개
        • 무조건 1개만, 2자리까지 넘기고 싶으면 _ 여러개 사용하기
        • ex) _1       1_       _1_       __1       1__
  • 주의
    • DML : update, delete 의 where은 field명 = null이 가능 
    • SELECT: field명 = null 사용 X, isNull은 사용 가능

 

SELECT NAME, SALARY 
FROM STUDENT.S_EMP
WHERE SALARY BETWEEN 1000 AND 1300-- sql비교 연산
ORDER BY SALARY
;

SELECT NAME, SALARY , DEPT_ID 
FROM STUDENT.S_EMP
WHERE DEPT_ID IN (110, 113)-- sql비교 연산, in = or 의미
ORDER BY SALARY
;

SELECT NAME, SALARY , DEPT_ID 
FROM STUDENT.S_EMP
WHERE NAME LIKE '김%'
-- sql비교 연산, like = 문자열 패턴 읽음 - 와일드 연산자 사용, % _
ORDER BY SALARY
;

-- %, _ 사용 예시

SELECT *
FROM S_EMP se 
WHERE dept_id  like '_0_'
;

SELECT *
FROM S_EMP se 
WHERE dept_id  like '_1_'
;

SELECT *
FROM S_EMP se 
WHERE dept_id  like '_1'
;

SELECT *
FROM S_EMP se 
WHERE dept_id  like '1___'
;

SELECT *
FROM S_EMP se 
WHERE dept_id  like '1%'
;

 


2.3. 비교 연산자

  • 우선 순위
    1. 논리, sql 비교연산자
    2. and
    3. or  
SELECT NAME, SALARY , DEPT_ID 
FROM STUDENT.S_EMP
WHERE (DEPT_ID=110 OR DEPT_ID=113) 
AND SALARY >= 2000
;