MySQL

MySQL 기초

OneMoreThing 2024. 1. 3. 17:56

MySQL?

MySQL은 관계형 데이터베이스를 위한 SQL로 현재 DB랭킹을 확인해보면 2위에 위치해 있다. 
https://db-engines.com/en/ranking
높은 점유율을 차지하는 이유는 오픈소스이기 때문에 비용을 절감할 수 있기 때문이다. 

기초 명령어

SELECT *
FROM 'table_name'
WHERE 'conditions'
GROUP BY 'column name'
HAVING 'conditions'
ORDER BY 'column name'


먼저, 명령어의 순서는 위와 같다. 셀 프 웨 그 해 오 (셀-프-왜-그-래-요)순서를 지켜서 쿼리문을 작성하도록하자.

0. 명령어 실행 순서(중요!)

[프 (웨그해) 셀오]

- from -> where -> group by -> having -> select -> order by
- 데이터를 먼저 선택하고 분류한 뒤 처리함!

from : 테이블 선택하고
where : 선택된 테이블 중 특정한 조건을 부여하여 후보군 축소
group by : 후보군들을 그룹화
having : 그룹화된 새로운 테이블에 조건 부여
select : 위의 과정에서 남은 데이터에 어떤 처리를 할지, 또한 어떤 열을 출력할 지 선택
order by : 오름차순/내림차순으로 출력할 지 선택


1. SELECT 'specific columns'

데이터베이스에서 어떤 칼럼을 불러올지 결정한다.
칼럼을 불러올 때 연산이나 메소드를 적용하여 값을 변화시킬 수 있다.

적용할 수 있는 메소드의 종류
- SUM('col') : 칼럼의 총합
- AVG('col') : 칼럼의 평균
- COUNT(1) 또는 COUNT(*) : 데이터의 개수 셈
- MIN('col') : 칼럼의 최소값
- MAX('col') : 칼럼의 최대값

 

2. FROM 'tablename'

어떤 테이블을 불러올지 정하게 된다. 데이터베이스 안의 테이블을 선택하게되며, 모든 쿼리문 셀프웨그해오 중 가장 먼저 실행된다.

3. WHERE 'conditions'

FROM에서 불러온 테이블의 데이터들 중 어떤 데이터들을 선택할 지 특정한 조건을 부여한다.
이때 사용할 수 있는 것으로는

- 비교연산자 : =,!=, >,>=,<,<=
- 'col' BETWEEN (A) AND (B) : 칼럼의 값 중 A이상 B 이하의 값
- 'col' IN (A,B,C) : 칼럼의 값 중 A, B, C를 고른다.
- 'col' LIKE 는 세가지 응용이 존재한다.
- 'col' LIKE 'A%' : 칼럼의 값 중 문자 A로 시작하는 것
 - 'col' LIKE '%A%' : 칼럼의 값 중 문자 A를 포함하는 것
- 'col' LIKE '%A' : 칼럼의 값 중 문자 A로 끝나는 것

4. GROUP BY 'col'

SELECT 와 WHERE절을 통해 선택한 데이터들을 지정한 특정 칼럼별로 묶어서 처리한다.

(예제)
select restaurant_name, max(price)
from food_orders
where cuisine_type = 'Korean'
group by restaurant_name

 

예제 동작 설명 :
 1. food_orders 테이블의 데이터 중 cuisine_type이 'Korean'인 데이터들을 선택
 2. 1의 데이터들을 restaurant_name 칼럼을 기준으로 그룹화
 3. 각 그룹별로 price의 최댓값을 구하는 작업 처리한다.

 

5. HAVING

그룹화 된 새로운 테이블에 조건을 부여한다.

6. ORDER BY 'col'

특정 칼럼을 기준으로 오름차순 또는 내림차순으로 정렬한다. 기본적으로 오름차순으로 정렬되며 내림차순으로 정렬하기 위해선 DESC 키워드를 마지막에 적어야한다.