① 데이터베이스 언어에 대해 설명하시오.
- DDL(정의어 : Data Definition Language) : 데이터베이스 구조를 정의, 수정, 삭제하는 언어이다.(alter, create, drop)
- DML(조작어 : Data Manipulation Language) : 데이터베이스내의 자료 검색, 삽입, 갱신, 삭제를 위한 언어(select, insert, update, delete)
- DCL(제어어 : Data Control Language) : 데이터의 무결성 유지, 병행 수행 제어, 보호 관리를 위한 언어(commit, rollback, grant, revoke)
② select 쿼리 실행순서
FROM, ON, JOIN > WHERE, GROUP BY, HAVING > SELECT > DISTINCT > ORDER BY > LIMIT
- FROM : 각 테이블을 확인한다.
- ON : JOIN 조건을 확인한다.
- JOIN : JOIN이 실행되어 데이터가 SET으로 모아지게 된다. 서브쿼리도 함께 포함되어 임시 테이블을 만들 수 있게 도와준다.
- WHERE : 데이터셋을 형성하게 되면 WHERE의 조건이 개별 행에 적용된다. WHERE절의 제약 조건은 FROM절로 가져온 데이블에 적용될 수 있다.
- GROUP BY : WHERE의 조건 적용 후 나머지 행은 GROUP BY절에 지정된 열의 공통 값을 기준으로 그룹화한다. 쿼리에 집계 기능이 있는 경우에만 이기능을 사용한다.
- HAVING : GROUP BY절이 쿼리에 있을 경우 HAVING절의 제약조건이 그룹화된 행에 적용된다.
- SELECT : SELECT에 표현된 식이 마지막으로 적용된다.
- DISTINCT : 표현된 행에서 중복된 행은 삭제
- ORDER BY : 지정된 데이터를 기준으로 오름차순, 내림차순 지정
- LIMIT : LIMIT에서 벗아나는 행들은 제외되어 출력된다.
③ 트랜잭션이란 무엇인가?
트랜잭션은 작업의 완전성을 보장해준다.
작업들이 모두 처리되거나 처리하지 못할 경우 이전 상태로 복구하여 작업의 일부만 적용되는 현상을 막아줍니다.
하나의 트랜잭션은 Rollback되거나 Commit됩니다.
특징
- 독립성 : 둘 이상의 트랜잭션이 동시에 실행될 경우 서로의 연산에 끼어들 수 없다.
- 일관성 : 실행이 완료되면 언제나 일관성 있는 상태를 유지해야 한다.
- 영속성 : 완료된 결과는 영구적으로 반영되어야 한다.
- 원자성 : 작업이 모두 반영되던지 전혀 반영되지 않아야 한다.
④ inner join과 outer join의 차이를 설명하시오.
inner join은 서로 연관된 내용만 검색하는 조인 방법이다.(교집합)
outer join은 한쪽에는 데이터가 있고 한쪽에는 데이터가 없는 경우, 데이터가 있는 쪽에 내용을 전부 출력하는 방법이다.
⑤ DELETE, TRUNCATE, DROP의 차이를 설명하시오.
DELECT : 데이터만 지우고 테이블 용량은 사라지지 않는다. 원하는 데이터를 골라 지우고 다시 되돌릴 수 있다.
TRUNCATE : 전체 데이터를 한번에 삭제하는 방법이다. 테이블 용량도 줄어들고 인덱스도 삭제되지만 테이블은 삭제할 수 없고 되돌릴 수 도 없다.
DROP : 테이블 자체를 삭제하는 방식 되돌릴 수 없다.
⑥ HAVING과 WHERE의 차이
having은 그룹을 필터링하는데 사용되고, where은 각 행을 필터를 할때 사용딘다.
집계함수(COUNT, SUM, AVG, MAX, MIN)를 사용할 수 있는건 having절만 가능하다.
HAVING은 그룹화 또는 집계가 발생한 후에 필터링하는데 사용되고
WHERE은 그룹화 또는 집계가 발생하기 전에 필터링한다.
⑦ JOIN에서 ON과 WHERE에 차이
ON이 WHERE 보다 먼저 실행되어 JOIN을 하기 전에 필터링을 하고 (=ON 조건으로 필터링이 된 레코들간 JOIN이 이루어진다.)
WHERE은 JOIN을 한 후에 필터링을 한다.(=JOIN을 한 결과에서 WHERE조건절로 필터링이 이뤄진다.)