Study

SQLD 개념 정리

daehwi 2023. 11. 18. 15:50
반응형

SQL 관련 개략적인 내용 정리

 

연산 순서

from - where - group by - having - select - order by

 

명령어 종류

  • DML(조작어): select, insert, delete, update
  • DDL(정의어): alter, create, modify, rename, drop ...
  • DCL(제어어): grant, revoke
  • TCL(트랜잭션 제어): commit. rollback, savepoint

 

Select 기본

  • distinct(집약)
    • 중복된 값들을 하나로 집약해서 출력
    • distinct a, b : 괄호가 없어도 a, b를 묶어서 distinct 처리된다.
    • NULL도 하나의 종류로 포함된다.
  • Alias
    • select 절: as 생략 가능, column명에 띄어쓰기 있는 경우 큰따옴표("") 반드시 사용
  • concat : 문자열 합치기
    • 인수가 반드시 2개여야한다. (Oracle)
    • SQL Server: +
    • Oracle: ||
    • 오라클에서는 NULL도 빈문자열로 치환해서 취급한다.
  • 논리 연산자 (위부터 연산 우선 순위 N-A-O)
    • NOT
    • AND
    • OR
    • NOT으로 먼저 묶고, AND 연산 후, OR 연산SQL 연산자
  • BETWEEN AND
  • IN: A IN(1,2,3) == (A=1 or A=2 or A=3)
  • LIKE: _ 는 임의의 1글자, %는 0글자 이상
    • ESCAPE: 일종의 LIKE 탈출(?) 식별자
      • percent like "9_@%" escape '@' 와 같이 작성하면 @ 뒤의 %는 문자열 처리된다. (아무 문자나 가능)
  • ROWNUM (Oracle)
    • 행에 번호를 매기고 싶을 때 사용
    • order by와 함께 사용할 때, rownum -> order by 순으로 실행되기 때문에, 의도한 대로 동작하지 않을 수 있다.
  • Top (SqlServer)
    • select Top(n) [컬럼명] : 상위 n 개NULL"값을 알 수 없음" or "부재"를 의미함
  • NULL이 들어간 모든 연산의 결과는 NULL
  • NULL=NULL -> FASLE (모르는 것이지 특정한 값이 아니므로 비교가 불가능하다.)
  • NULL의 정렬상 의미
    • Oracle: 무한대
    • SqlServer: -무한대
  • 각종 함수
    • NVL(V1,V2)
      • V1이 NULL이면 V2, 아니면 V1
    • NVL2(V1,V2,V3)
      • V1이 NULL 이면 V3, 아니면 V2
    • ISNULL(V1,V2)
      • NVL과 동일
    • NULLIF(V1,V2)
      • 두 값이 같으면 NULL, 다르면 V1
    • COALESCE(V1,V2, ...)
      • NULL이 아닌 첫번째 값
      • NULL 값을 치환할 때 용이하다.

 

ORDER BY (정렬)

  • 정렬의 특성
    1. 가장 마지막에 실행된다.
    2. 성능이 느려질 가능성이 있다.
    3. null 값과의 관계 -> Oracle(무한대), SqlServer(-무한대)로 취급
  • 컬럼 번호로 정렬하는 경우
    • 출력되는 컬럼의 수보다 큰 값은 불가능하다
  • 인수가 두 개인 경우
    • 앞에서부터 순차적으로 적용된다.
  • 출력되지 않는 컬럼으로도 정렬이 가능하다.

숫자 함수

  • Round: 소수점 반올림
    • Round(123.456) -> 소수점 첫 번째에서 반올림 -> 123
    • Round(123.456,0) -> 소수점 첫 번째에서 반올림 -> 123
    • Round(123.456,1) -> 소수점 두 번째에서 반올림 ->123.5
    • Round(123.456,2) -> 소수점 세 번째에서 반올림 ->123.46 ...
    • 역으로 정수 반올림도 가능하다.
    • Round(123.456,-1) -> 정수 첫 번째에서 반올림 ->1240
  • Trunc: 소수점 절사
  • Ceil(Oracle) / Ceiling(SqlServer): 올림
  • Floor: 내림 -> Floor(-2.6) = -3

 

문자열 함수 (생략)

  • UPPER / LOWER
  • LPAD / RPAD / LTRIM / RTRIM
  • SUBSTR / NSTR

 

날짜 함수

  • TO_CHAR / TO_DATE
    • 형변환
  • SYSDATE(Oracle) / GETDATE(SqlServer): 현재날짜
  • 날짜 데이터 + 100 = 100일 이후

 

DECODE / CASE

  • CASE WHEN ~ THEN ~ WHEN ~ THEN ~
    • Else 가 없는 경우 NULL로 나옴

 

집계함수

  • NULL 과의 관계
    • SUM(컬럼명) -> NULL을 제외한 합
    • AVG(컬럼명명) -> NULL 빼고 집계
    • COUNT(*) / COUNT(1) -> NULL 집계
    • COUNT(컬럼명) -> NULL 집계 안 함

 

GROUP BY

  • 집약기능이 있다.
  • 그룹 수준으로 정보를 바꾼다.
  • 그룹에 대한 조건식 -> HAVING
반응형