본문 바로가기
초보자를 위한 SQL 200제/이론 & 예제

007 WHERE절 배우기 (숫자 데이터 검색)

by Hwanii_ 2023. 7. 7.
728x90

 

 

 

 

검색을 원하는 숫자 데이터를 찾아 출력 하는 방법은 무엇일까 ?

 

WHERE 절을 사용 하면 된다.

 

1.

월급이 3000인 사원들의 이름, 월급, 직업을 출력 하기.

 

SELECT ename, sal, job
FROM emp
WHERE sal = 3000;

 

ENAME             SAL JOB      
---------- ---------- ---------
FORD             3000 ANALYST  
SCOTT            3000 ANALYST

 

월급이 3000인 사원의 이름과 월급, 직원을 출력하는 SQL 구문 이다.

 

검색하기 원하는 조건을 WHERE 절에 작성해서 데이터를 검색 한다.

 

WHERE 절은 FROM 절 다음에 작성 하면 된다.

 

>>

 

1) emp 테이블 에서,

 

2) 이름과 월급과 직업을 의미하는 컬럼명을 기술 한다.

 

3) 월급이 3000인 사원들의 데이터로만 행을 제한 한다.

 

2.

WHERE 절의 검색 조건으로 사용하는 비교 연산자.

 

비교 연산자

연산자 의미
> 크다
< 작다
>= 크거나 같다
<= 작거나 같다
= 같다
!= 같지 않다
^= 같지 않다
<> 같지 않다

 

기타 비교 연산자

연산자 의미
BETWEEN AND ~ 사이에 있는
LIKE 일치하는 문자 패턴 검색
IS NULL NULL 값인지 여부
IN 값 리스트 중 일치하는 값 검색

 

3.

월급이 3000 이상인 사원들의 이름과 월급을 출력하는 SQL 문장을 작성 하기.

 

SELECT ename as 이름, sal as 월급
FROM emp
WHERE sal >= 3000;

 

이름                 월급
---------- ----------
KING             5000
FORD             3000
SCOTT            3000

 

WHERE 절에서 sal >= 3000 이라는 검색 조건을 줘서,

월급이 3000 이상인 사원들의 데이터만 검색했다.

 

as를 사용해서, 칼럼에 별칭을 주었다.

 

4.

WHERE 절에 칼럼명 대신, 별칭을 적으면 어떻게 될까 ?

 

결론부터 말하면, 에러가 발생 한다.

 

SELECT ename as 이름, sal as 월급
FROM emp
WHERE 월급 >= 3000;

 

명령의 1 행에서 시작하는 중 오류 발생 -
SELECT ename as 이름, sal as 월급
FROM emp
WHERE 월급 >= 3000
오류 발생 명령행: 3 열: 15
오류 보고 -
SQL 오류: ORA-00904: "월급": 부적합한 식별자
00904. 00000 -  "%s: invalid identifier"
*Cause:    
*Action:

 

월급이 부적합한 식별자 라면서, 에러가 발생 한다.

 

왜 그러는걸까 ?

 

이유는 아래와 같다.

 

코딩 순서 SQL 실행 순서 SQL
1 SELECT ename as 이름 sal as 월급

FROM emp

WHERE 월급 >= 3000;
3 SELECT ename as 이름 sal as 월급

FROM emp

WHERE 월급 >= 3000;
2 1
3 2

 

오라클 DBMS는 FROM 절을 실행 하고 나서 WHERE 절을 실행 한다.

 

즉, SELECT 절을 지금 상황에서, 마지막에 실행 하기 때문에,

별칭을 인식 할 수 없어서 발생한 에러 이다.

반응형