데이터베이스 성능 최적화, 데이터 무결성 유지, 데이터 간 관계 처리하는 데 중요한 역할
인덱스(index)
- 정의
- 데이터베이스에서 검색 속도를 높이기 위해 사용
- 특정 열을 기준으로 데이터에 빠르게 접근 가능
- 기능
- 책의 목차와 비슷하게 테이블의 특정 열을 기준으로 정렬된 데이터 유지
- 검색 속도 향상
- 장점
- SELECT문에서 데이터를 빠르게 찾을 수 있음
- 단점
- 인덱스를 유지하는 데 추가적인 저장공간 필요
- INSERT, UPDATE, DELETE 작업 시 성능 약간 저하
CREATE INDEX idx_last_name ON employees (last_name);
SELECT * FROM employees
WHERE last_name = 'Smith';
DROP INDEX idx_last_name;
외래키(FK;Foreign Key)
- 정의
- 한 테이블의 열이 다른 테이블의 기본키(PK;Primary Key)를 참조하는 관계
- 두 테이블 간의 참조 무결성 보장
- 기능
- 데이터베이스에서 서로 다른 태이블 간의 관계 설정 -> 참조된 데이터가 항상 유요한 값을 갖도록 함
- 장점
- 데이터 무결성 유지
- 테이블 간 연관성 쉽게 관리 가능
CREATE TABLE customers (
customer_id INT PRIMARY KEY,
name VARCHAR(100)
);
CREATE TABLE orders (
order_id INT PRIMARY KEY,
order_date DATE,
customer_id INT,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);
ALTER TABLE orders
ADD FOREIGH KEY (customer_id) REFERENCES customers(customer_id);
ALTER TABLE orders
DROP FOREIGN KEY fk_customer_id;
조인(Join)
- 여러 테이블에 있는 데이터를 결합하여 하나의 결과로 반환
- 종류
- INNER JOIN : 두 테이블에서 일치하는 행만 반환 (여기에서는 요것만 정리함)
- LEFT (OUTER) JOIN
- RIGHT (OUTER) JOIN
- FULL (OUTER) JOIN
SELECT customers.name, orders.order_date
FROM customers
INNER JOIN orders ON customers.customer_id = orders.customer_id;