자기계발 Diary

오늘의 공부 day_2(SQL 비교연산,논리연산,계산 함수)

siron94 2024. 11. 1. 19:06
  • 조건에 맞는 데이터로 필터링하기 (WHERE)
  • WHERE절의 개념

데이터 중에 특정 조건을 필터링할 때 사용한다.

전체 데이터 중 원하는 데이터만 필터링할 수 있다.

조건을 입력할 때는 문자열에 작은따옴표를 붙인다.

기본 조건은 '='을 통하여 준다.

필터링은 숫자가 아닌 문자에도 사용가능하지만 문자를 사용할 때만 작은따옴표를 사용한다.

MYSQL 환경에서는 대소문자 구분 없이 사용가능하다.

 

WHERE의 구조

select *
from 테이블
where 필터링 조건 (eg. 20살 이상)

 

필터링 예시

고객 (customers) 테이블에서 21살인 사람을 필터링하면 아래와 같다.

select *
from customers
where age=21

 

 

 

  • 필터링을 할 때 유용한 표현 알아보기(비교연산, BETWEEN, IN, LIKE)
  • 필터링은 같다(=) 조건을 포함하여, 크다 (>), 작다(<) 등을 모두 사용할 수 있다
비교연산자 의미 예시
= 같다 age=21
gender='female'
!=, <> 같지 않다(다르다) age <>21
gender != 'female'
> 크다 age>21
>= 크거나 같다 age>=21
< 작다 age<21
<= 작거나 같다 age<=21

 

비교 연산자를 이용해 '나이가 21세 미만인' 고객을 조회한 예시

select *
from customers
where age<21

 

  • 필터링 조건 주기
필터링 조건 종류 의미 예시
BETWEEN a와b 사이의 값을 불러와 줍니다. where age between 10 and 20
IN 목록 내의 값을 불러와 줍니다. age in (15, 21, 31)
LIKE 목록 내의 값을 불러와 줍니다. name like '김%'
restaurant_name like '%Next%'
name like '%임'

 

LIKE 구문은 특정한 문자로 시작하거나, 포함하거나, 뒤에 특정한 문자로 끝날 때 조회할 수 있다

% 을 붙여서 사용한다

 

  • 특정 문자로 시작하는 경우 : like '시작문자%'
  • 특정 문자를 포함하는 경우 : like '% 포함문자%'
  • 특정한 문자로 끝나는 경우 : like '% 끝나는 문자' 

 

 

  • 여러 개의 조건으로 필터링(논리연산)
  • WHERE 절에 여러 조건을 적용하기

여러 개의 조건을 적용할 때 사용한다.

필터링 조건 여러 개를 하나의 쿼리문에 적용할 수 있다.

논리연산자 의미 예시
AND A조건과 B조건 모두 충족할때 age>20 and gender=’female’ → 나이가 20세 이상이고, 여성
OR 하나의 조건만 충족해도 될때 age>20 or gender=’female’ → 나이가 20세 이상이거나, 여성
NOT 같지 않다는 조건일때 not gender=’female’ → 여성이 아닌

 

 

  • 에러메시지에 대해

에러메시지가 발생하면 확인해야 할 부분은 에러코드가 아닌 왜 에러가 발생했을까?라고 생각하며 문장을 보면 에러가 발생한 이유가 기재되어 있기 때문에 잘 보고 확인하자!

 

 

  • 한 번에 계산하기(SUM, AVERAGE, COUNT, MIN, MAX)
숫자 연산 종류 설명
+ 더하기
- 빼기
* 곱하기
/ 나누기

 

  • 계산의 편의를 위해 함수를 제공하고 있습니다.
  • 데이터의 범위가 아닌 계산할 '컬럼'을 적는다.
함수 종류 의미 예시
SUM 컬럼의 총합 select sum(food_preparation_time) total_food_preparation_time
from food_orders
AVG 컬럼의 평균값 select avg(delivery_time) avg_food_preparation_time
from food_orders
COUNT 컬럼의 개수를 확인한다, 몇 개의 값을 가지고 있는지 구할 수 있다. select count(1) count_of_orders,
       count(distinct customer_id) count_of_customers
from food_orders
MIN 해당 컬럼에서 가장 작은 값 select min(price) min_price
from food_orders
MAX 해당 컬럼에서 가장 큰값 select min(price) min_price
from food_orders
  • 쿼리 작성 시 한 줄만 띄어쓰기해야 한다.
  • 쿼리 작성할 때 함수와 컬럼 사이의 공백을 한 칸만 띄워야 한다.
  • 함수를 적을 때 대, 소문자 구분을 하지 않는다.

 

  • COUNT함수 사용 시 주의사항
    • COUNT(*)은 명시적인 값을 지정하지 않은 경우 컬럼의 값 개수를 구한다.
    • COUNT(distinct '컬럼명')은 중복을 제외한 값을 구합니다.

오랜만에 다시 공부한 SQL이라서 다시 잊지 않기 위해 메모하며 진도를 따라갔고 쿼리 작성할 때 함수와 컬럼사이의 공백은 한 칸만 띄워야 한다는 것과 한 줄만 띄어쓰기 가능하다는 점을 배웠다