레이블이 #ORACLE별칭 #SQL #SQL별칭 #오라클Alias #SQLAlias #SQL교육 #오라클별칭인 게시물을 표시합니다. 모든 게시물 표시
레이블이 #ORACLE별칭 #SQL #SQL별칭 #오라클Alias #SQLAlias #SQL교육 #오라클별칭인 게시물을 표시합니다. 모든 게시물 표시

2021년 10월 31일 일요일

오라클 별칭(Oracle Alias)

 

오라클 별칭(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교육 #오라클별칭

(C#교육동영상)C# ADO.NET 실습 ODP.NET/ODAC 설치 오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원

  (C#교육동영상)C# ADO.NET 실습  ODP.NET/ODAC 설치  오라클 함수 호출 실습, C#학원, WPF학원, 닷넷학원, 자바학원 https://www.youtube.com/watch?v=qIPU85yAlzc&list=PLxU-i...