서브 쿼리 - 쿼리문 내부에 포함된 또 다른 쿼리문 - 서브 쿼리를 포함하고 있는 쿼리를 메인 쿼리라고 부른다. - 서브 쿼리의 실행 결과에 따라 단일 행 서브 쿼리와 다중 행 서브 쿼리로 분류된다. - 단일 행 대상 연산자와 다중 행 연산자가 다르다. - 서브 쿼리는 비교 또는 연산 값으로 활용되거나 조회해야하는 테이블 대용으로 활용될 수 있다. 단일 행 서브 쿼리 - 서브 쿼리의 결과가 단 하나의 행인 경우 - 단일 값끼리 비교하는 일반 연산자를 사용할 수 있다. (=, >, = (SELECT salary FROM employees WHERE employee_id = 102); -- 테이블 대신 서브 쿼리 사용 SELECT * FROM (SELECT job_id, job_title FROM jobs ..
ANSI JOIN - ANSI에서 지정한 표준 JOIN 문법 - 다른 관계형 데이터베이스에서도 사용할 수 있는 표준 문법 * ANSI(America National Standard Institute) : 미국 국제 표준 기구 CROSS JOIN SELECT * FROM employees CROSS JOIN departments; INNER JOIN (조건을 충족하는 행만 등장하는 것) - 조인 조건에는 ON절을 사용하고 원하는 조건에는 WHERE절을 사용 - 조인하는 두 테이블이 조인하기 위해 사용하는 컬럼명이 같다면 USING을 사용 (조인에 사용된 컬럼이 맨 앞으로 이동되고, 중복도 제거된다.) SELECT * FROM employees e INNER JOIN departments d ON e.dep..
SELF JOIN - 하나의 테이블에서 자기 자신과 JOIN하여 원하는 데이터를 얻어내는 JOIN - 해당 테이블의 기본키를 같은 테이블의 다른 컬럼에서 외래키로 사용하는 경우 ex: employees의 manager_id SELECT * FROM employees; SELECT emp.first_name AS 사원이름, emp.salary AS 부하월급, mgr.first_name AS 담당매니저이름, mgr.salary AS 상사월급 FROM employees emp, employees mgr WHERE emp.manager_id = mgr.employee_id;
OUTER JOIN - JOIN 조건을 만족하지 못해 등장하지 못하는 행을 추가로 확인할 수 있는 JOIN - (+)를 붙인 쪽에 null을 추가해서 조건을 억지로 맞춰 등장하지 못했던 행을 조회한다. -- 일반적인 조인의 경우 외래키 컬럼에 null이 있으면 조회되지 않는 행이 존재한다. -- departments 쪽에 (+)를 붙이면 해당하는 부서가 없더라도 등장하게 된다. SELECT * FROM employees e, departments d WHERE e.department_id = d.department_id(+) ORDER BY employee_id; -- employees 쪽에 (+)를 붙이면 employees쪽에 null을 붙여서 등장하지 못했던 부서들이 등장한다. SELECT * FRO..
기본키 (Primary Key, PK) - 한 테이블에서 하나의 행을 유일하게 구분할 수 있는 컬럼 - 각 테이블에서 기본키는 하나밖에 설정할 수 없다. - 기본키로 설정된 컬럼에는 중복된 값이 없어야 한다. (UNIQUE) - 기본키로 설정된 컬럼에는 NULL 값이 없어야 한다. (NOT NULL) 후보키 (Candidate Key) - 기본키가 될 자격을 갖추었지만 기본키로 선택되지 않은 컬럼 외래키 (Foreign Key, FK) - 다른 테이블에서는 기본키(또는 후보키)이지만 해당 테이블에서는 중복되는 값을 지닌 일반 컬럼인 경우 ex: employees의 department_id는 외래키 departments의 department_id는 기본키 - 외래키 컬럼에는 다른 테이블의 기본키 컬럼에 없..
ORDER BY 컬럼명 [ASC | DESC] - 조회 시 원하는 컬럼 기준으로 정렬하여 출력할 수 있다. - ASC : 오름차순 (Ascending) - DESC : 내림차순 (Decending) - ASC, DESC 입력 생략 시 ASC로 적용된다. SELECT salary, first_name FROM employees WHERE salary >= 10000 ORDER BY salary ASC; 내림차순 시 null이 먼저 등장한다. (가장 큰 값으로 취급한다.) SELECT salary, commission_pct, first_name FROM employees ORDER BY commission_pct DESC; 오름차순 시 null이 가장 나중에 등장한다. SELECT salary, commi..