-
백업에는 mysqldump
-
항상 참인 조건만을 확인에는
WHERE 1=1
-
같은 쿼리문도 서버 스펙에 따라(특히 CPU) 항상 속도 차이가 있음
-
테이블 생성 기본 옵션
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
employee 테이블
department 테이블
select * from employee cross join department;
교차 결합으로 A, B 테이블 행 곱하기 사이즈만큼 출력
select a.*, b.name
from employee a
inner join department b on (b.id = a.dept_id)
조건 결합으로 on 절 다음에 적힌 조건에 맞으면 지정 값을 아니면 null을 출력
select a.*, b.name
from employee a
left outer join department b on (b.id = a.dept_id)
왼,오른쪽 테이블을 대상으로 반대편 테이블과 결합하는 연산으로 조건이 맞지 않더라도 대상 테이블의 모든 행을 출력
또한, 조건이 맞지 않는 행의 열 값은 null 출력
access_log 테이블
select a.*, b.access_dt
from employee a
left outer join access_log b on (b.emp_id = a.id)
더 추가적인 내용으로 조회용 테이블을 생성해 조인 연산 결과 대상 테이블 전체 행 출력과 조회용 테이블 기록 값이 추가로 출력
select emp.*, manager.name AS 'manager_name'
from employee emp
join employee manager on (manager.id = emp.manager_id)
자기자신을 조인하는 연산으로 같은 테이블을 사용하는만큼 반드시 별명 첨부 필요