24.10.01(인덱스, 외래키, INNER JOIN)

jiiiiiiiArchive.·2024년 10월 1일

🤯지식주머니🤯

목록 보기
30/98
post-thumbnail

데이터베이스 성능 최적화, 데이터 무결성 유지, 데이터 간 관계 처리하는 데 중요한 역할

인덱스(index)

  • 정의
    • 데이터베이스에서 검색 속도를 높이기 위해 사용
    • 특정 열을 기준으로 데이터에 빠르게 접근 가능
  • 기능
    • 책의 목차와 비슷하게 테이블의 특정 열을 기준으로 정렬된 데이터 유지
    • 검색 속도 향상
  • 장점
    • SELECT문에서 데이터를 빠르게 찾을 수 있음
  • 단점
    • 인덱스를 유지하는 데 추가적인 저장공간 필요
    • INSERT, UPDATE, DELETE 작업 시 성능 약간 저하
-- 인덱스 생성 구문
-- 'employees' 테이블의 'last_name' 열에 인덱스를 생성
CREATE INDEX idx_last_name ON employees (last_name);

-- 인덱스가 적용된 'last_name' 열을 사용한 SELECT 쿼리
SELECT * FROM employees
WHERE last_name = 'Smith';

// last_name열에 인덱스 생성
// Smith라는 성을 가진 직원 검색 시 속도 빨라짐


-- 인덱스 삭제 방법
-- 'employees' 테이블의 'idx_last_name' 인덱스를 삭제
DROP INDEX idx_last_name;

외래키(FK;Foreign Key)

  • 정의
    • 한 테이블의 열이 다른 테이블의 기본키(PK;Primary Key)를 참조하는 관계
    • 두 테이블 간의 참조 무결성 보장
  • 기능
    • 데이터베이스에서 서로 다른 태이블 간의 관계 설정 -> 참조된 데이터가 항상 유요한 값을 갖도록 함
  • 장점
    • 데이터 무결성 유지
    • 테이블 간 연관성 쉽게 관리 가능
-- 'customers' 테이블 생성
CREATE TABLE customers (
    customer_id INT PRIMARY KEY,
    name VARCHAR(100)
);

-- 'orders' 테이블 생성, 'customer_id'는 'customers' 테이블의 외래키
CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    order_date DATE,
    customer_id INT,
    FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);

-- orders 테이블의 customer_id는 customers 테이블의 customer_id를 참조하는 외래키
-- orders에 기록된 customer_id 값은 반드시 customers 테이블에 존재해야 함


-- 'orders' 테이블의 'customer_id' 열에 외래키를 추가
ALTER TABLE orders
ADD FOREIGH KEY (customer_id) REFERENCES customers(customer_id);

-- 'orders' 테이블에서 외래키 제약 조건을 삭제
ALTER TABLE orders
DROP FOREIGN KEY fk_customer_id;

조인(Join)

  • 여러 테이블에 있는 데이터를 결합하여 하나의 결과로 반환
  • 종류
    • INNER JOIN : 두 테이블에서 일치하는 행만 반환 (여기에서는 요것만 정리함)
    • LEFT (OUTER) JOIN
    • RIGHT (OUTER) JOIN
    • FULL (OUTER) JOIN
-- INNER JOIN: 고객 이름과 그들의 주문 날짜를 조회
-- 'customers' 테이블과 'orders' 테이블을 'customers_id' 기준으로 조회
SELECT customers.name, orders.order_date
FROM customers
INNER JOIN orders ON customers.customer_id = orders.customer_id;
profile
이것저것 다 적는 기록장📚

0개의 댓글