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 키워드를 마지막에 적어야한다.