부트캠프

공부 내용 정리 SQL (1주차)

ohs020105 2024. 10. 21. 20:18

select : 데이터를 가져오는 기본 명령어.

from : 데이터를 가져올 테이블을 특정해주는 문법.

* : 모든 컬럼을 가져와 준다는 의미.

ex)

select *
from ~~~~
  • 필요한 항목만 뽑아서 사용하기.
  • 예시
  • 테이블 목록
    • food_orders : 음식 주문 정보 테이블
    • payments : 결제 정보 테이블
    • customers : 고객 정보 테이블
    • ☑️ 테이블1 - food_orders
      • order_id : 주문 번호
      • customer_id : 고객 번호
      • restaurant_name : 음식점 이름
      • cuisine_type : 음식 종류
      • price : 음식 가격
      • quantity : 주문 수량
      • day_of_the_week : 주말 구분
      • rating : 음식점 평점
      • food_preparation_time : 음식 준비 시간 (분)
      • delivery_time : 음식 배달 시간 (분)
    • ☑️ 테이블2 - payments
      • order_id : 주문 번호
      • pay_type 결제 수단
      • vat : 수수료
      • date : 결제 일자 (년-월-일)
      • time : 설제 시간 (시:분:초)
    • ☑️ 테이블3 - customers
      • customer_id : 고객 번호
      • name : 고객 이름
      • email : 이메일 주소
      • gender : 성별
      • age : 나이

여기서 원하는 컬럼을 선택 할라면

select 컬럼1, 컬럼2
from 테이블 


ex)
select order_id restaurant_name
from food_orders

 

이런식으로 원하는 것만 볼수 있게 해준다.


  • 컬럼에 별명 지어주기. 

컬럼 옆쪽에 별명을 적어준다.

- 방법1 : 컬럼1 as 별명1
- 방법2 : 컬럼2 별명2

 별명을 지을 때 주의할 점은 

구분 영문, 언더바 특수문자, 한글
방법 별명만 적음 "별명"으로, 큰 따옴표 안에 적어줌
예시 ord_no "ord no"
"주문번호"

보통 컬럼명이 너무 길고 영문이라 보기 어려울때 아래와 같이 지어준다.

select order_id as ord_no,
       restaurant_name "식당이름"	
from food_orders

이렇게 변경되어 있는걸 볼수가 있다.


 [실습]을 통해 한번 더 복습 해보자.

1.주문 (food_orders) 테이블에서 order_id, price, quantity 를 가져와서 ord_no, 가격, 수량 으로 별명 지어주기

select order_id ord_no,
       price "가격",
       quantiy "수량"
from food_orders

이렇게 변경된걸 볼 수가 있다.


  • 조건에 맞는 데이터로 필터링 하는 법( WHERE 이란)

where : 데이터 중에 특정 조건을 필터링 해야할 때가 있다. 여기서 이 문법을 사용하면 전체 데이터중 원하는 원하는 데이터만 필터링을 할 수 있다.

 

  • WHERE 의 구조
select *
from 테이블
where 필터링 조선 (eg. 20살 이상)

ex)
select *
from customers
where age=21

이렇게 나온다.

*필터링은 숫자가 아닌 문자에도 사용 가능하다. 문자를 사용할땐 작은 따옴표( ' ) 를 사용한다.


 [실습]을 통해 한번 더 복습 해보자.

  • .주문 (food_orders) 테이블에서 한국음식을 주문한 경우만 조회하기
select *
from food_orders
where cuisine_type = 'korean'

이렇게 나온다.


  • 필터링을 할 때 유용한 표현. ( 비교연산, BETWEEN, IN, LIKE)
비교연산자 의미 예시
= 같다 age=21
gender=’female’
<> 같지 않다 (다르다) age><21
gender><'female'
> 크다 age>21
>= 크거나 같다 age>=21
< 작다 age<21
<= 작거나 같다 age<=21

 

 

select *
from customers
where age<21

 

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

 

  • IN : '포함' 하는 조건 주기
  • 기본 문법 : in (A,B,C)
  • 예시 : 나이가 15,20,30 세인 경우
age in (15, 20, 30)

 

  • LIKE : 완전히 똑같지는 않지만, 비슷한 값을 조건으로 주기
  • 특정한 문자로 시작하는 경우
  • 기본 문법 : like '시작문자&'
  • 예시 : '오' 로 시작하는 이름
name like '오%'

 

  • 특정한 문자를 포한하는 경우 

기본 문법 : like '%포함문자%'

예시 : 식당 이름에 'next' 를 포함하는 경우 

restaurant_name like '%Next%'
  • 특정한 문자로 끝나는 경우
  • 기본 문법 : like'%끝나는문자'
  • 예시 : '임' 으로 끝나는 이름
name like '%임'

 [실습]을 통해 한번 더 복습 해보자.

1.고객 (customers) 테이블에서 나이가 40세 이상인 고객 조회하기

select *
from customers
where age>=40

이렇게 된다.

2. 주문 (food_orders) 테이블에서 B 로 시작하는 상점의 주문 조회하기

select *
from food_orders
where restaurant_name like 'B%'

이렇게 된다.

 


  • 여러개의 조건으로 필터링 하기
  • where 절에 여러 조건을 적용하기.
논리연산자 의미 예시
AND 그리고 age>20 and gender=’female’ → 나이가 20세 이상이고, 여성
OR 또는 age>20 or gender = 'female'
NOT 아닌 not gender = 'female'

 [실습]을 통해 한번 더 복습 해보자.

1.주문 (food_orders) 테이블에서 한국음식이면서, 가격이 30,000원 이상인 경우 조회

select *
from food_orders
where cuisine_type='Korean' and price>=30000

이렇게 된다.

2.결제 (payments) 테이블에서 카드로 결제했거나, vat 율이 0.2 이하인 경우 조회

select *
from payments
where pay_type='card' or vat<=0.2

이렇게 된다.


더보기

이렇게 1주차 가 끝났다.