본문 바로가기
자격증/SQLD

[SQLD] 공부하면서 자주 까먹거나 헷갈리는 문법 정리

by Yujin Chang 2024. 5. 23.
  • NVL(값1, 값2), ISNULL(값1, 값2) : 값1이 NULL이면 값2로 변경해서 리턴
  • NVL2(값1, 값2, 값3) : 값1이 NULL이면 값3, NULL이 아니면 값2 리턴
  • NULLIF(값1, 값2) : 값1과 값2가 같으면 NULL, 다르면 값1 리턴
  • COALESE(값1, 값2, 값3...) : NULL 아닌 첫번째 값을 리턴 (ex. 값1=null, 값2=null, 값3='apple', 값4='banana'면 null이 아닌 첫번째 값인 apple 리턴
  • SELECT DISTINCT JOB_ID FROM EMP; : 해당 컬럼의 중복 데이터를 제거하여 출력
  • SIGN(양수)=1, SIGN(음수)=-1, SIGN(0)=0
  • SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 LIKE '검색패턴' ESCAPE '이스케이프문자'; (ex: SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 LIKE '%!%%' ESCAPE '!';)
  • CHAR 타입 : 길이 고정 (빈 칸은 공백으로 채움), VARCHAR : 고정 X. “SQL”이 VARCHAR(5)인 경우 “SQL”, CHAR(5)인 경우 “SQL “. TRIM한 경우 동일 값 됨
  • TRUNC(소수, 소수점 자릿수) : 지정된 자릿수까지 버림
  • ROUND(소수, 소수점 자릿수) : 지정된 자릿수까지 반올림
  • AND가 OR보다 우선순위 높음
  • ROLLUP, CUBE : 집계 함수. ROLLUP(A, B, C) = (A, B, C) 그룹핑, (A, B) 그룹핑, (A) 그룹핑, 전체 합계 // CUBE = 가능한 모든 그룹핑 전부 수행, 전체 합
  • DECODE(컬럼, 조건1, 결과1, 조건2, 결과2, 조건3, 결과3, ....) → Java의 switch문과 비슷함. Oracle에만 있음.
  • CASE WHEN 조건1 THEN 결과1 WHEN 조건2 THEN 결과2 (ELSE 결과3) END (AS 별칭)
  • 인라인 뷰: FROM 절에 서브쿼리를 제시하는 것. SELECT문의 실행 결과 = RESULT SET. 테이블로부터 조회하는 것이 아니라, 이미 조회된 RESULT SET으로부터 조회하는 것. 즉, 서브쿼리를 수행한 결과인 RESULT SET을 테이블 대신에 사용함. 테이블명이 올 수 있는 위치에 사용 가능
  • 스칼라(단일행) 서브쿼리: SELECT 절에서 컬럼명 대신 사용하는 서브쿼리. SELECT 절에서 하나의 열 영역으로서 결과를 출력할 수 있음 (반드시 하나의 결과만 반환)
  • 다중행 서브쿼리: 서브쿼리에서 반환되는 결과가 하나 이상의 행일 때 사용.
    • 연산자
      • IN: 조건과 일치하는 데이터를 가져옴
      • ANY, SOME: 하나라도 일치하면 참
      • ALL: 전부 일치해야 참
      • EXISTS: 데이터의 존재 여부 확인 후 존재하면 해당 데이터 가져옴
  • 두 개의 SQL을 UNION으로 연결할 경우 헤드의 명칭은 첫 번째 SQL의 컬럼명 또는 ALIAS를 따름
  • CONNECT_BY_ISLEAF: 가장 하위 노드인 경우 1 반환, 그 외엔 0 반환
  • LPAD(값, 총 문자길이, 채움문자): 지정한 총 문자길이만큼 공간을 할당하고 값을 넣은 후 남은 공간을 왼쪽부터 채움문자로 채움 (RPAD는 오른쪽부터 채움)
    • LPAD(123, 5, ‘0’) → 00123
    • RPAD(123, 5, ‘0’) → 12300
  • SYS_CONNECT_BY_PATH(컬럼, 구분자): 루트 노드부터 현재 노드까지의 경로 출력
  • REPLACE(원래 문자열, 바꾸기 전, 바꾼 후) → 3번째 인자가 없으면 '바꾸기 전'에 해당하는 문자열 제거
  • CREATE INDEX [인덱스명] ON [테이블명] [컬럼명];
  • ALTER TABLE TEST MODIFY(NAME VARCHAR(100));
  • Crow’s Foot 표기법 = IE 표기법. 이름만 다르고 같은 표기법.
  • 인덱스에 대해 연산을 하면 인덱스가 변형되므로 검색 속도가 향상되지 않음.
  • 실행계획 = SQL을 실행하기 위한 절차와 방법
  • OR 연산자가 우선순위 제일 낮음.
  • 순수 관계 연산자: SELECT, PROJECT, JOIN, DIVISION
  • <테이블 복사할 때>
    • [오라클] CREATE TABLE 새로만들테이블명 AS SELECT * FROM 복사할테이블명 [WHERE절]
    • [SQL server] SELECT * INTO 새로만들테이블명 FROM 복사할테이블명