[6/15 TIL] DB(INSERT, UPDATE, DELETE, JOIN)

yumyeonghan·2023년 6월 20일
0
post-custom-banner

🍃프로그래머스 백엔드 데브코스 4기 교육과정을 듣고 정리한 글입니다.🍃

INSERT

INSERT INTO 테이블 (1,2, ...)
VALUES (1,2, ...);

INSERT INTO employees (id, name, salary)
VALUES (1, 'John Doe', 50000);
  • 테이블에 새로운 데이터 행을 삽입하는 데 사용

UPDATE

UPDATE 테이블
SET1 =1,2 =2, ...
WHERE 조건;

UPDATE employees
SET salary = 55000
WHERE id = 1;
  • 테이블의 기존 레코드를 수정

DELETE

DELETE FROM 테이블
WHERE 조건;

DELETE FROM employees
WHERE id = 1;
  • 지정된 조건에 따라 테이블에서 하나 이상의 행을 제거

JOIN


그림 출처 바로가기

  • 두 개 이상의 테이블들을 공통 필드를 가지고 통합
  • JOIN의 결과로 양쪽의 필드를 모두 가진 새로운 테이블 생성

INNER JOIN

SELECT orders.order_id, customers.customer_name
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id;
  • 두 개 이상의 테이블에서 일치하는 행만을 반환
  • 양쪽 테이블의 필드가 모두 채워진 상태로 반환

LEFT(RIGHT) OUTER JOIN

SELECT orders.order_id, customers.customer_name
FROM orders
LEFT(RIGHT) OUTER JOIN customers ON orders.customer_id = customers.customer_id;
  • 왼쪽(오른쪽) 기준 테이블의 모든 필드 레코드를 반환
  • 반대쪽 테이블의 필드는 기준 테이블 레코드와 일치하는 경우 값을 채우고, 일치하지 않는 경우 NULL을 채워서 반환

FULL OUTER JOIN

SELECT orders.order_id, customers.customer_name
FROM orders
LEFT JOIN customers ON orders.customer_id = customers.customer_id
UNION
SELECT orders.order_id, customers.customer_name
FROM orders
RIGHT JOIN customers ON orders.customer_id = customers.customer_id;
  • MYSQL은 이를 지원하지 않기 때문에 대신 LEFT JOIN과 RIGHT JOIN을 UNION 조합
  • 왼쪽 테이블과 오른쪽 테이블의 모든 행을 반환
  • 양쪽 테이블의 필드는 서로 일치하는 레코드는 그 값을 채우고, 일치하지 않는 경우 NULL을 채워서 반환

SELF JOIN

SELECT e.employee_name, m.employee_name AS manager_name
FROM employees e
JOIN employees m ON e.manager_id = m.employee_id;
  • 동일한 테이블 내에서 자체적으로 조인

CROSS JOIN

SELECT *
FROM products
CROSS JOIN categories;
  • 왼쪽 테이블과 오른쪽 테이블의 모든 레코드들의 조합을 반환
profile
웹 개발에 관심 있습니다.
post-custom-banner

0개의 댓글