SQL 레코드 검색 (2)

준영·2022년 12월 19일
0
post-thumbnail

레코드 검색 (2)


테이블 열의 하위 집합 검색하기

테이블에서 모든 열이 아닌, 특정 열의 값을 보려고 한다면?

예를 들어서 사원며으 부서 번호 및 급여만 보고싶다면, 아래와 같이 쿼리를 실행하면 된다.

SELECT ename, deptno, sal FROM emp


열에 의미 있는 이름 지정하기

쿼리에서 반환된 열의 이름을 더 알아보기 쉽고 이해가기 쉽게 변경하려고 한다면?

각 사원의 급여 및 커미션을 반환하는 쿼리를 짜려고 한다.

SELECT sal, comm FROM emp

여기서 sal은 무엇을 의미할까? comm은? 이러한 것들에 유의미한 레이블을 지정하려고 한다.
🤔 아무것도 모르는 사람이 봤을 때, 해당하는 열의 이름이 무엇을 뜻하는지 쉽게 알 수 있으면 얼마나 좋을까?

쿼리 결과의 이름을 변경하려면 원래 이름 AS 새로운 이름 형식으로 AS 키워드를 사용한다.

  • 일부 데이터베이스에서는 AS를 쓸 필요가 없지만 모두 용인한다.
SELECT sal AS salary, comm AS commission FROM emp

AS 키워드를 사용하여 쿼리에서 반환된 열에 새 이름을 지정하는 것을 해당 열의 별칭 지정이라고 하며, 사용자가 지정한 새 이름을 별칭이라고 한다.


WHERE 절에서 별칭이 지정된 열 참조하기

더 의미 있는 열 이름을 제공하고자 결과셋에 별칭을 적용하고, WHERE 절을 사용하여 일부 행을 제외하려 한다면?

SELECT sal AS salary, comm AS commission 
	FROM emp
WHERE salary < 5000

하지만 WHERE 절에서 별칭 이름을 참조하려다가 실패한다.

00:59:31 SELECT sal AS salary, comm AS commission FROM emp WHERE salary < 5000 LIMIT 0, 1000 Error Code: 1054. Unknown column 'salary' in 'where clause' 0.0047 sec

쿼리를 인라인 뷰로 감싸서 별칭이 지정된 열을 참조할 수 있다.

SELECT *
	FROM (
SELECT sal AS salary, comm AS commission
	FROM emp
    ) X
WHERE salary < 5000

별칭이 있는 쿼리를 인라인 뷰에 배치하면 외부 쿼리에서 별칭 열을 참조할 수 있다.

이유는 WHERE 절은 SELECT 절을 시행하기 전에 판단되므로, 쿼리의 WHERE 절을 평가할 때는 아직 salay와 commission이 존재하지 않는다.

그러나 FROM 절은 WHERE 보다 먼저 평가된다.
원래 쿼리를 FROM 절에 배치하면 해당 쿼리의 결과가 가장 바깥쪽 WHERE 절 이전에 생성되고 가장 바깥쪽 WHERE 절이 별칭 이름을 확인한다.

profile
개인 이력, 포폴 관리 및 기술 블로그 사이트 👉 https://aimzero-web.vercel.app/

0개의 댓글