SQL

[스파르타코딩클럽] 엑셀보다 쉽고 빠른 SQL - 1주차

zzheng 2024. 11. 19. 15:35

배운 내용을 작성하고 있습니다. 혹여 해당 포스팅에서 잘못된 부분이 있을 경우, 알려주시면 빠르게 수정 조치하도록 하겠습니다. 감사합니다.

 

1. SQL 데이터 조회하기 (SELECT, FROM)

1) SELECT / FROM 문의 개념

☑️ Query 를 작성하기 전에 생각해 볼 사항

  • SQL 은 ‘코드’ 가 아니라 데이터베이스에 요청을 하기 위한 ‘언어’ 이므로, 작성 전에 어떤 요청을 할 지 생각해봐야 합니다.
  • 가장 기본적인 사항은 ‘어느 테이블에서 데이터를 가져올까’ 입니다.

☑️ 원하는 곳에서 데이터를 가져오는 기본 명령어 SELECT, FROM

  • SELECT : 데이터를 가져오는 기본 명령어로, 데이터를 조회하는 모든 Query 에 사용됨
  • FROM : 데이터를 가져올 테이블을 특정해주는 문법
  • * : 모든 컬럼을 가져와준다는 의미
select *
from food_orders

→ Query 를 실행하면 아래와 같은 결과가 나옵니다!

 

2. 필요한 항목만 뽑아서 사용하기

1) 원하는 컬럼을 선택하기

  • 테이블의 모든 컬럼이 필요하지 않을 때, 필요한 것만 선택하여 조회 가능합니다.
  • 모든 것을 조회한다는 ‘*’ 대신에, 필요한 컬럼만 적어줍니다.
select 컬럼1, 컬럼2
from 테이블
  • 예를 들어 주문 테이블에서 주문번호와 식당 이름만 필요할 때, 아래와 같이 적어줍니다.
select order_id, restaurant_name
from food_orders
  • 컬럼이 많아서 필요한 정보를 확인하기 어려웠던 것에서, 원하는 컬럼만 조회하는 것으로 바뀐 것을 볼 수 있습니다.

2) 컬럼에 별명(alias) 을 주기

  • 원하는 컬럼만 뽑았지만, 평소에 사용하는 명칭과 다를 때가 있습니다. 이럴 때 컬럼 명에 별명을 지정하여 변경할 수 있습니다.
  • 별명 지정 방법 : 컬럼 옆쪽에 별명을 적어줍니다. (아래 두 가지 방법 모두 가능합니다)
- 방법1 : 컬럼1 as 별명1
- 방법2 : 컬럼2 별명2
  • 별명 지을 때 유의사항
구분 영문, 언더바 특수문자, 한글
방법 별명만 적음 "별명"으로, 큰 따움표 안에 적어줌
예시 ord_no “ord no”
”주문번호”
  • 위의 예시에서 ‘주문 번호’ 와 ‘식당 이름’을 조회했는데요, 컬럼명이 너무 길고 영문이라 보기가 어려웠습니다. 이 때 별명을 아래와 같이 지어줘봅시다.
    • order_id → ord_no
    • restaurant_name → 식당 이름
select order_id as ord_no,
       restaurant_name "식당 이름"
from food_orders

 

3. 조건에 맞는 데이터로 필터링하기 (WHERE 이란)

1) WHERE 절의 개념

  • 데이터 중에 특정 조건을 필터링 해야할 때가 있습니다. ’나이가 21살인 사람’ 과 같은 경우, 엑셀 혹은 다른 툴을 이용하여 필터링을 한 경험이 있으실겁니다.
  • SQL 의 ‘WHERE’ 문법을 이용하면 전체 데이터 중 원하는 데이터만 필터링을 할 수 있습니다.
  • WHERE 의 구조
select *
from 테이블
where 필터링 조건 (eg. 20살 이상)
  • 기본 조건은 ‘=’ 을 통하여 줄 수 있습니다. 고객 (customers) 테이블에서 21살인 사람을 필터링을 하면 아래와 같습니다.
select *
from customers
where age=21

  • 필터링은 숫자가 아닌 문자에도 사용 가능합니다. 문자를 사용할 때는 작은 따옴표를 사용합니다.
  • 고객 (customers) 테이블에서 여성을 필터링하면 아래와 같습니다.
select *
from customers
where gender='female'

 

4. 필터링을 할 때 유용한 표현 알아보기 (비교연산, BETWEEN, IN, LIKE)

1) 같음, 큼, 작음 등의 조건을 지정해보기

  • 필터링은 같다 (=) 조건을 포함하여, 크다 (>), 작다 (<) 등을 모두 사용할 수 있습니다.
  • 비교연산자의 종류
비교연산자 의미 예시
= 같다 age=21
gender=’female’
<> 같지 않다(다르다) age<>21
gender<>’female’
> 크다 age>21
>= 크거나 같다 age>=21
< 작다 age<21
<= 작거나 같다 age<=21
  • 비교연산자를 이용하여 ‘나이가 21세 미만인’ 고객을 조회한 예시
select *
from customers
where age<21

2) 다양한 조건의 종류 (BETWEEN, IN, LIKE)

☑️ BETWEEN : A 와 B 사이

  • 기본 문법 : between a and b
  • 예시 : 나이가 10 과 20 사이
where age between 10 and 20

☑️ IN : ‘포함’ 하는 조건 주기

  • 기본 문법 : in (A, B, C)
  • 예시1 : 나이가 15, 21, 31 세인 경우
age in (15, 21, 31)

☑️ LIKE : 완전히 똑같지는 않지만, 비슷한 값을 조건으로 주기

  • 특정한 문자로 시작하는 경우
    • 기본 문법 : like ‘시작문자**%**’
    • 예시 : ‘김’ 으로 시작하는 이름
name like '김%'
  • 특정한 문자를 포함하는 경우
    • 기본 문법 : like%포함문자%
    • 예시 : 식당 이름에 ‘Next’ 를 포함하는 경우
restaurant_name like '%Next%'
  • 특정한 문자로 끝나는 경우
    • 기본 문법 : like ‘**%**끝나는문자’
    • 예시 : ‘임’ 으로 끝나는 이름
name like '%임'

 

5. 여러 개의 조건으로 필터링하기 (논리연산)

1) WHERE 절에 여러 조건을 적용하기

  • 지금까지 배운 필터링 조건 여러개를 하나의 Query 문에서 적용할 수 있습니다.
  • 예) ‘나이가 20세 이상인’, ‘여성 고객’ 두가지 조건 적용
  • 여러개의 조건을 적용할 때 사용되는 연산이 ‘논리연산’ 입니다.
  • 논리연산의 종류
논리연산자 의미 예시
AND 그리고 age>20 and gender=’female’ → 나이가 20세 이상이고, 여성
OR 또는 age>20 or gender=’female’ → 나이가 20세 이상이거나, 여성
NOT 아닌 not gender=’female’ → 여성이 아닌
  • [실습] 여러 조건을 적용하여 데이터 필터링하기
    • 1.주문 (food_orders) 테이블에서 한국음식이면서, 가격이 30,000원 이상인 경우 조회
select *
from food_orders
where cuisine_type='Korean' and price>=30000

 

6. 에러메세지에 당황하지 않고 스스로 문제 해결하기

1) 에러메세지에 대처하는 자체

☑️ 에러메세지에서 확인 할 부분은 ‘에러코드’ 가 아닌 ‘왜 에러가 났는가’ 부분입니다.

  • 일반적인 SQL의 에러문은 아래와 같이 나옵니다.

  • 에러코드 다음에 나오는 문장을 보면, 친절하게 에러가 난 이유를 설명해주는 것을 볼 수 있습니다.
  • 에러 코드를 보고 놀라거나, 포기하지 마시고! 침착하게 ‘에러가 난 이유’ 를 확인해주세요.

 

정리

  • SQL 문이란 : DB 에서 데이터를 조회하기 위한 언어로, SQL 문법을 이용하여 DB에 명령을 내리는 것을 Query 한다고 합니다.
  • SQL 문의 기본 구조
select # '데이터 조회' 의 명령어로 필수 구문
from   # '어디에서 데이터를 조회할까' 의 명령어로 필수 구문 
where  # 조건을 지정해주는 구문
  • 조건을 지정하는 방법
    • 비교연산자 : <, >, =, <>
    • 다양한 구문 : IN, BETWEEN, LIKE
    • 여러가지 조건의 적용 : AND, OR, NOT