본문 바로가기
Database/Oracle

[Oracle] 3.Where 절 (조건)

by tangle96 2021. 6. 3.

1.Where

대망의 Where

 

조금 더 세분화된 데이터를 추출하기 위해서는 필수적인 기능이다

 

EX) SELECT * FROM EMPLOYEE WHERE ~

 

위치는 FROM TABLE명 -> 뒤에 위치하며

 

특정 조건을 걸어주는데 사용된다

 

예를들어 EMPLOYEE 테이블에서 SALARY의 값이 1000이상인 사원이름만을 출력하고싶다면 ..?

 

'SALARY >= 1000' 조건을 생각 해 볼 수 있다.

 

바로 적용해보자

 

SELECT ENAME,SALARY FROM EMPLOYEE WHERE SALARY >= 1000;

 

사원의 이름과 급여를 같이 출력해 (SELECT ENAME,SALARY)

EMPLOYEE 테이블로 부터 (FROM EMPLOYEE)

근데 어떤조건? SALARY 값이 1000이상인거! (WHERE SALARY >= 1000;)

 

즉 SELECT의 데이터 추출은 일정한 구조로 영어 문법처럼 정방향 해석, 거꾸로 해석 편한 대로 생각하며

쿼리문을 작성하는게 핵심이라고 느꼈다.

 

이런식으로 쿼리를 작성하면 나중에 나올 서브쿼리나 JOIN에서도 크게 헤메지 않게 되는 것 같다.

 

물론 손에 익어버리면 내 손이 먼저 써버리긴 합니다

 

또 다른 조건 들로는

 

LIKE 뒤에는 ' ' 작은 따옴표 안에 원하는 문자를 넣을 수 있는데

 

ENAME에 E가 들어가는 사람을 찾고 싶다면

 

WHERE ENAME LIKE '%E%';

 

요렇게 작성할 수 있는데 요 %는 앞 , 뒤로 상관 없어요~ 라는 의미로 해석하면 편하다

 

'%E' E앞쪽에 뭐가 오든 상관 없음 AAAE 요런거겠죠

 

'E%' E뒤쪽에 뭐가 오든 상관없음 EAAA 이런거 있겠죠

 

'%E%' E앞뒤로 아무상관없어 E 들어간거 출력해줘 빨리 요런느낌이죠

 

다시 돌아와서 이런 문제가 있다고 해봅시다

 

select * from employee where hiredate like '81%';

 

입사년도가 81년에 해당되는 컬럼을 출력하고싶다

 

HIREDATE가 83121312`~~~~~~ , 75~~~~~~, 81~~~~~ 요렇게 되어있으니

 

81 즉, 연도 뒤에 숫자데이터는 상관없으니 81%로 표현함을 이해하셨나요

 

요렇게 81년도만 딱 출력 되었습니다.

 

WHERE 조건만 잘 사용해도 특정 컬럼의 특정 값만을 더 잘 뽑아낼 수 있습니다.

댓글