본문 바로가기

문법

[SQL] 색다른 쓰임, NVL2! 이전글에서 NVL함수에 대해서 살펴봤는데요. NVL함수에 이은 두번째 버전이 있습니다. 그것은 NVL2죠! 다를건 없습니다. 넣는 파라미터 값이 하나더 추가 되었는데요. 문법은 다음과 같습니다. NVL2(컬럼명, 데이터1, 데이터2) 어떻게 쓰냐면요 해당 컬럼에 데이터가 있으면 데이터1을 사용하구요, 반면에 데이터가 없으면 데이터2를 사용합니다. 조금의 차이가 있나요? 있습니다. NVL2는 NVL과는 달리 데이터가 있는 경우에도 명시된 데이터로 바꾸어 버리죠. 만일 이렇게 쓴다면 NVL과 똑같습니다. salary 가 NULL이고 그 컬럼에 대해서 NVL(salary, 0) - 해당 salary 값이 null이면 0으로 아니면 명시된 salary로 NVL2(salary, salary, 0) - 해당 sal.. 더보기
[SQL] NULL 상태도 처리하자, NVL 함수! 우리가 일반 연산자나 그룹 함수(sum, avg 등)를 쓰다보면 각 컬럼의 값이 null인 행이 존재하는데요, 이때 그룹 함수들은 이 null인 행을 연산처리를 안하거나 무시를 합니다. 가령 예를 들면 null은 값이 아닌 상태이기 때문에 아무리 +,-,/,* 등을 해줘도 결과같은 null로 테이블을 조회 했을때 아무것도 표시되지 않습니다. 한번 보실까요? 다음은 월급과 성과급(커미션)을 곱해서 연봉을 계산해볼건데요. 여기서 유의하셔야 할건 커미션을 받는 사람과 그렇지 않는 사람이 있다는 겁니다. SQL> SELECT department_id, first_name, salary, commission_pct AS "CM", salary*12+salary*commission_pct*12 AS "AN_SAL".. 더보기
[SQL] 테이블의 데이터를 바꾸어보자, UPDATE! 이번 글에서는 이미 입력된 데이터를 바꾸어 보도록 합시다. 역시 테이블은 이미 만들어 놓은 hr.employees1 으로 실습을 진행하겠습니다. 구문은 UPDATE로 해석이 되는데요. 다음과 같이 문장이 성립됩니다. SQL> UPDATE 테이블명 SET 바꿀 데이터 WHERE 업데이트할 데이터의 조건 여기서 SET에서는 WHERE절로 조회된 데이터(행)들을 어떠한 정보로 바꿀껀지에 대해서 서술하게 됩니다. 그럼 다음과 같이 써볼게요. SQL> UPDATE hr.employees1 SET salary=1000 WHERE first_name='Ricardo'; 이 구문은 이와 같이 해석될 수 있습니다. 나는 hr.employees1 테이블로 부터 first name이 리카르도인 녀석을 찾아서 그 녀석의 월급.. 더보기
[SQL] 테이블의 데이터를 지워보자, DELETE! 데이터 삭제를 해볼까요? 관련 테이블은 테이블 생성글에서 만들었던 hr 스키마의 employees1과 데이터 입력글에서 추가했던 데이터들로 해볼게요. 기본 문법은 이렇습니다. SQL> DELETE FROM 테이블명 WHERE 조건; 여기서 한가지 주의할건 조건을 적어주지 않게 되면 그 테이블에 있는 모든 행들 즉, 데이터를 날려버리게 됩니다. 트랜잭션에 아시는분들은 ROLLBACK하면 되겠지 하시겠지만 그래도 주의하세요!! 그럼 예제로 사용하게될 employees1 의 테이블을 살펴볼까요? 위처럼 두개의 행이 존재하죠? 여기서 Julia를 퇴사(?)시켜버리겠습니다. 그냥.. 데이터를 지운다구요 ^^ 다음과 같이 할 수 있습니다. SQL> DELETE FROM hr.employees1 WHERE first.. 더보기
[SQL] 테이블에 자료를 입력하자, INSERT INTO 이전글에서 만든 hr계정의 employees1 테이블에 자료를 넣어보도록 할게요. 무엇보다 중요한건 각 컬럼에 정의되어있는 데이터 타입에 유의하면서 자료를 넣어야 한다는 것입니다. 만든 테이블에 데이터를 입력할때는 다음과 같이 INSERT INTO구문을 이용하는데요. 형식은 다음과 같습니다. SQL> INSERT INTO 스키마명.테이블명(컬럼명1, 컬럼명2, 컬럼명3, ...) VALUES(컬럼1데이터, 컬럼2데이터, 컬럼3데이터, ...); 이때 알아두셔야 될 규칙이 있는데요. 1. 명시된(입력된) 컬럼명의 순서에 따라 VALUES의 값도 순서대로 입력되어야 한다. 2. 테이블에 정의된 각 컬럼의 데이터 타입을 지켜야 한다. 3. 컬럼명이 명시 되어 있지 않을때는 '모든 컬럼에 대햐여' 이므로 모든 .. 더보기
[SQL] 테이블을 만들어보자, CREATE!! 데이터를 담는 곳이 어디인가요? 테이블이였죠? 이 테이블을 만드는 것에 대해서 알아볼까 합니다. 간단하니 따라오세요~ 일단 접속하는 계정에 저장공간에 대한 권한이 있어야 하구요. 관련된 권한 설정 내용은 다음을 링크를 참고 하시길 바랍니다. 시스템 권한 설정 관련 글 확인하기 자 시작하겠습니다. 우선 테이블을 만드는 문법은 다음과 같습니다. SQL> CREATE TABLE 스키마.테이블 명 (컬럼명 데이터 타입, 컬럼명 데이터 타입, .... ); 이렇게 해주시면 되겠는데요. 컬럼명에 해당하는 데이터 타입을 유의하면서 작성합니다. 데이터 타입에 관한 글은 다음 링크를 누르시면 볼 수 있습니다. 데이터 타입 관련 글 보기 기존에 주어졌던 hr계정의 employees 테이블을 보면서 한번 그대로 만들어 볼까.. 더보기
[SQL 연습] 원하는 형식대로 날짜 출력하기(TO_CHAR) 식 : SELECT sysdate, TO_CHAR(sysdate, 'YYYY.MON.DAY AM HH12.MI.SS', 'NLS_DATE_LANGUAGE=KOREAN') AS "TODAY" FROM dual; 결과 : 더보기
[SQL 연습] 날짜 형식 지정해서 입력하기(TO_DATE) 식 : SELECT last_name, hire_date FROM hr.employees WHERE hire_date< TO_DATE('88-02-13','RR-MM-DD'); 결과 : 더보기
[SQL 연습] 날짜 표현 형식 바꾸기(ALTER SESSION SET) 식 : 1. SELECT sysdate FROM dual; 2. ALTER SESSION SET nls_date_format='RR-MM-DD'; 3. SELECT sysdate FROM dual; 결과 : 1. 3. 더보기
[SQL 연습] 자릿수 버림(TRUNC) 식 : SELECT TRUNC(123124.123412, 3) FROM dual; 결과 : 더보기