[Mysql] sql문 부숴버리기(1)

김지엽·2023년 11월 15일
0
post-thumbnail

1. 개요

SQL문에서 DML이라 불리는 데이터 조작 명령어들에 대해 공부하고 직접 예제 테이블을 통해 수행해보자!

2. DML(Data Manipulation Language)

흔히 우리가 가장 자주 사용하는 sql문이다. 테이블에 데이터를 가져오기, 생성하기, 수정하기, 삭제하기 등 직접 데이터를 조작할때 사용한다.

예제 데이터는 다음을 활용한다.

- 테이블 형태

BOOK

AUTHOR

BOOK_SALES

- 예제 테이블

- 대표 명령어

DML은 대표적으로 다음과 같은 명령어가 있다.

  1. INSERT
INSERT INTO author (AUTHOR_ID, AUTHOR_NAME) VALUES (1, 홍길동);
  1. SELECT
SELECT * FROM book;
  1. UPDATE
UPDATE book SET CATEGORY="인문" WHERE BOOK_ID=3;
  1. DELETE
DELETE FROM book_sales WHERE SALES=3;

위와 같은 기본적인 명령어는 간단하지만 이 명령어를 기반으로 어떻게 데이터를 조작할건지 조건을 넣는 것이 꽤나 까다롭다.

- Where

  1. where는 조건에 따라 데이터를 선별해주는 키워드이다.
  2. 여러개의 조건은 AND, OR을 사용해서 넣을 수 있다.
SELECT * FROM book WHERE BOOk_ID != 2 AND PRICE > 9000 AND PUBLISHED_DATE > "2019-12-31";

- Limit

  1. 조회 결과의 개수를 제한할 수 있다.
SELECT * FROM book_sales WHERE BOOK_ID=2 LIMIT 2;

- Distinct

  1. 조회 결과에서 중복된 값을 제거할 수 있다.
SELECT DISTINCT CATEGORY FROM BOOK;

- Alias

  1. 컬럼이나 테이블에 다른 별칭을 주고 조회한다.
SELECT SALES_DATE sd FROM book_sales;

SELECT * FROM book_sales bs WHERE bs.BOOK_ID=2;

- Order By

  1. 특정 컬럼을 기준으로 오름차순 or 내린차순 정렬한다.
  2. 정렬 기준을 두가지 이상 넣을 경우 순서대로 우선순위에 맞게 정렬된다.
    ex) A 기준으로 정렬하되, A가 같으때에는 B를 기준으로 정렬한다.
SELECT * FROM book_sales ORDER BY BOOK_ID ASC, SALES DESC;

- Group By

  1. 특정 컬럼에 대해 그룹으로 묶어서 조회한다.
  2. 일반적으로 집계 함수를 많이 사용하는데, 만약 사용하지 않으면 중복된 값을 제거하고 조회한다.
SELECT BOOK_ID, SUM(SALES) AS TOTAL FROM BOOK_SALES GROUP BY BOOK_ID; 

- Inner Join

  1. 테이블에 공통된 부분을 기반으로 레코드를 조회한다.
SELECT * FROM book_sales bs INNER JOIN book b ON b.BOOK_ID=bs.BOOK_ID;

- Left/Right Outer Join

명확한 예시를 위해 다음과 같이 AUTHOR 테이블에 값을 추가하고 진행한다.

  1. Left Outer Join은 왼쪽 테이블 기준으로 공통된 부분을 합치는데 오른쪽 테이블에 해당 값이 없으면 null처리 된다.
  2. Right는 방향만 반대이다.
SELECT * FROM book b LEFT OUTER JOIN author a ON b.AUTHOR_ID=a.AUTHOR_ID;

참고

sql문법 정리

profile
욕심 많은 개발자

0개의 댓글