Projection : 테이블에서 데이터를 검색할 때 반환될 COLUMN을 선택할 수 있다.
Projection의 예는 다음과 같다.
SQL> SELECT ename, sal, comm FROM emp;
SQL> SELECT sal, ename, comm FROM emp;
SQL> SELECT sal, sal, sal, sal FROM emp;
SQL> SELECT sal, sal + 100, sal - 100, sal * 100, sal / 100 FROM emp;
SQL> SELECT SUM(sal), AVG(sal), MIN(sal), MAX(sal) FROM emp;
Selection : 테이블에서 데이터를 검색할 때 반환될 ROW을 선택 할 수 있으며, 제약 조건을 이용하여 선택될 행을 제한할 수 있다.
Selection의 예는 다음과 같다.
SQL> SELECT * FROM emp;
SQL> SELECT * FROM emp
WHERE deptno = 20;
SQL> ed
Wrote file afiedt.buf
1 SELECT empno, ename, sal, deptno FROM emp
2* WHERE detpno = 20
SQL> /
ed : 방금 입력한 쿼리를 메모장으로 다시 불러와 보여준다.
SQL> SELECT grade_level FROM job_grades;
SQL> COL grade_level FOR a11
SQL> /
리터럴(literal) : 고정된 값, 변경되지 않는 상수.
아래 분홍색 부분이 리터럴의 예이다.
SQL> SELECT 100, 'KBS', 'kbs', '26-MAY-11' FROM emp;
SQL> SELECT empno, ename, 'KBS', 'kbs', '26-MAY-11' FROM emp;
함수(function)
함수가 포함된 쿼리문의 예.
SQL> SELECT empno, ename, INITCAP(ename) FROM emp;
수식이 포함된 쿼리문의 예.
SQL> SELECT empno, ename, sal, sal + 10, sal - 10, sal * 10, sal / 1 0 FROM emp;
#1-8
SQL> SELECT *
2 FROM (SELECT empno, ename, sal
FROM emp);
#1-12
SQL> SELECT POWER(2,3) FROM emp;
#1-33
SQL> SELECT empno, ename, job, sal FROM emp;
SQL> SELECT empno, ename job, sal FROM emp; ①
SQL> SELECT empno, ename AS job, sal FROM emp; ②
ename 컬럼의 이름을 job이라는 alias(별명)로 표시하겠다는 쿼리문이 된다. ①번 쿼리의 경우 다른 사람이 쿼리문을 보았을 때 단순히 실수인지, 의도적으로 입력한 것인지 알 수 없으므로 ②번 쿼리처럼 AS로 ename을 job이라는 alias로 조회한다는 것을 명시해주는 것이 권장사항.
#1-20
SQL> SELECT empno, ename || sal, comm FROM emp;
SQL> SELECT empno, ename || 'KBS' AS name FROM emp;
SQL> SELECT empno, ename || ' ' || 'KBS' AS name FROM emp;
SQL> SELECT ename || empno AS email FROM emp;
SQL>SELECT ename, sal FROM emp;를 응용하여
Message
---------------------------------------------------------
SMITH씨 당신의 급여가 800에서 880으로 조정되었습니다.
ALLEN씨 당신의 급여가 1600 에서 1760으로 조정되었습니다.
처럼 표시 되도록 쿼리문을 완성해보기.
SQL> SAVE a1
Created file a1.sql
SQL> SAVE a1
SP2-0540: File "a1.sql" already exists.
Use "SAVE filename[.ext] REPLACE".
두 번째로 SAVE a1을 입력하자 이미 같은 이름의 파일이 존재한다는 오류가 발생했다. 그럴때는
SQL> SAVE a1 REPLACE
Wrote file a1.sql
SAVE 파일명 : 최근 입력한 쿼리문을 파일명.sql로 저장한다.
REPLACE 옵션을 이용하면 덮어쓰기가 가능하다.
아래 쿼리문을 통해 현재 클라이언트 컴퓨터의 Database Character set을 확인 할 수 있다.(한글이 안나오는 원인!)
SQL> ed
Wrote file afiedt.buf
1 SELECT parameter, value
2 FROM nls_database_parameters
3* WHERE parameter LIKE '%CHARACTERSET%'
SQL> /
SQL> COL value FORMAT a30
SQL> L
1 SELECT parameter, value
2 FROM nls_database_parameters
3* WHERE parameter LIKE '%CHARACTERSET%'
SQL> /
PARAMETER VALUE
------------------------------ -------------------------
NLS_CHARACTERSET AL32UTF8 <-- Database Character set
NLS_NCHAR_CHARACTERSET AL16UTF16
위 명령어를 이용하여 Database Character set을 확인한 뒤 exit명령어로 나간다.
SQL> exit
C:\Users\Administrator>SET NLS_LANG=AMERICAN_AMERICA.KO16MSWIN949
클라이언트 설정을 한글이 지원되는 언어로 변경해준다!
C:\Users\Administrator>notepad ic.bat
로그인 할 때 필요한 ic.bat 파일을 다시열고!
SET PATH=F:\DATABASE\instantclient_11_2_64bit;%PATH%
SET NLS_LANG=AMERICAN_AMERICA.KO16MSWIN949 ←라인을 추가하고 저장 종료.
sqlplus usera/oracle@192.168.10.11:1521/orcl.oraedu.com
C:\Users\Administrator>dir *.sql
C 드라이브의 볼륨에는 이름이 없습니다.
볼륨 일련 번호: C2A4-48C6
C:\Users\Administrator 디렉터리
2016-05-07 오후 05:04 117 a1.sql
2016-05-07 오후 03:17 59 login.sql
2개 파일 176 바이트
0개 디렉터리 149,706,387,456 바이트 남음
C:\Users\Administrator>ic
Sql에 로그인 한다.
SQL> get a1
1* SELECT ename || '씨 당신의 급여가 ' || sal || '에서 ' || sal*1.1 || '으로 조정되었습니다' AS "Message" FROM emp;
get 파일명 : 파일명.sql에 저장되어있는 쿼리문을 불러온다.
#1-23
SQL> SELECT empno, ename, job, sal FROM emp; 쿼리문을 변경하여
MSG
----------------------------------------------------------
7369,'SMITH','CLERK',800
7499,'ALLEN','SALESMAN',1600
...
처럼 표시 되도록 하려면?
SQL> ed
Wrote file afiedt.buf
1* SELECT DISTINCT object_type FROM user_objects
SQL> /
DISTINCT : 결과 값 중에서 중복된 결과는 한 번만 보여주는 옵션.
'ORACLE11g > SQL' 카테고리의 다른 글
[11gSQL] 3장 함수 (0) | 2016.09.11 |
---|---|
[11gSQL] 2장 날짜 형식 변경, 치환변수 (0) | 2016.08.15 |
[11gSQL] 1장 데이터베이스 소개 (0) | 2016.08.02 |
[11gSQL] 0-1장 간단한 테스트와 login.sql파일 생성 (0) | 2016.07.31 |
[11gSQL] 0장 ORACLE DB 11g 시작하기! (0) | 2016.07.30 |