on 키워드
로 JOIN 조건 명시.USING
을 이용한 JOIN 조건 지정 : table이나 alias 명시 불가.default join
: inner join은 생략할 수 있음-- alias를 사용할 수 있음.
-- on 키워드 사용.
select col1, col2, ..., colN
from table1 INNER JOIN table2
on table1.col = table2.col;
-- using 사용.
select col1, col2, ..., colN
from table1 INNER JOIN table2
using (공통 column);
select col1, col2, ..., colN
from table1 NATURAL JOIN table2;
SELECT col1, col2, ..., colN
FROM table1 LEFT OUTER JOIN talbe2
ON or USING;
SELECT col1, col2, ..., colN
FROM table1 RIGHT OUTER JOIN talbe2
ON or USING;
SELECT col1, col2, ..., colN
FROM table1 FULL OUTER JOIN talbe2
ON or USING;
-- MySQL FULL OUTER JOIN
SELECT col1, col2, ..., colN
FROM table1 LEFT OUTER JOIN talbe2
ON or USING
UNION
SELECT col1, col2, ..., colN
FROM table1 RIGHT OUTER JOIN talbe2
ON or USING;
서브 쿼리
: 다른 쿼리 내부에 포함되어 있는 SELECT 문을 의미.외부 쿼리, 메인 쿼리
: 서브 쿼리 포함.서브 쿼리, 내부 쿼리
: 외부 쿼리에 포함되는 서브 쿼리.서브 쿼리 사용 이유 : join의 경우 쿼리가 복잡해지거나 카테시안곱으로 인한 속도 저하가 올 수 있음.(case by case)
중첩 서브 쿼리(Nested Subquery)
: WHERE 문에 작성하는 서브 쿼리.인라인 뷰(Inline View)
: FROM 문에 작성하는 서브 쿼리.스칼라 서브 쿼리(Scalar Subquery)
: SELECT 문에 작성하는 서브 쿼리.SELECT col1, col2, ..., colN
FROM table
WHERE (condition and subQuery)
SELECT col1, col2, ..., colN
FROM sbuQuery
...
set @pageno = 3; -- 변수 설정
select b.rn, b.employee_id, b.first_name, b.salary
from (
select @rownum := @rownum + 1 as rn, a.*
from (
select employee_id, first_name, salary
from employees
order by salary desc
) a, (select @rownum := 0) tmp
) b
where b.rn > (@pageno * 5 - 5) and b.rn <= (@pageno * 5);
LIMIT start, end
: start부터 end까지 행으로 제한.SELECT col1, col2, ..., colN, subQuery
FROM table
...
CREATE TABLE 테이블명
subQuery
-- 구조만 생성 : 조회 결과 데이터가 0이 되도록 조건 설정.
CREATE TABLE 테이블명
SELECT * FROM 테이블명 WHERE 1 = 0;
INSERT INTO 테이블명
subQuery
UPDATE 테이블명
SET 조건
WHERE (조건 and subQuery)
DELETE
FROM 테이블명
WHERE (조건 and subQuery)