[SQL첫걸음]181106


CASE

  • 특정 조건에 맞을 때 정해진 규칙으로 처리할 때 이용
  • CASE WHEN 조건식1 THEN 식1
      [WHEN 조건식2 THEN 식2 ...]
      [ELSE 식3]
    END
    • WHEN 뒤에 참, 거짓을 반환하는 조건식을 기술
    • 참이 되는 경우 THEN 뒤의 식이 처리
    • WHEN과 THEN을 여러개 작성할 수도 있음.
      이 경우 가장 먼저 만족하는 WHEN 뒤의 THEN이 처리 됨
    • 어떤 조건도 만족하지 못한 경우 ELSE로 처리 됨. 생략도 가능하지만 명확히 지정해주는 게 보기 좋다. 생락하면 NULL 이 된다.
  • SELECT a, CASE WHEN a IS NULL THEN 0 ELSE a END "a(null=0)" FROM sample37;
    • a열 값 중 NULL값을 0으로 바꾸고 a(null=0)이라는 열에 표시하는 쿼리
    • COALESCE 함수를 이용해서도 NULL값을 변환할 수 있다.
      • SELECT a, COALESCE(a, 0) FROM sample37;
      • 인수도 여러개 지정할 수 있다. 가장 먼저 지정 된 인수의 값을 반환
  • 인코드: 정보를 코드(수치데이터)로 바꾸는 작업 ex. 남/여를 1/2로 저장하자.
  • 디코드: 코드(수치데이터)를 정보로 바꾸는 작업 ex. 1/2을 남/여로 표시하자.
  • CASE는 '검색CASE'와 '단순CASE'로 구분된다.
    • 검색CASE: CASE WHEN 조건식 THEN 식 / 앞에 소개한 CASE
    • 단순CASE: CASE 식 WHEN 식 THEN 식
  • CASE 식1 WHEN 식2 THEN 식3
      [WHEN 식4 THEN 식5 ...]
      [ELSE 식6]
    END
    • 식1의 값이 WHEN의 식2의 값과 동일한지 비교하고 같으면 식3을 결과값으로
  • 비교예시: a열 값이 1이면 남자, 2이면 여자, 그외는 미지정으로 '성별'열에 출력
    • 검색CASE
      • SELECT a AS "코드",
        CASE
          WHEN a=1 THEN '남자'
          WHEN a=2 THEN '여자'
          ELSE '미지정'
        END AS "성별" FROM sample37;
    • 단순CASE
      • SELECT a AS "코드",
        CASE a
          WHEN 1 THEN '남자'
          WHEN 2 THEN '여자'
          ELSE '미지정'
        END AS "성별" FROM sample37;]
  • CASE는 SELECT, WHERE, ORDER BY 등 다양한 구에 사용할 수 있다.
  • 단순CASE 문으로는 NULL 값을 비교할 수 없다. NULL값은 검색CASE 문을 써야 한다.

INSERT
  • DB에 행을 추가하는 명령
  • INSERT INTO 테이블명 VALUES(값1, 값2, ...);
  • 특정 열을 지정해서 행을 추가할 수도 있다.
    • INSERT INTO 테이블명(열1, 열2, ...) VALUES(값1, 값2, ...)
  • 데이터 설정에 맞는 값을 넣지 않으면 오류가 발생한다. 'DESC 테이블명'으로 확인
  • DEFAULT 값이 열마다 지정 돼 있고 특정 값을 입력하지 않으면 DEFAULT값이 입력된다.
    • DEFAULT 값을 지정해서 넣고 싶으면 VALUES의 인수로 직접 DEFAULT를 쓸 수 있다.
      • ex. INSERT INTO sample411(no, d) VALUES(1, DEFAULT);

DELETE
  • DB에서 행을 삭제할 때 사용하는 명령
  • DELETE FROM 테이블명 WHERE 조건식
  • 별도의 경고 없이 삭제 되므로 주의

UPDATE
  • 데이터를 갱신할 때 이용하는 명령어
  • UPDATE 테이블 SET 열1 = 값1, 열2 = 값2, ... WHERE 조건식
  • 테이블 열 자료형에 맞는 값을 넣지 않으면 오류남
  • WHERE구를 생략하면 모든 행의 값이 변한다. 주의

물리삭제, 논리삭제
  • DB설계 할 때 선택할 수 있는 삭제 방법 2가지
  • 물리삭제는 실제로 DB에서 데이터를 삭제하는 방식
    • DB 저장공간이 늘어남
    • 데이터가 완전히 사라짐
  • 논리삭제는 실제로는 DB에서 삭제하지 않고 특정 열을 삭제플래그로 지정해 구분
    • DB 저장공간이 늘어나지 않음
    • 실제로는 데이터가 남아있기에 복원이 간단
    • 통계 등에 유리
  • 상황에 맞게 사용하는 것이 중요


댓글

이 블로그의 인기 게시물

[엑셀 말고 스프레드시트] 03. 구글 스프레드시트 시작하기

[엑셀 말고 스프레드시트] 01. 구글 스프레드시트란?

[SQL첫걸음]181108