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문에서 많이 사용됨
- 점수로 성적을 판단하는 경우처럼 여러 단계로 분기 될 때 사용
WHILE과 ITERATE/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
반응형