학습 기록/DataBase

23.05.03 / DataBase / WHERE

SooHw 2023. 5. 6. 10:45

WHERE

 

SELECT  컬럼

   FROM  테이블

WHERE  조건

SELECT *
  FROM EMPLOYEES
 WHERE JOB_ID = 'IT_PROG';

*산술연산자 (-, +, *, /)

비교연산자 (=, >, >=, <, <=)

등가비교연산자 ( = / !=, <>, ^=, NOT)    *실무에서 <>를 가장 많이 사용, NOT은 부정의 의미ex)(WHERE NOT 조건)

 

=논리연산자 (AND, OR)=

SELECT  컬럼

   FROM  테이블

WHERE  조건1

AND/OR  조건2

SELECT EMPLOYEE_ID, FIRST_NAME
  FROM EMPLOYEES
 WHERE DEPARTMENT_ID = 90
   AND SALARY >= 5000;

 

*AND보다 OR이 먼저 연산

BUT ()로 묶으면 먼저연산

WHERE (DEPARTMENT_ID = 100
    OR DEPARTMENT_ID = 90)
   AND EMPLOYEE_ID = 101;

 

*IS NULL/ IS NOT NULL

WHERE 조건 IS NULL

SELECT *
  FROM EMPLOYEES
 WHERE FIRST_NAME IS NULL;

 

=IN=

= + OR 

ex) IN ( A, B, C)  ==  A OR B OR C

*NULL이 포함되면 무시하고 진행  -> IS NULL이 맞는 연산이라 틀린 연산식이지만 OR 연산이라 맞는부분만 연산

 

SELECT *
  FROM EMPLOYEES
 WHERE DEPARTMENT_ID = 30
    OR DEPARTMENT_ID = 50
    OR DEPARTMENT_ID = 90;

이문장을 

SELECT *
  FROM EMPLOYEES
 WHERE DEPARTMENT_ID IN (30, 50, 90);

이렇게

 

=NOT IN=

<> + AND

ex) NOT IN (A, B, C) == A AND B AND C

*NULL 포함되면 ERROR

SELECT *
  FROM EMPLOYEES
 WHERE DEPARTMENT_ID <> 30
   AND DEPARTMENT_ID <> 50
   AND DEPARTMENT_ID <> 90;

이문장을 

SELECT *
  FROM EMPLOYEES
 WHERE DEPARTMENT_ID NOT IN (30, 50, 90);

이렇게

 

=BETWEEN=

WHERE 조건 BETWEEN 조건 AND 조건

SELECT FIRST_NAME, SALARY
  FROM EMPLOYEES
 WHERE SALARY >= 10000
   AND SALARY < 20000;
SELECT FIRST_NAME, SALARY
  FROM EMPLOYEES
 WHERE SALARY BETWEEN 10000 AND 19999;

 

LIKE 특정조건 검색 (와일드카드)

컬럼 LIKE '문자%'      - '문자'로 끝나는

컬럼 LIKE '%문자'      - '문자'로 시작하는

컬럼 LIKE '%문자%'   - '문자' 포함하는

컬럼 LIKE 's__'           - s로 시작하는 3글자

컬럼 LIKE '__s'           - s로 끝나는 3글자

* A로 시작, b로 끝 -> 'A%b'

*이름 두번째가 e -> '_e%'