[250117] 사전캠프 5일차 SQL (CREATE TABLE, 데이터 타입, INSERT INTO, UPDATE, DELETE FROM)

이효원·2025년 1월 17일

SQL

2주차 과제

음식 종류별 가장 높은 주문 금액과 가장 낮은 주문금액을 조회하고, 가장 낮은 주문금액 순으로 (내림차순) 정렬하기

#
SELECT cuisine_type,
	#가장 낮은 주문 금액
	MIN(price) as min_price,
    #가장 높은 주문 금액 
	MAX(price) as  max_price
FROM food_orders
GROUP BY cuisine_type
#내림차순 정렬
ORDER BY min_price DESC;

챗GPT는 한눈에 들어오게 들여쓰기를 활용하는 쿼리를 강조하고
명령어랑 함수는 반드시 대문자로 쓰라고 한다.
나중에 쿼리가 길어지고 복잡해져도 깔끔하게 쓸 수 있도록 지금부터 습관을 들여놓자.

걷기반 문제 2. 이제 좀 벌었으니 flex 한 번 해볼까요?!

#데이터베이스 지정
USE Sparta;
# 테이블 생성
CREATE TABLE products (
    id INT PRIMARY KEY,
    product_name VARCHAR(100),
    price INT,
    category VARCHAR(50)
);
# 데이터 집어넣기
INSERT INTO products (id, product_name, price, category)
VALUES
    (1, '맥북 프로', 1200, '컴퓨터'),
    (2, '다이슨 청소기', 300, '생활가전'),
    (3, '갤럭시탭', 600, '컴퓨터'),
	(4, '드롱기 커피머신', 200, '주방가전');

이번에도 GPT가 도와줘서 테이블 생성 완료.

1) 테이블에서 제품 이름(product_name)과 가격(price)만을 선택하는 쿼리를 작성해주세요.

SELECT 
	product_name,
	price
FROM products;

2) 테이블에서 제품 이름에 '프로'가 포함된 모든 제품을 선택하는 쿼리를 작성해주세요.

SELECT *
FROM products
# LIKE 특정 단어 포함
WHERE product_name LIKE '%프로%';

3) 테이블에서 제품 이름이 '갤'로 시작하는 모든 제품을 선택하는 쿼리를 작성해주세요.

SELECT *
FROM products
WHERE product_name LIKE '갤%';

4) 테이블에서 모든 제품을 구매하기 위해 필요한 돈을 계산하는 쿼리를 작성해주세요.

SELECT SUM(price) AS '총액'
FROM products;

걷기반 문제 3. 상품 주문이 들어왔으니 주문을 처리해봅시다!

위에 GPT가 생성해준 코드를 따라하면서 스스로 테이블을 만들어보기로 했다.
모르는 부분은 사전캠프 기초 부분과 GPT 참조.
데이터베이스에 추가해야하는 테이블이다.

idcustomer_idproduct_idamountshipping_feeorder_date
171913500002023-11-01
213121100002023-11-02
36541200002023-11-05
4100832250002023-11-05
535611150002023-11-09
# 데이터베이스 지정
USE Sparta;
# 테이블 생성
CREATE TABLE orders(
	# PRIMARY KEY는 각 행을 고유하게 식별한다. 
    # 나는 id 컬럼을 통해 줄 번호를 지정한다고 이해했다.
	id INT PRIMARY KEY,
    # INT -> 정수형
    customer_id INT,
    product_id INT,
    amount INT,
    shipping_fee INT,
    # DATE -> 시간/날짜형, [250115]참조
    order_date DATE
);
#데이터 집어넣기
INSERT INTO orders(
	id,
    customer_id,
    product_id,
    amount,
    shipping_fee,
    order_date
)
VALUES 
	(1, 719, 1, 3, 50000, '2023-11-01'),
    (2, 131, 2, 1, 10000, '2023-11-02'),
    (3, 65, 4, 1, 20000, '2023-11-05'),
    (4, 1008, 3, 2, 25000, '2023-11-05'),
    (5, 356, 1, 1, 15000, '2023-11-09');

이렇게 해서 테이블 생성 완료!
복붙하지 않고 하나씩 입력해보니까 대충 이해된다.

테이블 관련 명령어

테이블 생성

CREATE TABLE 테이블이름 (
    컬럼1 데이터타입,
    컬럼2 데이터타입,
    ...
);

데이터 타입

  • INT : 정수형
  • VARCHAR(숫자) : 문자열 (최대글자수)
  • PRIMARY KEY : 기본 키 -> 테이블에서 각 행을 고유하게 식별하는 열

데이터 삽입

INSERT INTO 테이블이름 (컬럼1, 컬럼2, ...) 
VALUES (1,2, ...)

데이터 수정

UPDATE 테이블이름 
SET 컬럼1 =1, 컬럼2 =2 
WHERE 조건;

데이터 삭제

DELETE FROM 테이블이름
WHERE 조건;

1) orders 테이블에서 주문 수량(amount)이 2개 이상인 주문을 진행한 소비자의 ID(customer_id)만 선택하는 쿼리를 작성해주세요.

SELECT customer_id
FROM orders
WHERE amount >=2;

2) orders 테이블에서 2023년 11월 2일 이후에 주문된 주문 수량(amount)이 2개 이상인 주문을 선택하는 쿼리를 작성해주세요.

SELECT *
FROM orders
WHERE 
	order_date > '2023-11-02' AND amount >= 2;

3) orders 테이블에서 주문 수량이 3개 미만이면서 배송비(shipping_fee)가 15000원보다 비싼 주문을 선택하는 쿼리를 작성해주세요.

SELECT * 
FROM orders
WHERE amount < 3 and shipping_fee > 15000;

4) orders 테이블에서 배송비가 높은 금액 순으로 정렬하는 쿼리를 작성해주세요.

SELECT * 
FROM orders
ORDER BY shipping_fee DESC;

느낀점

테이블 생성하는 연습을 했다. 나중에 데이터베이스에 데이터를 직접 입력할 일이 있을까? 싶기도 하고 많을 것 같기도 하고. SQL 강의 2주차까지 이해 완료했다. 다음주 5일 동안 SQL 강의에만 집중해서 빠르게 끝내버리고 싶다. 오늘은 아티클 스터디가 없어서 개인 공부만 했는데, 4시간 동안 집중하려니까 참 쉽지 않았다. 그래도 5일차가 되니 사전캠프에 익숙해졌다. SQL 기본강의 + 걷기반 문제 끝내고 SQLD 공부랑 파이썬 기초랑 병행해야지.

0개의 댓글