오라클 별칭(Oracle Alias)
오라클에서 테이블이나 컬럼의 이름이 긴 경우 또는 함수, 수식등을 사용하여 컬럼명이 없는 경우 별도의 이름을 부여해서 사용할 수 있는데 이를 별칭(Alias) 이라고 하며 컬럼 별칭(Column Alias), 테이블 별칭(Table Alias) 두가지가 있습니다.
컬럼 별칭은 “컬럼명 AS Alias명” 또는 “컬럼명 Alias명” 두 형태로 작성할 수 있습니다.
테이블 별칭은 “테이블명 Alias명” 형태로 작성할 수 있으며 컬럼 별칭과 달리 AS 사용은 불가능 합니다.
Alias명에 공백이 없는 경우에는 “를 생략할 수 있습니다.
컬럼 별칭 예문 입니다. 사원(EMP)테이블에서 10번 부서원들의 사원명(ename)과 급여(sal), 연봉을 추출하는 쿼리문 입니다. |
SELECT ename AS "사원명" , sal "급여" , TO_CHAR(sal * 12, '999,999,999') AS "연봉" FROM emp WHERE deptno = 10 |
컬럼 Alias명에 공백이 없는 경우에는 “를 생략할 수 있습니다. |
SELECT ename AS 사원명 , sal 급여 , TO_CHAR(sal * 12, '999,999,999') AS 년봉 FROM emp WHERE deptno = 10 |
<실행결과>
| 사원명 | 급여 | 년봉 |
1 | CLARK | 2450 | 29,400 |
2 | MILLER | 1300 | 15,600 |
기본적으로 조인되는 테이블의 컬럼이 SELECT 리스트에 출현하는 경우 어느 테이블 컬럼인지 소속을 밝혀야 합니다. 조인되는 두 테이블의 한쪽에만 속하는 컬럼 이라면 소속을 밝히지 않아도 되지만 두 테이블에 모두 존재하는 컬럼이라면 반드시 어느 테이블인지 소속을 밝혀야 합니다. EMP 테이블과 DEPT 테이블을 조인하여 10번 부서원들의 이름, 부서코드, 부서명을 추출하는 쿼리문으로 테이블 별칭을 사용하지 않은 경우 입니다. SELECT 리스트의 컬럼에 대해 소속을 밝혀주기 위해 컬럼명 앞에 FROM절에서 사용한 실제 테이블명을 사용하여 소속을 밝혔습니다. SQL 구문이 복잡해 보입니다. |
SELECT emp.ename , emp.deptno , dept.dname FROM emp, dept WHERE emp.deptno = dept.deptno AND emp.deptno = 10 |
<실행결과>
ename | deptno | dname | |
1 | CLARK | 10 | ACCOUNTING |
2 | MILLER | 10 | ACCOUNTING |
EMP, DEPT 테이블의 한쪽에만 속한 컬럼은 컬럼의 소속을 밝히지 않아도 됩니다. |
SELECT ename , emp.deptno , dname FROM emp, dept WHERE emp.deptno = dept.deptno AND emp.deptno = 10 |
EMP, DEPT 테이블의 양쪽에 모두 속한 컬럼(deptno)은 반드시 컬럼의 소속을 밝혀야 합니다. |
SELECT ename , deptno ❶ , dname FROM emp, dept WHERE emp.deptno = dept.deptno AND emp.deptno = 10 |
<실행결과>
ORA-00918: 열의 정의가 애매합니다
00918. 00000 - "column ambiguously defined"
2행, 13열에서 오류 발생
❶ deptno 컬럼이 속한 테이블을 명확하게 해주지 않아서 어느 테이블에 속한 deptno인지 알 길이 없습니다. 그래서 실행 결과 오류가 발생했습니다.
이번에는 테이블 별칭을 이용해 이 구문의 모호함을 제거해 봅시다. SELECT 리스트의 컬럼에 대해 소속을 밝혀주기 위해 컬럼명 앞에 테이블 별칭을 사용했습니다. SQL 구문이 이전보다 간단해 보이며 가독성도 좋습니다. |
SELECT E.ename , E.deptno ❶ , D.dname FROM emp E, dept D WHERE E.deptno = D.deptno AND D.deptno = 10 |
<실행결과>
ename | deptno | dname | |
1 | CLARK | 10 | ACCOUNTING |
2 | MILLER | 10 | ACCOUNTING |
❶ deptno 컬럼에 속한 테이블을 명시해줬습니다. E.deptno는 E 테이블에 속한 컬럼이라는 뜻이므로 이번에는 오류 없이 구문이 실행되었습니다.
#ORACLE별칭 #SQL #SQL별칭 #오라클Alias #SQLAlias #SQL교육 #오라클별칭