DB/SQL

이것이MySQL이다 - 02) SQL 고급

로기221 2023. 2. 7. 12:36
728x90
반응형

조인

 

조인(Join)

조인
  • 두 개 이상의 테이블을 서로 묶어서 하나의 결과 집합으로 만들어 내는 것
  • 종류 : INNER JOIN, OUTER JOIN, CROSS JOIN, SELF JOIN
  •  
데이터베이스의 테이블
  • 중복과 공간 낭비를 피하고 데이터의 무결성을 위해서 여러 개의 테이블로 분리하여 저장
  • 분리된 테이블들은 서로 관계(Relation)를 가짐
  • 1대 다 관계 보편적

 

 

 

INNER JOIN(내부 조인)

조인 중에서 가장 많이 사용되는 조인
  • 대개의 업무에서 조인은 INNER JOIN 사용
  • 일반적으로 JOIN이라고 얘기하는 것이 이 INNER JOIN 지칭
  • 사용 형식
  • JOIN만 써도 INNER JOIN으로 인식함

 

조인 중에서 가장 많이 사용되는 조인

 

조인 중에서 가장 많이 사용되는 조인

 

 

 

OUTER JOIN(외부 조인)

조인의 조건에 만족되지 않는 행까지도 포함시키는

 
LEFT OUTER JOIN
  • 왼쪽 테이블의 것은 모두 출력되어야 한다로 이해
  • 줄여서 LEFT JOIN으로 쓸수있음

 

RIGHT OUTER JOIN
  • 오른쪽 테이블의 것은 모두 출력되어야 한다로 이해

 

LEFT OUTER JOIN

 

 

 

 

 

 

 

 

 

 

 

 

 

 

CROSS JOIN(상호 조인)

한쪽 테이블의 모든 행들과 다른 쪽 테이블의 모든 행을 조인시키는 기능
CROSS JOIN의 결과 개수 = 두 테이블 개수를 곱한 개수
 

 

 

CROSS JOIN(상호 조인)

테스트로 사용할 많은 용량의 데이터를 생성할 때 주로 사용
ON 구문을 사용할 수 없음
대량의 데이터를 생성하면 시스템이 다운되거나 디스크 용량이 모두 찰 수 있어 COUNT(*) 함수로 개수만 카운트
 

 

 

SELF JOIN(자체 조인)

자기 자신과 자기 자신이 조인한다는 의미
  • 대표적인 예  
    • 조직도와 관련된 테이블

 

 

 

 

 

 

 

UNION / UNION ALL / NOT IN / IN

두 쿼리의 결과를 행으로 합치는
 
 
 

SQL 프로그래밍

 

 

스토어드 프로시저를 이용한 프로그래밍

형식
 

 

IF…ELSE

조건에 따라 분기
  • 참 / 거짓 두가지만 있기에 2중 분기
한 문장 이상 처리되어야 할때 BEGIN.. END로 묶어주기

 

형식

 
 
 
  • 부울 표현식 부분이 참이면 SQL문장들1 수행 / 거짓이면 SQL문장들2 수행

 

 

CASE

조건에 따라 분기
  • 다중 분기
  • 조건에 맞는 WHEN이 여러 개더라도 먼저 조건이 만족하는 WHEN 처리됨
  • SELECT문에서 많이 사용됨
  • 점수로 성적을 판단하는 경우처럼 여러 단계로 분기 될 때 사용

 

 

WHILEITERATE/LEAVE

WHILE
  • 다른 프로그래밍 언어의 WHILE과 동일한 개념
  • 해당 부울식이 참인 동안에 계속 반복되는 반복문

 

 
ITERATE문을 만나면 WHILE문으로 이동해서 비교를 다시함
  • 다른 프로그래밍 언어의 Continue와 동일한 개념
LEAVE문을 만나면 WHILE문을 빠져 나옴
  • 다른 프로그래밍 언어의 Break와 동일한 개념

 

 

 

오류 처리

형식

 
  • 액션
    • 오류 발생 시에 행동 정의
    • CONTINUE와 EXIT 둘 중 하나 사용, CONTINUE가 나오면 제일 뒤의 ‘처리할_문장’ 부분이 처리
  • 오류조건 : 어떤 오류를 처리할 것인지를 지정
    • MySQL의 오류 코드 숫자가 오거나 SQLSTATE‘상태코드’, SQLEXCEPTION, SQLWARNING, NOT FOUND등이 올 수 있음
  • 처리할_문장
    • 처리할 문장이 여러 개일 경우에는 BEGIN…END로 묶어줌

 

 

동적 SQL

PREPARE
  • SQL문을 실행하지는 않고 미리 준비만 해놓음
 
EXECUTE
  • 준비한 쿼리문 실행
  • 실행 후에는 DEALLOCATE PREFARE로 문장 해제

 

728x90
반응형