260104 Day18 SQL

Dole·2026년 1월 4일

AttractionOfPython

목록 보기
17/25

(가)
sqlite 컨닝이 필요없을 만큼

sqlite의 기본규칙

SELECT
FROM
JOIN
ON
WHERE
GROUP BY
HAVING
ORDER BY
LIMIT

순서로 입력을 해야한다.


여깄는게 테이블이고


얘들이 칼럼이다

select
from
join
on
where
group by
having
order by
limit

그런데 실제db가 처리하는 순서는 다음과 같다.
FROM
→ JOIN
→ ON
→ WHERE
→ GROUP BY
→ HAVING
→ SELECT
→ ORDER BY
→ LIMIT
그래서 from뒤에 쓰겠다고 선언한 줄임말이 윗줄의 select에 영향을 미치게 되는 것이다

각 키워드 뒤에 무엇이 붙어야 하는지 알아두자

select
칼럼 혹은 집계함수의 출력값(합산, 평규 등..)
(*은 모든 것을 출력하도록 한다.)
ex.firstname, customerid, sum(total)
주의할 점. 두 테이블을 끌어다 쓰려고 할 경우, 두 테이블에 같은 이름의 칼럼이 있을 수 있다. 이때 상위 테이블명을 하나 정해 반드시 앞에 붙여줘야 한다. 결과에는 차이 없음.
customers.customerid라거나 invoices.customerid라든가 i.customerid라거나 c.customerid 이런식으로.

from
테이블
ex.customers

join
또다른 테이블
ex.invoices

from과 join에서 줄임말을 쓰겠다고 선언할 수 있다.
customers c라든가 invoices i와 같은 방식으로.

on
두 테이블을 매개할 수 있는 칼럼 둘 사이에 등호를 넣기
같은 이름의 칼럼을 이용하는 거다.
ex.customers.customerid=invoices.customerid
줄임말 만들었으면 써보자
ex.c.customerid=i.customerid

where
개별 행에 조건을 걸 수 있다.
이름을 표기된 그대로 대소문자까지 맞춰 써줘야 한다.
따옴표도 반드시 써야한다.
ex.country='Canada'

group by
칼럼의 값이 중복되는 경우가 많을 수 있다.
한 사람이 물건을 10개 구매해서 구매기록이 10개 찍혔다고 하자

ex.firstname
이제 사람마다 한 줄만 차지한다.

having
역시 조건을 걸어주는 기능을 한다.
해당 테이블의 전체 데이터의 통계를 이용할 수 있다.
ex.total >50

order by
정렬 방식을 정할 수 있다.
순서를 가를 칼럼을 하나 정해서 써주자. 상위테이블 표기해야하는 경우 빼지 말고 표기해야한다.
쉼표로 끊어 쓸 수도 있는데, 이때 두 번째 기준은 첫 번째 기준으로 순서가 나뉘지 않는 경우 한 번 더 서열을 정해주는 것.
그 뒤에 asc나 desc를 써준다. 안쓰면 asc 자동적용된다.
영문 문자 같은 경우에는 abc 순서가 오름차순이다.
asc 오름차순
desc 내림차순
ex.firstname desc
ex.c.customerid asc

limit
결과물을 몇 줄까지 보여줄지 정한다.
ex.10

count sum avg 도 알아보자
각각 개수 합계 평균이다.

count
함수 안에 를 넣으면 전체 행 개수를 세겠다는 뜻.
ex.select count(
)
null은 세고 싶지 않다면 ()안에 셀 칼럼의 이름을 넣는다.
ex.select count(i.customerid)

sum
합산할 칼럼이름을 함수 안에 넣어주자.
ex.select sum(total)
sum은 (*)같은게 먹히지 않는다.

avg
사용법이 sum과 같다.
ex.select(total)

;으로 단위를 구분하는 것을 잊지 말자

합치면 위와 같이 되는 것이다.

sum avg count도 써보면


이렇게 된다

profile
성용아카데미3기

0개의 댓글