<NULL 관련 함수>

 

  • NVL: NULL값을 다른 값으로 바꿀 때 사용. 모든 데이터 타입에 적용 가능

 

1
2
3
SELECT last_name, manager_id 매니저
FROM employees
WHERE last_name = 'King';
cs

 

 

 

 

 

1
2
3
4
SELECT last_name, NVL(manager_id, 0) 매니저
FROM employees
WHERE last_name = 'King';
--manager_id에 있는 null값을 0으로 변환
cs

 

 

 


 

  • NVL2 (ex, ex1, ex2): ex값이 NULL이 아니면 ex1, NULL이면 ex2

 

1
2
3
SELECT last_name, NVL2(manager_id, 10) 매니저
FROM employees
WHERE last_name = 'King';
cs

 

 

 


 

  • NULLIF (ex1, ex2): ex1과 ex2값이 동일하면 NULL, 동일하지 않으면 ex1으로 출력

 

1
2
SELECT NULLIF(1,1), NULLIF(1,2)
FROM DUAL;
cs

 

 

 

 


 

  • COALESCE (ex1, ex2, ex3,...): ex1이 NULL이면 ex2 반환,  ex2도 NULL이면 ex3반환...

 

  • employees테이블에서 last_name, salary, commission_pct 출력하되 commission_pct가 NULL값이면 salary에서 2000인상

 

1
2
3
4
5
6
SELECT last_name 이름, salary 월급,
commission_pct 커미션pct,
COALESCE((salary+(commission_pct*salary)), salary+2000)
월급인상
FROM employees
ORDER BY 3;
cs

 

 

 

 


 

<NULL 관련 함수 예제>

 

  • employees 테이블에서 이름, 월급 (salary), 커미션 (commission_pct)를 NVL 함수를 이용하여 연봉은 (월급*12)+(월급*12*커미션)으로 나타내고 commission_pct가 null값인 경우 0으로 치환

 

1
2
3
4
5
SELECT last_name 이름, salary 월급,
NVL(commission_pct,0) 커미션,
(salary*12)+(salary*12*NVL(commission_pct,0)) 연봉
FROM employees
ORDER BY 4 DESC;
cs

 

 

 

 


 

  • NVL2함수를 이용하여 위의 예제에서 커미션이 있을때와 없을 때의 계산 방법도 출력

 

1
2
3
4
5
6
SELECT last_name 이름, salary 월급,
NVL(commission_pct,0) 커미션,
(salary*12)+(salary*12*NVL(commission_pct,0)) 연봉,
NVL2(commission_pct,'SAL+COMM','SAL') 연봉계산
FROM employees
ORDER BY 4 DESC;
cs

 

 

 


 

  • employees 테이블에서 first_name과 last_name의 길이 LENGTH를 비교하여 같으면 null, 아니면 LENGTH(first_name)값을 출력

 

1
2
3
4
5
SELECT first_name, LENGTH(first_name) "글자수1",
last_name, LENGTH(last_name) "글자수2",
NULLIF(LENGTH(first_name), LENGTH(last_name)) "결과"
FROM employees
ORDER BY last_name;
cs

 

 

 

 

'Learning > SQL' 카테고리의 다른 글

집계 함수 (그룹 함수)  (0) 2020.06.16
DECODE 함수, CASE 함수  (0) 2020.06.16
변환형 함수  (0) 2020.06.16
날짜형 함수  (0) 2020.06.15
숫자형 함수  (0) 2020.06.15

<변환형 함수>

 

  • 날짜를 문자로, 숫자를 문자로 바꾸는 TO_CHAR

    • TO_CHAR(날짜, 출력형식)

    • TO_CHAR(숫자, 출력형식)

    • <출력형식>

      • , (콤마): 3자리마다 , 를 찍음

      • . (온점): 소수점 형식으로 변환

      • 0: 왼쪽에 0을 삽입

      • $: $통화로 표시

      • L: Local 통화료 표시

      • XXXX: 16진수로 표시

 

1
2
SELECT TO_CHAR(12345678'999,999,999') 콤마
FROM DUAL;
cs

 

 

 


 

1
2
SELECT TO_CHAR(12345678'999,999,999.99') 소수점
FROM DUAL;
cs

 

 


 

1
2
SELECT TO_CHAR(12345678'$999,999,999.99') 달러표시
FROM DUAL;
cs

 

 


 

1
2
SELECT TO_CHAR(12345678'L999,999,999.99') L표시
FROM DUAL;
cs

 

 


 

 

1
2
3
SELECT TO_CHAR(123'09999') 제로표시 
--남는 공간을 0으로 채우기
FROM DUAL;
cs

 

 


 

      • YYYY: 4자리 연도

      • YY: 2자리 연도

      • DAY: 요일 (월, 화..)

 

1
2
3
4
--날짜를 문자로 변환
--년, 월, 일, 시, 분, 초
SELECT TO_CHAR(sysdate, 'YY-MM-DD HH24:MI:SS') 현재날짜시간
FROM DUAL;
cs

 

 


 

1
2
SELECT TO_CHAR(sysdate, 'YYYY/MM/DD HH24:MI:SS') 현재날짜시간
FROM DUAL;
cs

 

 


 

1
2
3
--365일 중 오늘이 며칠?
SELECT TO_CHAR(sysdate, 'DDD') 날짜
FROM dual;
cs

 

 


 

1
2
3
--오늘의 월?
SELECT TO_CHAR(sysdate, 'MONTH') 몇월
FROM dual;
cs

 

 


 

 

<TO_CHAR 예제>

 

  • employees 테이블에서 department_id가 100인 사원들의 입사일을 이용하여 employee_id, 입사월을 출력. (입사월은 월/년도 형식)

 

1
2
3
SELECT employee_id, TO_CHAR(hire_date, 'MM/YY')
FROM employees
WHERE department_id = 100;
cs

 

 


 

  • employees 테이블에서 salary가 10000달러가 넘는 사원들의 이름과 월급을 월급이 많은 순으로 출력 (월급의 표시형식은 $)

 

 

1
2
3
4
SELECT last_name "이름", TO_CHAR(salary, '$99,999.99'"월급"
FROM employees
WHERE salary > 10000
ORDER BY salary DESC;
cs

 

 


 

  • 문자를 날짜로 바꾸는 TO_DATE

  • CHAR, VARCHAR2형을 DATE 타입으로 변환

    • TO_DATE(char, 출력형식)

    • CHAR: n바이트 크기를 가진 문자형 타입. n보다 작으면 나머지 공간을 공백으로 채워서 n바이트를 채움

    • VACHAR: n바이트의 크기를 가진 문자형 타입이지만 저장되는 타입의 크기가 n보다 작으면 n만큼의 길이만큼만 기억장소를 차지하는 가변형 타입. (4000byte까지 저장)

 

1
2
SELECT TO_DATE('2011-01-01''YYYY-MM-DD')
FROM dual;
cs

 

 


 

  • 문자를 숫자로 바꾸는 TO_NUMBER

  • CHAR, VARCHAR2형을 숫자형식으로 변환

    • TO_NUMBER(char)

 

 

1
2
SELECT TO_NUMBER('0123123')+100
FROM dual;
cs

 

 

'Learning > SQL' 카테고리의 다른 글

DECODE 함수, CASE 함수  (0) 2020.06.16
NULL 관련 함수  (0) 2020.06.16
날짜형 함수  (0) 2020.06.15
숫자형 함수  (0) 2020.06.15
문자형 함수  (0) 2020.06.15

 

<git이란? 버전 관리 시스템>

 

  • 버전 관리 시스템: 파일의 변화를 시간에 따라 기록하여 과거 특정 시점의 버전을 다시 불러올 수 있는 시스템이다.

    • 변경사항을 지속적으로 추적, 파일들의 스냅샷으로 만들어 저장

    • commit 명령을 통해 원하는 순간의 스냅샷을 만듦.

    • 스냅샷을 통해 이전의 버전들을 쉽게 가져오기.

    • ommit 이전의 파일들을 stage 상태로 만듦

 


  • Git 다운로드

https://git-scm.com/download/win

 

  • Visual Studio Code 다운로드

https://code.visualstudio.com/docs/?dv=win

 

 

 

extension-korean 검색하여 패키지 설치

 

 

메뉴가 한국어로 나옴

 

 

 


 

<git 명령어로 실행>

 

  • git 설치 후 git Bash 창이 뜸

  • 바탕화면에 새폴더 만들기-git

 

  • git 폴더 내에 myApp 폴더 만들기 (git hub에 올릴 프로젝트들을 관리할 폴더) -마우스 우클릭 Git Bash Here 클릭

 

 

  • git이 제대로 설치되었는지 확인 (git --version)

 

  • user.name에 내 이름을 영문으로 지정, user.email에 내가 쓰는 이메일 쓰고 엔터 (git hub 이메일과 동일)

 

  • code . (code 뒤에 스페이스바 치고 온점) 를 엔터하면 Visual Studio Code 창이 팝업됨

 

    • myApp폴더에서 Alt-숨김 항목 표시를 하면 .git 폴더가 생긴 것을 볼 수 있음

 

 

  • Visual Studio Code에서 myApp 폴더를 열고 index.html과 app.js 생성 (myApp폴더 안에서 직접 새로만들기-텍스트 파일 해서 만들어도 됨)

 

  • !를 누르면 자동완성. title 사이에 깃연습, body 사이에 깃 시작하기를 적고 Ctrl+S로 저장.

 

  • git에서 명령어 git init을 타이핑하고 엔터치면 myApp폴더가 master가 됨

 

 

    • git status로 myApp폴더 상태 확인. app.js와 index.html, myApp폴더에서 직접 만든 index.html 파일 세 개가 생긴 것을 알 수 있음.

 

 

  • 깃에 추가하기 위해 git add .을 누르고 엔터

 

 

    • git status 후 git commit -m "최초커밋"이라고 메시지

 

 

    • 최초 커밋 후에 index.html의 내용을 수정해보기

 

 

  • index.html이 수정이 되었는데 add가 안되어서 빨갛게 표시됨

 

 

  • git add . 후 git status 확인. 초록색으로 바뀜. commit -m "index.html수정"

 

 

 

 


 

 

<github 사용법>

 

  • 깃허브(github): 깃을 사용하는 온라인 저장소. 깃허브에 프로젝트 올려보기

  • github.com에서 로그인하고 New repository 클릭

  • myApp은 로컬 저장소. 얘를 온라인 저장소로 올리는 것을 github이 해준다.

 

 

  • github에서 제공하는 온라인 저장소의 주소는 다음과 같다.

 

 

 

 

  • git push -u origin master

 

 

 

  • 깃허브 로그인 창이 팝업되고 로그인 한다.

 

 

  • 깃허브에 파일들이 올라갔다.

 

 

 

  • index.html 파일을 깃 허브에 올린 후에 수정한다면?

 

 

 

 

  • git add . / git commit -m "github에 올린 후 index.html, app.js 수정" 이라 코멘트를 적어줌 / git push 차례대로 엔터

 

 

 

  • 무슨 프로젝트인지 다른 사람들이 알 수 있도록 Readme 파일 만들어야 한다.

  • Visual Studio Code에서 README.md(마크다운) 이름의 새 파일 만들기

 

 

  • git add . / git commit -m "README 추가" / git push 차례대로 엔터

 

 

  • README.md 가 변경된 것을 볼 수 있다.

 

+ Recent posts