데이터 분석 공부 일지 1일차 20250421 (월)
엑셀보다 쉽고 빠른 SQL - 1주차
오늘의 학습목표 = SQL강의 1주차를 모두 수강하고 SQL의 기초 습득
1-1
SQL은 무엇인가 ?
= 데이터베이스 명령을 내리기 위한 언어
1-2
설치, 테이블과 컬럼
- 학습을 위해 DBeaver를 설치 (DB 클라이언트 프로그램)
- MySQL과 연결 후 강의에서 제공하는 **연습용 데이터베이스** 연결
- 테이블이란 ? = 엑셀처럼 표 형태로 된 데이터베이스 안 형식, 로우와 컬럼으로 이루어져 있음
1-3
SELECT, FROM 그리고 *
SELECT ?
= 가져올 데이터를 선택
FROM ?
= 데이터를 가져올 테이블을 지정
* ?
= 모든 컬럼을 선택하겠다.
ex)
SELECT *
FROM food_orders
이 쿼리는 food_orders 테이블에서 전체 데이터를 가져온다.
*** 실습 ***
- payments 테이블 조회하기
SELECT *
FROM payments
2. customers 테이블 조회하기
SELECT *
FROM customers
1-4
필요한 항목 뽑아서 쓰기 + 별칭
== SELECT *은 모든 데이터를 가져오기 때문에
필요한 특정 항목만 불러오는게 가능
ex)
SELECT 컬럼1, 컬럼2
FROM 테이블
이런 구조를 가지고 있고
원하는 컬럼을 불러오고 그 컬럼에 별칭을 붙여 다른 이름으로 출력할 수 있는 2가지 방법
1. 컬럼 뒤 as를 붙이고 별칭 작성
2. 컬럼 뒤 한칸 띄어서 별칭 작성
** 한글, 특수문자가 들어가는 경우에는 "" 큰따옴표를 사용해야함 !
ex)
SELECT 컬럼1 as "음식점", 컬럼2 address
FROM 테이블
*** 실습 ***
1. 주문 (food_orders) 테이블에서 order_id, price, quantity 를 가져와서 ord_no, 가격, 수량 으로 별명
SELECT order_id as "ord_no", price as "가격", quantity as "수량"
FROM food_orders
2. 고객 (customers) 테이블에서 name, email 을 가져와서 이름, e-mail 으로 별명 지어주기
SELECT name as "이름", email as "e-mail"
FROM customers
1-5 where 필터
where은 테이블에 조건을 넣어서 특정 컬럼만 가지고 오는거
테이블에서 문자열이 있는 컬럼은 where절에 쓴다고 하면 ‘’ 작은따옴표 써야함
ex) 나이가 21살인 고객을 조회하라
SELECT * (컬럼 전체를)
FROM customers (customers 테이블에서 가져오고)
WHERE age = 21 ( 나이가 21살인 고객들만)
*** WHERE 절에 문자열이 들어간다면 '' 작은 따옴표 ***
ex) where gender = 'female'
*** 실습 ***
1.주문 (food_orders) 테이블에서 한국음식을 주문한 경우만 조회하기
SELECT *
FROM food_orders
where cuisine_type='Korean'
2.결제 (payments) 테이블에서 카드로 결제한 경우만 조회하기
SELECT *
FROM payments
WHERE pay_type = 'card'
1-6 비교연산자,BETWEEN, IN, LIKE
비교연산자
= 부등호
BETWEEN
= 사이 값 구하기
ex) WHERE age BETWEEN 20 and 30 = 20살 이상 30살 이하
IN
= 특정 값이 포함되어 있는지 **괄호 중요**
ex) WHERE age IN (6, 21) = 6살과 21살만 조회
LIKE
= 특정 값이 앞, 뒤, 중간에 포함 되어 있는지 '' 작은따옴표 중요
ex) WHERE restaurant_name LIKE 'b%' = b로 시작하는 식당이름
WHERE restaurant_name LIKE ' %b%' = 식당이름 중간에 b가 들어가는 식당이름
*** 실습 ***
1. 고객 (customers) 테이블에서 나이가 40세 이상인 고객 조회하기
select *
from customers
where age >= 40
2. 주문 (food_orders) 테이블에서 주문 금액이 15,000원 미만인 고객 조회하기
select *
from food_orders
where price < 15000
3. 주문 (food_orders) 테이블에서 주문 금액이 20,000~30,000원 사이인 고객 조회하기
select *
from food_orders
where price between 20000 and 30000
4. 주문 (food_orders) 테이블에서 B 로 시작하는 상점의 주문 조회하기
select *
from food_orders
where restaurant_name like 'b%'
1-7 논리연산자
AND
= 모든 조건 만족하면
ex) WHERE age >= 20 and gender 'female' = 나이가 20살 이상인 여성
OR
= 둘 중 하나라도 맞다면
ex) WHERE age >= 20 or gender 'female' = 나이가 20살 이거나 여성
NOT
= 아닌거
ex) WHERE NOT gender 'female' = 여성이 아닌
*** 실습 ***
주문 (food_orders) 테이블에서 한국음식이면서, 가격이 30,000원 이상인 경우 조회
select *
from food_orders
where cuisine = 'Korean' and price >= 30000
결제 (payments) 테이블에서 카드로 결제했거나, vat 율이 0.2 이하인 경우 조회
select *
from payments
where pay_type = 'card' or vat <= 0.2
1-8 에러메시지
보통 에러코드 뒤 에러가 난 이유를 설명해줌
자주 만나는 에러메시지
- 테이블명 틀림
- 컬럼명 틀림
- 작은따옴표
막히면 구글링, 챗지피티 도움
1주차 숙제
상품 준비시간이 20~30분 사이인, 한국음식점의 식당명과 고객번호 조회하기
select restaurant_name as "음식점", customer_id as "고객번호"
from food_orders
where
food_preparation_time between 20 and 30
and cuisine_type = 'Korean'