일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- Powershell
- API
- 국가과제
- OSS
- Spring Boot
- git
- LINUX MASTER
- Github
- Database
- Resnet
- 고등학생 대상
- Docker
- colab
- Spring
- C언어
- ICT멘토링
- suricata
- GoogleDrive
- rnn
- Machine Learning
- cloud
- VSCode
- ChatGPT
- 인터넷의이해
- 코딩도장
- KAKAO
- Python
- Web
- Rocky Linux
- 크롤링 개발
- Today
- Total
코딩두의 포트폴리오
10. MySQL 데이터베이스 서브 쿼리와 JOIN 본문
서브 쿼리(Sub Query)
1. 서브 쿼리의 개념
- 하위 쿼리라고도 함
- 쿼리문 내에 쿼리문이 포함된 형태
2. 서브 쿼리의 형식
SELECT 칼럼명 FROM 테이블명 WHERE 조건
(SELECT 칼럼명 FROM 테이블명 WHERE 조건);
- 괄호 안의 조건에 부합되는 결과가 상위 칼럼의 조건으로 작용하여 쿼리를 실행
3. 서브 쿼리 예시
ex) account 테이블에서 amount 칼럼 값 중 10보다 큰 데이터를 출력할 경우
1) 서브 쿼리를 사용하지 않을 경우
(1) 쿼리문
(2) 실행 결과
2) 서브 쿼리를 사용할 경우
(1) 쿼리문
(2) 실행 결과
4. 서브 쿼리의 옵션
1) ANY
- 서브 쿼리 조건에 해당하는 값이 여러 개일 때 상위 쿼리 조건 결과에서 복수의 서브 쿼리 조건에 해당하는 결과 모두 출력하는 옵션
2) ALL
- 서브 쿼리 조건에 해당하는 값이 여러 개일 때 상위 쿼리 조건 중 서브 쿼리 조건에 해당하는 결과와 동시 만족하는 값만 출력하는 옵션
3) ANY 옵션 적용 예시
ex) 5월 10일에 발생한 amount 값보다 낮은 데이터를 구하고자 할 경우
(1) ANY 옵션 적용
* 쿼리문
SELECT list, amount FROM account WHERE amount <
ANY (SELECT amount FROM account WHERE date = '05-10' );
- 서브 쿼리에 해당하는 값은 20, 250임 (하나 이상의 값)
- 서브 쿼리에 해당하는 값이 복수일 때 ANY 또는 ALL의 옵션 미적용 시 에러가 발생
* 실행 결과
- amount 값 중 20보다 낮은 값과 250보다 낮은 값 중 하나라도 일치하면 출력됨
(2) ALL 옵션 적용
* 쿼리문
SELECT list, amount FORM account WHERE amount <
ALL (SELECT amount FROM account WHERE date = '05-10');
* 실행 결과
- amount 값 중 20보다 낮은 값과 250보다 낮은 값 조건 모두 해당되는 값이 출력됨
JOIN의 개요
1. JOIN의 개념
- 두 개 이상의 DB나 테이블을 연결하여 출력
- DB에서 두 개 이상의 테이블 비교하여 집합으로 엮어내는 기능
- 두 개 이상 테이블에서 주로 Key 값으로 비교를 하지만 일반 칼럼으로도 비교 가능
JOIN의 종류
1. INNER JOIN
1) 개념 - 두 개의 테이블을 비교하여 공통 요소만 결합하여 출력하는 JOIN
2) 쿼리 형식
SELECT * FROM 테이블 A INNER JOIN 테이블B
ON 테이블 A.칼럼 = 테이블 B.칼럼;
3) 개념도
4) 적용 에
(1) 기본 테이블
- account 테이블(테이블 A에 해당)
- pay 테이블(테이블 B에 해당)
(2) 쿼리문
SELECT * FROM account INNER JOIN pay
ON account.list=pay.subject;
(3) 실행 결과
2. LEFT JOIN
1) 개념
두 개의 테이블을 비교하여 왼쪽의 테이블의 모든 데이터와 함께 오른쪽 테이블의 데이터 중 왼쪽 테이블 데이터와 일치하는 데이터를 포함시키는 JOIN
2) 쿼리 형식
SELECT * FROM 테이블A LEFT JOIN 테이블 B
ON 테이블A.칼럼 = 테이블B.칼럼
3) 개념도
4) 적용 예
(1) 기본 테이블
- account 테이블(테이블 A에 해당)
- pay 테이블(테이블 B에 해당)
(2) 쿼리문
SELECT * FROM account LEFT JOIN pay
ON account.list=pay.subject;
(3) 실행 결과
3. LEFT JOIN 응용
1) 개념
- 두 개의 테이블을 비교하여 왼쪽의 테이블의 모든 데이터 중 오른쪽 테이블과 중복되는 데이터를 제외시키는 JOIN
- WHERE 조건식 사용
2) 쿼리 형식
SELECT * FROM 테이블A LEFT JOIN 테이블B
ON 테이블A.칼럼=테이블B.칼럼 WHERE 테이블B.칼럼 IS NULL;
3) 개념도
4) 적용 예
(1) 기본 테이블
- account 테이블(테이블A에 해당)
- pay 테이블(테이블 B에 해당)
(2) 쿼리문
내SELECT * FROM account LEFT JOIN pay
ON account.list=pay.subjecvt WHERE pay.subject IN NULL;
(3) 실행 결과
4. RIGHT JOIN
1) 개념
- 두 개의 테이블을 비교하여 오른쪽의 테이블의 모든 데이터와 함께 왼쪽 테이블의 데이터 중 오른쪽 테이블 데이터와 일치하는 데이터를 포함시키는 JOIN
2) 쿼리 형식
SELECT * FROM 테이블A RIGHT JOIN 테이블B
ON 테이블A.칼럼=테이블B.칼럼;
3) 개념도
4) 적용 예
(1) 기본 테이블
- account 테이블(테이블 A에 해당)
- pay 테이블(테이블 B에 해당)
(2) 쿼리문
SELECT * FROM account RIGHT JOIN pay
ON account.list=pay.subject;
(3) 실행 결과
5. RIGHT JOIN 응용
1) 개념
- 두 개의 테이블을 비교하여 오른쪽의 테이블의 모든 데이터 중 왼쪽 테이블과 중복되는 데이터를 제외시키는 JOIN
- WHERE 조건식 사용
2) 쿼리 형식
SELECT * FROM 테이블A GIGHT 테이블B
ON 테이블A.칼럼=테이블B.칼럼 WHERE 테이블A.칼럼 IS NULL;
3) 개념도
4) 적용 예
(1) 기본 테이블
- account 테이블(테이블 A에 해당)
(2) pay 테이블(테이블 B에 해당)
(2) 쿼리문
SELECT*FROM account RIGHT JOIN pay
ON account.list=pay.subjecvt WHERE account.list IS NULL;
(3) 실행 결과
서로 다른 DB에 속한 테이블 간 JOIN
1. 개념
- 같은 DB 내의 테이블 간 JOIN 뿐 아니라 서로 다른 DB에 위치한 테이블 간 JOIN이 가능함
2. JOIN 쿼리
SELECT * FROM 데이터베이스가.테이블 A
데이터베이스나.테이블B WHERE 조건;
- 특정 DB의 테이블 A와 다른 DB의 테이블 B 데이터를 JOIN한다는 의미
'STEP 특화교육 > MySQL 데이터베이스 기초와 Web 활용' 카테고리의 다른 글
12. MySQL 데이터베이스 백업 및 복구 (1) | 2025.05.24 |
---|---|
11. MySQL 데이터베이스 사용자 관리 (0) | 2025.05.24 |
9. MySQL 기본 함수의 활용 (2) | 2025.05.24 |
8. MySQL 자료 수정과 삭제 Web 구현 (0) | 2025.05.22 |
7. MySQL 데이터베이스 구조 및 자료 수정과 삭제 (0) | 2025.05.21 |