본문 바로가기

카테고리 없음

[실기] - SQL 쿼리 활용 1, 2

  • 집합 연산자
    • 형식
      • SELECT * FROM 회원정보 WHERE 이름 = '김흥직';
      • UNION <- 여기에옴
      • SELECT * FROM 회원정보 WHERE 이름 = '김달수';
    • UNION - 합집합(중복제거)
    • UNUNION ALL - 합집합(중복허용)
    • INTERSECT - 교집합(중복제거)
    • EXCEPT - 차집합(중복제거) - MINUS
  • JOIN : 관련된 컬럼 기준으로 결합 (즉, ID lch3067, ktf3067 이 회원 정보쪽 테이블에 존재 / 가입정보 테이블에 ID 컬럼에 lch3067, ktf3067 존재하야한다.
    • 정규화를 통해서 잘게 잘게 쪼갠 테이블을 다시 합친다.
    • 내부 조인(Inner Join) - 공통 데이터만 추출
      • 형식 : SELECT * FROM 회원정보 INNER JOIN 주문 ON 회원정보.회원번호 = 주문.회원번호
    • 자연 조인(Natural Join) : 컬럼이 어떤거 부터 올지 모름(시험장에서는 아무거나 컬럼 입력해서 쓰기)
      • 형식 : SELECT * FROM R1 NATURAL JOIN R2;
    • 전체 외부 조인(Full Outer Join) : 일치한거 외는 NULL값으로 표현
    • 왼쪽 외부 조인 : L1.COL1 = R1.COL1 에서 L1테이블만 쓰기
    • 오른쪽 외부 조인 : L1.COL1 = R1.COL1 에서 R1테이블만 쓰기
    • 곱집합(Crocss Join) : 4 * 2
  • 서브 쿼리
    • 스칼라 서브쿼리 : SELECT 절에 위치
      • 형식 : SELECT 이름, ( SELECT 주분번호 FROM 주문 WHERE 주문.주문번호 = 회원정보.회원번호) AS 주문번호 FROM 회원정보 WHERE 회원번호 = '0003';
    • 인라인뷰 서브쿼리 : FROM 안쪽에 테이블 형태로 만들어진다. 즉, FROM 뒤에 SELECT문이 온다. * SELECT문은 테이블 표형태이니...
    • 중첩 서브쿼리 : WHERE 쪽에 위치함
      • 다중행
        •  IN : 값이 존재하는지?
        • EXISTS : 행이 있는지?
        • ANY : 하나만 만족(다중으로 결과값이 나올때.. ANY가 없으면, 에러 발생)
        • ALL : 모두 만족
    • 그룹 함수
      • 집계함수
      • 그룹함수
        • GROUP BY

 

[SQL 문제 주의점]

1. ; 세밀콜론 붙히기

2. , 붙혀서 구분하기

3. 문자는 '' 홀따움표 붙히기

4. NOT EXISTS와 EXISTS는 형식상 컬럼이 존재하지 않으며, 행의 존재유무 파악이다.

5. NULL은 비교가 안된다.

6. count(*)으로 하면, Null이던, 상관없이 무조건 null 포함해서 가져온다.

7. count(특정컬럼)이 들어오면, Null을 제외하고 갯수를 가져온다.