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 절을 지금 상황에서, 마지막에 실행 하기 때문에,
별칭을 인식 할 수 없어서 발생한 에러 이다.
반응형
'초보자를 위한 SQL 200제 > 이론 & 예제' 카테고리의 다른 글
009 산술 연산자 배우기 (*, /, +, -) (0) | 2023.07.09 |
---|---|
008 WHERE절 배우기 2 (문자와 날짜 검색) (0) | 2023.07.09 |
006 데이터를 정렬해서 출력하기 (ORDER BY) (0) | 2023.07.07 |
005 중복된 데이터를 제거해서 출력하기 (DISTINCT) (0) | 2023.07.06 |
004 연결 연산자 사용하기 ( || ) (0) | 2023.07.03 |