2020년 7월 19일 일요일

오라클, SQL, 칼럼별명

3.2.3 칼럼 별명(Column Alias)

칼럼별명을 설정하여 SQL*Plus 실행결과 출력 시 보이는 칼럼 제목을 다르게 설정할 수 있다. 프로그래밍 언어에서는 칼럼 별칭을 설정하면 그 별명으로 칼럼의 값을 다룰수 있다.

- 칼럼 별명(column alias)은 SELECT 절에 표현식(expression)을 사용할 때 유용하다.

- 칼럼 이름을 기술 후 공백 다음에 별명을 추가한다.

- 칼럼 이름 다음에 AS구를 사용 후 별명을 추가한다.(AS구는 옵션)

- 칼럼 이름 다음에 공백을 두고 쌍따옴표(“, Double Quotation)를 사용하여 별명 내에 공백이나 특수문자를 사용할 수 있다. (별명에 공백이나 특수문자 있으면 쌍따옴표로 싸야 한다.)

- ORDER BY 절에 칼럼 별명 사용가능 하지만 다른 쿼리 구에서는 사용 불가능 하다.

SQL> SELECT (sal+NVL(comm,0))*12 AS ANNUAL FROM EMP;

ANNUAL

----------

9600

22800

……

15600

14 개의 행이 선택되었습니다.

SQL> SELECT (sal+NVL(comm,0))*12 ANNUAL FROM EMP;

ANNUAL

----------

9600

22800

……

15600

14 개의 행이 선택되었습니다.

SQL> SELECT (sal+NVL(comm,0))*12 "연봉" FROM EMP;

연봉

----------

9600

22800

……

15600

14 개의 행이 선택되었습니다.

SQL> SELECT (sal + comm) "Annual Salary" FROM EMP;

Annual Salary

-------------

1900

1750

2650

1500

14 개의 행이 선택되었습니다.

SQL> SELECT sal*12 Annual Salary FROM emp;

SELECT sal*12 Annual Salary FROM emp

*

1행에 오류:

ORA-00923: FROM 키워드가 필요한 위치에 없습니다.

오라클SQL, 산술표현식

3.2.2 산술 표현식(Arithmetic Expression)

칼럼 값에 산술 연산자를 적용하여 계산된 결과, 계산식을 출력할 수 있는 기능을 제공하며 숫자 또는 날짜 타입에만 사용 가능하다. 우선 순위가 높은 연산을 먼저 수행하고 같은 우선 순위 연산자들은 왼쪽에서 오른쪽으로 계산해 나간다. 수학 산술 연산자의 우선순위와 동일하며 괄호를 사용하여 우선순위 변경 가능하다.

[emp테이블에서 사원들의 연봉을 출력하라]

SQL> SELECT empno, ename, sal, sal*12 FROM emp;

EMPNO ENAME SAL SAL*12

---------------------------------------

7369 SMITH 800 9600

7499 ALLEN 1600 19200

……

7902 FORD 3000 36000

7934 MILLER 1300 15600

-- 수당(COMM)이 NULL인 사원은 연봉이 NULL값이 된다. NULL과 연산하면 NULL이 됨

SQL> SELECT empno, ename, sal, comm, sal*12 + comm AS “연봉” FROM emp;

EMPNO ENAME SAL COMM 연봉

-----------------------------------------------------------------------

7369 SMITH 800

7499 ALLEN 1600 300 19500

7521 WARD 1250 500 15500

……

7902 FORD 3000

7934 MILLER 1300

-- 수당이 정해지지 않아 NULL값을 가지는 경우 이를 0으로 처리하여 연봉 계산

SQL> SELECT EMPNO, ENAME, SAL, COMM, SAL*12 + NVL(COMM, 0) AS “연봉” FROM EMP;

EMPNO ENAME SAL COMM 연봉

------------------------------------------------

7369 SMITH 800 9600

7499 ALLEN 1600 300 19500

7521 WARD 1250 500 15500

……

7902 FORD 3000 36000

7934 MILLER 1300 15600

오라클SQL, 대용량 테이블에서의 ORDER BY

오라클SQL, 대용량 테이블에서의 ORDER BY

http://ojc.asia/bbs/board.php?bo_table=LecSQLnPlSql&wr_id=599

대용량 테이블에서의 ORDER BY

ORDER BY는 데이터를 메모리에 올려놓고 소트를 진행하고 메모리 공간이 부족하면 디스크(임시 테이블스페이스)에 놓고 정렬을 수행하므로, 대용량의 테이블에서는 사용을 자제해야 한다. 인덱스를 적절히 이용하고 오라클 힌트 등을 사용한다면 많은 성능상 이점이 있다.

-- myemp1 테이블은 1000만건 정도 데이터가 있다.

--아래 쿼리를 실행하고 결과를 확인하려면 십여초 있어야 한다.

SQL> select empno, ename, sal from myemp1

order by ename;

--이번에는 적절한 인덱스를 만들고 인덱스 영역에서 데이터를 가지고 올 수 있도록 간단한 오라클 힌트를 사용해 보자. Index 힌트는 인자로 주어진 인덱스 영역에서 데이터를 순방향(ASCENDING)으로 스캔하라는 힌트이다. 실행하면 데이터가 바로 나온다. WHERE절에 ename 컬럼을 출현시키지 않으면 힌트에서 기술한대로 인덱스를 이용하지 못하니 확인해 보라.

SQL>CREATE INDEX IDX_MYEMP1_ENAME ON MYEMP1(ENAME DESC);

SQL> select /*+ index(myemp1 idx_myemp1_ename) */

2 empno, ename, sal

3 from myemp1

4 where ename >= ‘ㄱ’;

(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...