ed  - 전에 실행한 버퍼에 들어간 명령문을 edit한다.


set linesize 1000;
set pagesize 1000;  사이즈 변경


버퍼에 있는 내용 실행   /


SQL문 작성시 유의사항

SQL문은 대소문자를 가리지 않는다.
data값은 대소문자를 가린다.




연산자 우선순위

단항 +, -  이항 * , /, + , -
- 괄호를 사용하여 연산자 우선순위를 조정할 수 있다.


NULL

Null이란 아직 값을 알 수 없는 상태 또는 의미가 없는 상태를 표현한다.

Null은 0이나 space 등과는 다르다.

산술 연산 수식에 Null인 값이 하나라도 포함되어 있다면 결과값은 항상 Null이 된다. (s_no + NULL) = NULL
     (s_no + 0) = s_no
Not Null이나 PRIAMARY KEY 제약 조건을 갖는 column은 NULL일 수 없다.

Oracle Database에서 Null인 column은 Length가 0 으로 data를 위한 물리적 공간을 차지 하지 않는다.



NULL값 처리 함수 - NVL(expr1, expr2)

다음은 사번과 커미션을 출력하면서 커미션이 없는 사원의 경우 NULL이 아니라 0으로 출력하도록 하는 문장이다.
Select empno, ename, NVL(comm, 0) comm FROM emp;

다음은 매니저가 없는, 즉 최고 직급의 사원인 경우 'No Manage'라고 출력하도록 하는 문장이다.
Select NVL(mgr, 'No Manager') FROM emp;
에러가 난다! mgr이 숫자형이기 때문에 문자열을 넣기때문에 오류가 난다.


Alias - 열에 이름을 임의로 정해준다.


alias는 SELECT 절에 expression을 사용할 때 유용하다.

column명이나 expression 바로 뒤에 명시하거나 column명과  alias사이에 AS를 끼워 넣어 사용한다.

Double Quotation("  ")을 사용하여 alias내에 공백이나 특수문자를 포함할 수 있다.

SQL> SELECT sal*12 Annual_Salary FROM emp;
SQL> SELECT sal*12 Annual Salary FROM emp; (* Error 발생) 띄어쓰기
SQL> SELECT sal*12 "Annual Salary" FROM emp;
SQL> SELECT sal*12 AS "Annual Salary" FROM emp;



연결연산자(||)

문자열들을 연결하여 하나의 결과 문자열을 만들어 낸다.
문자열에 NULL을 연결시키면 원래의 문자열이 그대로 된다.

SQL> SELECT empno||ename||hiredate FROM emp;
(* number나 date 값은 default 형태의 character 값으로 자동 변환된 후 연결된다.)


Literals

Literal은 상수 값을 의미한다.
Character literal은 작은 따옴표로 묶어서, Number literal은 따옴표 없이 그냥 써서 표현한다.
Character literal을 작은 따옴표로 묶어 주어야 Oracle server가 keyword나 object 이름과 구별 할 수 있다.

SQL> SELECT ename|| ' ' || sal FROM emp;
SQL> SELECT ename || ' is working as a ' || job FROM emp;

literal이나 literal들의 연산결과를 출력해 볼 때는 sys사용자 소유의 dual이라는 dummy table(가상테이블)을 활용한다.

SQL> SELECT 'Korea Fighting' FROM dual;
SQL> SELECT 10 + 20 FROM dual;
SQL> SELECT 'Red' ||' '|| 'Devil' FROM dual;


dual table을 이용하여 server의 현재 시각이나 현재 접속중인 DB 사용자를 조회해 볼 수 있다.
SQL> SELECT sysdate, user FROM dual;


ALL | DISTINCT

ALL이 default로 조회된 결과를 모두 return 해준다.
SELECT job FROM emp; (ALL은 안써도 Default로 되어있다.)

DISTINCT는 조회 결과 중 중복된 row들은 하나의 결과만 return하도록 해준다. 
SELECT DISTINCT job FROM emp;



CASE - IF-THEN-ELSE와 비슷한 logic을 제공한다.


select ename, sal, deptno, (case deptno
when 10 then sal *1.1
when 20 then sal *1.2
else sal*10 end) result
from emp

deptno가 10이면 sal * 1.1 20이면 .......case 문을 result로 alias 하였다.

'프로그래밍 기초 > 오라클' 카테고리의 다른 글

Advanced Query  (0) 2010.02.25
Single-Row Functions  (0) 2010.02.24
기본쿼리2  (0) 2010.02.24
기본쿼리  (1) 2010.02.23
SQL문 정리  (0) 2010.02.22
Database System  (0) 2010.02.22
Posted by 아몰라

댓글을 달아 주세요