본문 바로가기
Database

[SQLD] SELECT, NULL

by pin9___9 2022. 9. 2.
728x90

SELECT


  • DISTINCT : SELECT로 DB에서 컬럼을 조회할 때 중복되는 값들을 합쳐 한번만 출력.
-- 테이블에서 필드에 대해 중복을 제외하여 출력
SELECT DISTINCT 필드 FROM 테이블
  • ALIAS (AS) : 컬럼이나 테이블에 임시 이름을 주는 용도로 사용.
ColumnName AS 컬럼명칭 --컬럼에 별칭 부여하기
TableName AS 테이블명칭 --테이블에 별칭 부여하기
  • CONCAT : 문자열을 합칠 때 CONCAT 함수와 더하기(+) 연산자를 사용하는데, 문자열을 합칠 때는 되도록 CONCAT 함수 사용을 권장.
    • CONCAT 함수는 많은 데이터베이스에서 사용 가능한 ANSI SQL 함수이며, CONCAT 함수에 입력된 값은 문자형으로 변환 후 합쳐지는 작업이 이뤄진다.
    • 숫자와 문자가 함께 입력되어도 오류가 발생하지 않는다.
    • CONCAT 함수의 문자 파라미터는 254개까지 입력이 가능하다.
SELECT CONCAT('SQLD','','Exam') FROM DUAL;
>SQLD Exam

 

SELECT문장 실행 순서


  1. 발췌 대상 테이블을 참조 ( FROM ) 
  2. 발췌 대상 데이터가 아닌 것을 제거 ( WHERE )
  3. 행들을 소그룹화 ( GROUP BY )
  4. 그룹핑된 값의 조건에 맞는 것만을 출력 ( HAVING )
  5. 데이터 값을 출력 / 계산 ( SELECT )
  6. 데이터를 정렬 ( ORDER BY )

 

정렬 (ORDER BY)


  • 가장 마지막에 실행되며, 성능이 느려질 수 있다.
  • GROUP BY 사용 시 GROUP BY 표현식이 아닌 값은 ORDER BY에 사용 불가.
  • 집계 함수 사용 가능.
  • 컬럼명과 컬럼 순서(정수)를 혼합하여 사용 가능.
  • Oracle은 SELECT절에서 출력되지 않는 컬럼명으로 정렬 가능.
    • Oracle은 행 기반으로 전체 컬럼을 메모리에 로드하기 때문.
    • FROM절에 인라인 뷰를 사용하는 경우에는 불가능.

 

NULL


  • NULL은 아직 정의 되지 않은 값, 0은 숫자이며, 공백은 문자이다.
  • 테이블 생성시 NOT NULL 또는 PRIMARY KEY로 정의되지 않은 모든 데이터 유형은 NULL 허용.
  • 산술 연산에 NULL이 들어갈 경우 결과 값도 NULL.
  • NULL값을 비교 연산 ( = , != )시 FALSE 리턴. ( NULL값의 비교 연산은  IS NULL , IS NOT NULL로 가능 )
  • 집계 함수( SUM, COUNT, AVG, MIN, MAX... )에서는 NULL 제외 후 실행.

 

NULL 관련 함수


  • NVL( col1, 0 ) : col1이 NULL이면 0으로 반환 아니면 col1 반환 *Oracle
  • NVL2( col1, 1, 0 ) : col1이 NULL이면 0으로 반환 아니면 1반환 *Oracle
  • ISNULL ( col1, 0 ) : col1이 NULL이면 0으로 반환 아니면 col1 반환 *SQL SERVER
  • NULLIF ( col1, col2 ) : col1이 col2이면 NULL로 반환 아니면 col1 반환
  • COALESCE ( col1, col2, col3 ... ) : NULL이 아닌 최초의 표현식 반환, BUT 모든 표현식이 NULL이라면 NULL 반환
728x90

댓글