사용 용도에 따른 SQL (p27 참조)

(서적은 대림출판사 오라클 11g+ PL/SQL 입문 참조)


1. DDL (데이터 정의)

논리적 구조를 정의하는 언어 

ex) CREATE TABLE...


2. DML (데이터 조작)

데이터를 조작. 검색(Retrieval), 추가(Insert), 삭제(Delete), 갱신(Update) 


3. DCL (데이터 제어)

데이터 접근 권한 부여.



SQL*Plus

SQL*Plus는 SQL문을 저장하거나 편집하기 위해 사용되는 툴. 요즘엔 사용하지 않음.

- SQL*Plus는 SQL Developer로 대처할 수 있음.

- 실무에서는 토드나 오렌지를 주로 사용.



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



1. 데이터 딕셔너리 TAB (P42)

오라클을 사용하기 위해서는 특정 사용자 계정이 있어야 한다. 사용자마다 사용가능한 테이블이 다른데 어떤 테이블을 사용할 수 있는지 살펴보기 위해 사용되는 데이터 딕셔너리가 TAB이다.


SELECT문에서 FROM 뒤에 테이블명 대신 TAB라고 쓰면 해당 데이터 딕셔너리 상의 모든 테이블 목록이 출력된다.


SELECT * FROM TAB;



데이터 딕셔너리 상에서 이미 만들어져 있는 테이블 목록을 볼 수 있다.



2. 테이블 구조를 살펴보기 위한 DESC (P44)

DESC는 SQL*Plus 명령어로, 테이블의 컬럼 이름, 데이터형, 길이와 NULL 허용 유무 등과 같은 특정 테이블의 정보를 알려준다.


DESC GOODSINFO;


테이블의 구조를 확인한다.


케이블의 컬럼 이름, null의 허용 유무, 유형이 확인된다.




3. 오라클의 데이터형 (P48)


1) NUMBER

- NUMBER(precision, scale)

- 괄호 안은 소수점을 초함한 전체 자릿수, 소수점 이하 자릿수


2) DATE

- 년월일 시분초


3) CHAR

- 고정길이 문자열


4) VARCHAR2

- 가변길이 문자열


자세한 것은 테이블에 관한 SQL문 컬럼 정의 데이터형 참조.

http://mainichibenkyo.tistory.com/49




4. 데이터를 조회하기 위한 SELECT문 (P51)


SELECT [DISTINCT] {*, column[Alias], ...}

FROM table_name;


자세한 것은 SELECT문 포스팅 참조.

http://mainichibenkyo.tistory.com/50


※ SQL문에서 사용하는 명령어들은 대문자와 소문자를 구분하지 않는다.




5. 산술연산자 (P57)


SELECT ename, sal, SAL*12 

FROM emp;


SQL문에서 곧바로 *를 해서 산술연산이 가능하다.





6. NULL을 변환해주는 NVL 함수 (P58)


null도 데이터의 일종이며 정해지지 않는 값이란 의미이다.


월급(SAL)에 12를 곱한 연봉값과, 연봉값에 커미션(COMM, 성과급)을 더한 값을 출력해보자.


SELECT ename, sal, job, comm, sal*12, sal*12+comm FROM emp;



성과급 COMM에 null이 저장되어 있는 경우 연봉 SAL과 성과급 COMM을 더한 계산 결과가 null로 출력되는 문제가 있다.

이를 해결 위해서는 NVL 함수를 써야 한다.


SELECT ename, sal, job, comm, sal*12, sal*12+NVL(comm,0) FROM emp;


※ NVL : null을 0이나 다른 값으로 바꿔서 계산해주는 함수.

- NVL(COMM, 0)이라고 넣으면 COMM에 있는 null값을 모두 0으로 바꿔준다.



NVL 함수를 사용하여 null값을 0으로 바꿔 계산해주면 결과가 정상 출력된다.




7. AS : 컬럼 이름에 별칭 지정하기 (P61)


SQL에서 쿼리문 결과가 출력될 때 컬럼 이름이 컬럼에 대한 헤딩으로 출력된다. 

컬럼 뒤에 'AS 별칭'을 붙여 사용하면 컬럼 이름을 변경할 수 있다.


1) AS로 컬럼에 별칭 부여하기

컬럼의 헤딩에 AS로 별칭을 지정할 수 있다.


SELECT ename, sal, job, comm, sal*12 AS SALARY, sal*12+NVL(comm,0) FROM emp;



SAL*12라고 표시되던 헤딩이 SALARY라는 별칭으로 변경된 것이 확인된다.



2) AS 생략하고 컬럼에 별칭 부여하기

AS 키워드는 생략 가능하다. 위의 쿼리문은 다음과 같이 바꿔도 결과는 동일하다.


SELECT ename, sal, job, comm, sal*12 SALARY, sal*12+NVL(comm,0) FROM emp;



3) " "로 대소문자를 구분하여 별칭 부여하기 

SQL은 대소문을 구분하지 않으며 소문자로 입력해도 무조건 대문자로만 출력된다. 

별칭을 " "로 감싸면 대문자와 소문자를 구분하고, 공백문자나 특수문자도 포함시킬 수 있다.


SELECT ename, sal, job, comm, sal*12 as salary, sal*12+NVL(comm,0) "AnnSal 총연봉♥" FROM emp;



sal*12+NVL(comm, 0)의 결과가 대소문자에 한글, 특수문자를 넣은 "AnnSall 총연봉♥"으로 변경된 것이 확인된다.





8. || (Concatenation) 연산자 (P65)

SELECT 다음에 2개 이상의 컬럼이 올 경우 이들을 콤마(,)로 연결하지만, 영어 문장처럼 보이게 연결도 할 수 있다.


SELECT ename,' is a ', job FROM emp;


사원명과 사원직급 사이에 'is a'라는 문자열을 추가해줬다.


컨캐터네이션 연산자(||)를 사용하면 콤마 없이, 컬럼과 컬럼 사이를 자연스럽게 연결할 수 있다.



SELECT ename || ' is a ' || job FROM emp;


ename 컬럼과 job 컬럼 사이에 ||와 작은따옴표' '로 묶었던 is a가 들어간 것을 확인할 수 있다.




9. DISTINCT 키워드 (P66)

중복된 데이터를 제거하는 키워드.


SELECT job FROM emp;


위와 같이 JOB 컬럼 상에 중복되는 데이터가 많은 경우, DISTINCT를 써서 중복된 데이터는 하나씩만 보이게 할 수 있다.


SELECT DISTINCT job FROM emp;



DISTINCT 키워드를 사용하면 해당 컬럼을 조회할 때 중복된 것은 한 번씩만 출력된다.





Posted by netyhobby
,