NVL 존재하지 않는 데이터 0으로 출력하기


혼자 프로젝트를 하다가 데이터가 존재하지 않을 경우 0

존재할 경우 그 값에 1을 더한값을 입력하고 싶었습니다. 


그래서 생각한게 NVL함수인데 NVL함수는 데이터가 존재할 때 사용할 수 있습니다.


그러면 테이블에 데이터가 아예 존재하지 않을때 NVL함수를 사용하려면 어떻게 해야할까요?



 답은 간단합니다. 컬럼명 앞에 그룹함수를 씌워주면 됩니다.



 아래 쿼리문은 제 프로젝트의 댓글을 입력하는 쿼리문입니다.


파란색으로 칠한 부분처럼 그룹함수를 씌워주면 데이터가 없을때에도


NVL함수가 null로 인식해서 0을 반환하게 됩니다.



INSERT INTO re_deal_comment

(com_no, com_sep, com_content, deal_no, com_author, com_rdate,com_group)    

VALUES

(SEQ_RE_DEAL_COMMENT.nextval,0,#{com_content},#{deal_no},#{s_nick}, to_char(sysdate, 'yyyy-mm-dd/AM hh:mi:ss')

,(select decode(NVL(max(com_group),0),0,1,max(com_group)+1) from re_deal_comment where deal_no = #{deal_no}))





'DBMS > Oracle' 카테고리의 다른 글

[Oracle] 데이터베이스 언어 SQL  (0) 2017.05.11
[Orcale] DataBase 11g 설치(구축)  (3) 2017.04.03

데이터베이스 언어 SQL


 SQL(Structured Query Language)은 관계 데이터베이스를 위한 표준 질의어입니다. 기능에 따라 데이터 정의의, 데이터 조작어, 데이터 제 언어로 나누어집니다.


◎ DML(Database Manipulation Language)


 DML은 데이터를 조작하는 언어로  SELECT, INSERT, DELETE, UPDATE가 있습니다.


- SELECT(조회) 

기본 구문

SELECT 컬럼명1, 컬럼명2.. FROM 테이블명 WHERE 조건 
GROUP BY 그룹화할 컬럼명 ORDER BY 정렬할 기준 컬럼 ASC | DESC;

-> SELECT문은 조회만 하고 실제 데이터에 영향이 없으므로Commit/Rollback의 대상이 아님


- INSERT(삽입)

INSERT INTO 테이블명(컬럼명1, 컬럼명2..) 

    VALUES(내용1,내용2..);



- DELETE(삭제)

DELETE FROM 테이블명 WHERE 조건;



- UPDATE(수정)


UPDATE 테이블SET 컬럼명=수정할 내용 WHERE 조건;



DDL(Database Definnition Language)


 DDL은 데이터를 정의하는 언어로  CREATE, ALTER, DROP이 있습니다.


- CREATE : 테이블, 인덱스, 뷰, 프로시저 등의 객체를 생성할 때 사용합니다.

- ALTER : 객체를 수정할 때 사용합니다.

- DROP : 객체를 삭제할 때 사용합니다.


◎ DCL(Database Control Language)


 DCL은 데이터를 제어하는 언어로 GRANT, REVOKE와 위에서 언급한 COMMIT/ROLLBACK이 있습니다.


- GRANT : 권한을 부여할 때 사용합니다.

- REVOKE : 권한을 회수할 때 사용합니다.

- COMMIT : 작업을 실제 테이블에 반영할 때 사용합니다.

- ROLLBACK : COMMIT을 했던 시점으로 되돌릴 때 사용합니다.


[출처]

[네이버 지식백과] http://terms.naver.com/entry.nhn?docId=3431219&cid=58430&categoryId=58430




Oracle 11G 설치


 데이터베이스는 MY-SQL, Oracle, DB2, Maria DB등 여러 종류가 있습니다. 그중에서도 Oracle을 공부해보려고 합니다. 오늘은 Oracle설치에 대해 알아 보겠습니다.


- Oracle 11g 다운로드


  아래 주소를 통해 오라클 공식 홈페이지에 접속해서 아래와 같이 오라클 11g 파일을 다운받습니다.


  오라클 공식 홈페이지 : https://www.oracle.com/index.html


  오라클 홈페이지 상단에 보이는 다운로드 탭을 클릭하고 데이터베이스 다운로드를 선택합니다.



 

저는 11g Standard Editions울 사용할 생각이라 Database 11g Enterprise/Standard Editions을 선택했습니다.


라이센스를 동의하고 다운을 받아야합니다. 오라클 회원가입이 필요한 것 같습니다. 간단하게 가입이 가능합니다.







- Oracle 11g 설치


 win64_11gR2_database_1of2파일과 win64_11gR2_database_2of2파일을 다운로드 한 후에 2번 파일에있는 stage디렉토리를 복사해서 1번폴더에 복사한후에 Setup을 눌러 설치를 시작합니다.


 첫 번째 화면은 이메일 수신여부를 묻는 화면입니다. 다음을 누르시면 됩니다.


설치 옵션을 선택하는 화면입니다. 저는 처음설치해서 데이터베이스 생성 및 구성을 선택했습니다.


시스템 클래스를 선택하는 부분입니다. 저는 서버클래스를 선택했습니다.


설치유형입니다.저는 단일 인스턴스 설치를 선택했습니다.


Grid 설치 옵션입니다. 고급 설치를 선택하면 SYS, SYSTEM, SYSMAN 등의 계정에 대해 서로 다른 비밀번호 사용이 가능하고, 자동 백업을 선택할 수 있습니다.


따로 추가하고 싶으신 언어가 있다면 추가하시면 됩니다.


데이터베이스 버전을 선택하는 과정입니다. 저는 Standard Edtion을 선택했습니다.


설치 경로를 지정하는 화면입니다. 처음 설치하시는 분은 아래와 동일한 경로일 것입니다.


데이터베이스 유형을 선택하는 화면입니다. 일반용/트랜잭션 처리 디폴트 그대로 설치했습니다.


SID를 정하는 부분입니다. 위에 전역 데이터베이스 이름에 입력을 하면 아래 SID도 자동으로 작성됩니다. 이번 설치에서 가장 중요한 부분입니다.


메모리를 설정하는 부분입니다. 저는 자동으로 메모리 관리를 사용하도록 했습니다.


데이터베이스 컨트롤을 사용하는 옵션입니다.


데이터베이스 저장 영역을 선택하는 화면입니다. 디폴트로 파일시스템이 선택되어있습니다.


복구 옵션을 지정하는 화면입니다. 자동으로 백업 사용으로 설정으로 체크하고 비밀번호를 지정했습니다.


스키마 비밀번호를 작성하는 부분입니다. 웬만해서는 다르게 사용하는게 좋겠지만 저는 실습 편의상 같은 비밀번호로 설정 했습니다.

 권장 표준을 따르지 않으면 경고는 하지만 간단한 비밀번호를 사용할 수는 있습니다.


설치 정보에대한 화면입니다. 완료를 누르면 필요 조건 검사를 수행하고 설치를 진행합니다.



- 동작 테스트


 설치가 완료되면 윈도우 커맨드 창에서 데이터베이스가 정상적으로 동작하는 지 확인할 수 있습니다.

 아래 그림은 scott계정으로 접속해서 emp테이블을 조회 해보는 그림입니다.


커맨드 창>sqlplus / as sysdba

SQL>conn scott

SQL>select * from emp;





+ Recent posts