지정한 테이블, 각 컬럼이 몇 개의 데이터를 가지고 있는지 구하는 함수.
count (컬럼명)을 쓰거나 count( * ) 혹은 count(1) 이라고 쓰면 된다.
count 와 distinct 를 함께 쓰면 중복된 값을 제거하고 출력되므로 몇 개의 값을 가지고 있는지 알고 싶을 때 사용된다.
e.g.)
select count(1) count_of_orders,
count(distinct customer_id) count_of_customers
from food_orders
count(1)을 사용함으로써 전체 주문건수를 알 수 있고
count(distinct customer_id)를 사용함으로써 주문한 고객의 수를 알 수 있다.
SQL 실행 결과
컬럼 내의 데이터별로 결과물을 보고 싶을 때, where절을 각각 작성하는 것은 비효율적이기 때문에 사용하는 구문.
group by 절 뒤에 컬럼명을 다 적어도 되지만, 더 편리하게 사용하는 방법은 select 절에 적은 컬럼 순서대로 숫자로 쓰는 것!
e.g.) 음식점별 주문 금액 최댓값
select restaurant_name,
max(price) max_of_price
from food_orders
group by 1
SQL 실행 결과
컬럼 내의 데이터를 오름차순/내림차순으로 정렬하고 싶을 때 사용하는 구문.
결과값을 정렬하는 구문이기 때문에 가장 마지막에 쓴다.
order by A : A 컬럼을 기준으로 결과값을 정렬 (오름차순)
order by A desc : A 컬럼을 기준으로 결과값을 정렬 (내림차순)
e.g.) 음식 종류별로 주문 금액 합계를 주문 금액 합계 기준으로 내림차순 정렬
select cuisine_type,
sum(price) sum_of_price
from food_orders
group by cuisine_type
order by sum(price) desc
SQL 실행결과, desc 없으면 오름차순으로 정렬됨.
데이터에 나와 있는 글자를 다른 글자로 바꾸고 싶을 때 사용한다.
e.g.1) 학교명이 변경되었을 때:
강여중 -> 해람중:
replace(바꿀 컬럼, '강여중', '해람중')
e.g.2) 식당명의 'Blue Ribbon'이 'Pink Ribbon'으로 바뀌었을 때
select restaurant_name "원래 식당명",
replace(restaurant_name, 'Blue', 'Pink') "바뀐 식당명"
from food_orders
where restaurant_name like '%Blue Ribbon%'
where 절을 안 쓰면 식당명에 Blue Ribbon이 없는 식당도 전부 나옴.
SQL에서 함수를 적을 때는 대소문자를 구분하지 않음. 하지만 컬럼명의 대소문자 구분은 필수!
각 구문을 적을 땐 ,를 적지 않아도 되지만, 구문 내에 여러가지 데이터를 사용할 경우 , 적는 것 놓치지 말기!