젬니
Jemin IT블로그
젬니
전체 방문자
오늘
어제
  • 분류 전체보기 (189)
    • [Engineering] (3)
    • [PGS] (8)
    • [BOJ] (20)
    • [백엔드] (3)
    • [DevOps] (14)
    • [Django] (2)
    • [ Algorithm] (33)
    • [SqL] (12)
    • [Techit] (6)
    • [InteliJ 설정] (0)
    • [CS 공부] (42)
    • [DB] (22)
    • [TDD] (1)
    • [NCP] (4)
    • [for Rest 프로젝트] (11)
    • [Kotlin] (3)
    • [비공개 공부] (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 햣

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
젬니

Jemin IT블로그

sqld 공부 -(1)
[SqL]

sqld 공부 -(1)

2024. 8. 22. 15:43

1. select 절에서 정의한 별칭은 실행 앞 순서에서 사용 하지 못한다.

  • 실행 순서 : from → where  → group by  → having  → select  → order by

2. 문자형 함수

  • LPAD('x' ,'5' ,'x') : 'xxxxx' ( 첫번째 인수에다가 세번째 인수를 왼쪽에서 삽입해서 5자리로 만듬)
  • INSTR('www.Jemin.co.kr','.',5,2) : 13 (5번째부터 '.'를 찾아 2번째로 발견된 '.'의 위치 반환)
  • CONCAT, ||, + 는 실행 결과가 같다

3. 숫자형 함수

  • ROUND(12345.678 ,-2) : 음수임으로 십의 자리에서 반올림 12300

4. NULL 관련 함수

  • NVL(표현식1, 표현식2 ),ISNULL(표현식1, 표현식2) 
    • 표현식1 결과값이 NULL 이면 표현식2 출력
  • NULLIF 표현식1, 표현식2 )
    • 표현식1과 표현식2가 같으면 NULL, 같지않으면 표현식1 출력
  • COALESCE( 표현식1, 표현식2 )
    • 표현식1이 NULL 이면 표현식2 출력
    • 표현식1이 NULL 이 아니면 원래 값 출력

5.

SELECT CASE SUBSTR(JUMIN,7,1) WHEN 1 THEN '남자' ELSE' 여자 END FROM TAB1;

SUBSTR(JUMIN,7,1)을 WHEN 앞으로 뽑은 경우

when a = 1

when a = 2

when a = 3 이렇게 앞에 a처럼 같은걸로만 확인하면 when 앞으로 뺼 수 있다.

대신 이렇게 앞으로 뺸 경우 데이터 타입이 같아야한다. 

하지만 위에 내용은 String, int 다르기 때문에 에러가 뜬다.

SELECT CASE SUBSTR(JUMIN,7,1) WHEN `1` THEN '남자' ELSE' 여자 END FROM TAB1;

SELECT  WHEN CASE SUBSTR(JUMIN,7,1)  = 1('1' 둘 다 된다 묵시적 형변환 됨)  THEN '남자' ELSE' 여자 END FROM TAB1;

 

6.

날짜 + 1 or 날짜 -1  은 하루가 빠지는 것이다. 고로 1은 하루를 뜻함

1/24 == 하루를 24시간으로 나누면 1시간

1/24/60 == 1시간은 60으로 나누면 1분

고로 위에 30/24/60 은 30 X 1 /24 / 60 == 30 X 1분 , 30분

 

7. 

  • COUNT시 COUNT 안에 CASE문에서 ELSE가 붙으면 안된다
  • 왜냐하면 ELSE가 붙으면 조건에 부합하는 값만 COUNT 가 되는게 아니라 ELSE에 있는것도 포함해서 세지기 때문이다.

8. 

SELECT COUNT(CODE)

FROM TAB1

WHERE CODE LIKE AOR CODE LIKEB;

  • OR 계산시 (A경우의 수 + B경우의 수 ) - ( A,B 둘다 만족 시키는 경우의 수)
  • 합집합에서 교집합 빼기

9. 연산자 우선 순위

NOT  →   AND →   OR

 

10 . NULL 을 포함한 count, sum 문제

 

  • SUM 은 NULL을 더하지 않음
  • NULL로만 구성된 SUM은 NULL 반환
  • NULL은 > < 대소비교를 하지않고 빠진다.

SELECT SUM(COL2) + SUM(COL3)  500 + 500 == 1000

SELECT SUM(COL2) + SUM(COL3) , WHERE COL1 >0; NULL + 100 == NULL

SELECT SUM(COL2) + SUM(COL3) , WHERE COL1 IS NOT NULL; 300 + 100 == 400

SELECT SUM(COL2) + SUM(COL3) , WHERE COL1 IS NULL;  200 + 400 == 600

 

'[SqL]' 카테고리의 다른 글

sqld 공부 -(3)  (0) 2024.08.24
sqld 공부 -(2)  (0) 2024.08.23
[2장] 정규화와 성능  (0) 2024.08.09
[2장] 성능 데이터 모델링의 개요  (0) 2024.08.08
[1장] 식별자 -(1)  (0) 2024.08.07
    '[SqL]' 카테고리의 다른 글
    • sqld 공부 -(3)
    • sqld 공부 -(2)
    • [2장] 정규화와 성능
    • [2장] 성능 데이터 모델링의 개요
    젬니
    젬니

    티스토리툴바