SELECT JOIN
- 각각 독립적인(분리된) 테이블을 읽을 때, 그 테이블이 하나의 테이블로 저장되어 있었던 것과 같은 효과
- 같은 이름의 속성이 서로 다른 테이블에 존재할 수 있기 때문에 속성 이름 앞에 해당속성이 소속된 테이블의 이름을 표시 => EX) 주문.주문고객
FROM 절 : 검색에 필요한 모든 테이블을 나열
WHERE 절 : 공통속성(조인 속성)에 ‘=‘ 적용
* 판매 데이터베이스에서 banana 고객이 주문한 제품의 이름을 검색
* 판매 데이터베이스에서 나이가 30세 이상의 고객이 주문한 제품의 주문제품과 주문일자를 검색
<SQL 합치기>
with recursive time as
(select 0 as hour union all select hour + 1 from time where hour < 23)
select hour, count(animal_id) count
from time
left join animal_outs on (hour = date_format(datetime, '%H'))
group by hour;
--CASE사용법--
CASE WHEN 조건절 THEN 참일때 값 ELSE 거짓일때 값 END 컬럼명
--IF 사용법--
IF 조건 참일때 값 ELSE 거짓일때 값 END 컬럼명
SELECT IFNULL(Column명, "Null일 경우 대체 값") FROM 테이블명;
// NAME Column이 NULL이 True인 경우 "No name"을, False인 경우는 NAME Column을 출력
SELECT IF(IS NULL(NAME), "No name", NAME) as NAME
FROM ANIMAL_INS
OUTER JOIN
내부 조인은 두 테이블에 모두 데이터가 있어야만 결과가 나오지만, 외부 조인은 한쪽에만 데이터가 있어도 가능
SELECT <열 목록>
FROM <첫 번째 테이블(LEFT 테이블)>
<LEFT | RIGHT | FULL> OUTER JOIN <두 번째 테이블(RIGHT 테이블)>
ON <조인될 조건>
[WHERE 검색 조건]
SELECT * FROM topic LEFT JOIN author ON topic.author_id = author.id;
- LEFT OUTER JOIN: 왼쪽 테이블의 모든 값이 출력되는 조인
- RIGHT OUTER JOIN: 오른쪽 테이블의 모든 값이 출력되는 조인
- FULL OUTER JOIN: 왼쪽 또는 오른쪽 테이블의 모든 값이 출력되는 조인
INNER JOIN
두 테이블을 연결할 때 가장 많이 사용하는 것이 내부 조인입니다. 그냥 조인이라고 부르면 내부 조인
SELECT <열 목록>
FROM <첫 번째 테이블>
INNER JOIN <두 번째 테이블>
ON <조인될 조건>
[WHERE 검색 조건]
* INNER JOIN을 JOIN이라고만 써도 INNER JOIN으로 인식합니다.
SELECT s.name, s.location_id, l.name AS address, l.distance FROM student AS s INNER JOIN location AS l ON s.location_id = l.id;
'Backend > Database' 카테고리의 다른 글
View & Index, 백업과 복원 (0) | 2022.09.14 |
---|---|
SQL - DML(SELECT) (0) | 2022.09.08 |
SQL - DML(INSERT, UPDATE, DELETE) (0) | 2022.04.19 |
데이터베이스의 목적 (0) | 2022.04.15 |
데이터베이스에 대해 (0) | 2022.04.15 |