SELECT 컬럼 FROM 테이블이름 WHERE 검색조건 GROUP BY 컬럼 ORDER BY 컬럼
❗️주의해야 할 GROUP BY절 사용법
- SELECT문에는 명시하였지만 GROUP BY 절에서 명시하지 않은 칼럼에 대한 처리 조건이 SELECT문에 지정되지 않을 경우 에러를 발생시킨다!
- 즉 SELECT문에 처리 조건을 지정하지 않은 컬럼을 GROUP BY 절에서도 명시하지 않았다면 에러가 발생한다!
SELECT 컬럼 FROM 테이블이름 WHERE 검색조건 GROUP BY 컬럼1,컬럼2,컬럼n... ORDER BY 컬럼
SELECT 컬럼 FROM 테이블이름 WHERE 검색조건 GROUP BY 컬럼1,컬럼2,컬럼n... HAVING 검색조건 ORDER BY 컬럼
SELECT 컬럼(필드) FROM 테이블명1,테이블명2,... WHERE 검색조건 GROUP BY 컬럼 ORDER BY 컬럼이름 [정렬 옵션]
❗️TIP!
FROM 절에 명시되는 테이블 이름에 공백으로 구분하여 별칭을 SELECT 절이나 WHERE 절에서 풀네임을 명시하지 않아도 된다.
카디션 곱의 원인은?
- WHERE 절에서 조인 조건을 명시하지 않거나 잘못 설정하여 양쪽 테이블을 연결하는 조건을 만족하는 행이 하나도 없는 경우 발생한다.
카디션 곱을 해결하려면 어떻게 해야할까?
- 카디션 곱을(연결 가능한 모든 경우의 수가 조합되어 출력되는 경우) 해결하기 위해서는 JOIN의 조건이 되는 적절한 WHERE 절을 명시한다.
이미 JOIN 조건을 명시하기 위해 WHERE 절에 사용된 경우, 추가적인 검색 조건은 AND 연산자를 사용한다.
이 때 검색 조건은 양쪽 테이블중 하나에 대해서만 지정하면 된다!
SELECT 테이블1.컬럼, 테이블2.컬럼 FROM 테이블1 INNER JOIN 테이블 2 ON 테이블1.column = table2.column;
❗️추가적인 검색 조건 설정시 EQUI JOIN과 INNER JOIN의 차이점!
- EQUI JOIN은 조인 조건에 WHERE 절을 사용하기 때문에 추가적인 검색 조건은 AND 절을 사용한다.
- INNER JOIN은 조인 조건에 ON 절을 사용하기 때문에 추가적인 검색 조건은 WHERE 절을 사용한다.
종류 | 설명 |
---|---|
LEFT OUTER JOIN | JOIN 절에서 명시한 테이블 중, 왼쪽의 테이블에 대하여 조건에 부합하지 않는 테이터까지 조회한다. |
RIGHT OUTER JOIN | JOIN 절에서 명시한 테이블 중, 오른쪽의 테이블에 대하여 조건에 부합하지 않는 데이터까지 조회한다. |
FULL OUTER JOIN | JOIN 절에서 사용하는 모든 테이블에서 조건에 부합하지 않는 데이터까지 조회한다. 시스템의 성능에 큰 영향을 주기 때문에 실무에서는 잘 사용하지 않는다. |
- 두 개 이상의 테이블을 조인하는 경우 기준이 되는 하나의 테이블을 정하고, 기준 테이블에서 다른 테이블을 조인하도록 작성한다.
SELECT 컬럼(또는 테이블.컬럼) FROM 테이블1, 테이블2. 테이블 3
WHERE 테이블1.컬럼=테이블2.컬럼
AND 테이블1.컬럼=테이블3.컬럼
SELECT 컬럼(또는 테이블.컬럼) FROM 테이블1
INNER JOIN 테이블2 ON 테이블1.컬럼=테이블2.컬럼
INNER JOIN 테이블3 ON 테이블1.컬럼=테이블3.컬럼
SELECT 컬럼(또는 테이블.컬럼) FROM 테이블1
INNER JOIN 테이블2 ON 테이블1.컬럼=테이블2.컬럼
LEFT OUTER JOIN 테이블3 ON 테이블1.컬럼=테이블3.컬럼
SELECT 컬럼 FROM 테이블 WHERE 컬럼 연산자 (SELECT...)
서브 쿼리 종류 | 설명 |
---|---|
단일 행 서브쿼리 | 단 하나의 검색 결과만을 반환하는 형태. 서브쿼리를 검색 결과로 사용하기 위해 비교 연산자가 사용된다. |
다중 행 서브쿼리 | 하나 이상의 검색 결과를 반환하는 형태 서브 쿼리를 검색 결과로 사용하기 위해 IN 연산자가 사용된다. |