본문 바로가기
MySQL/실습문제

[EXERCISES] 16. 실습예제(7-1)

by Fletcher 2024. 8. 10.

 

반갑습니다

이번엔 조금 쉬운 문제를 준비했습니다

 

이번 문제에서는 샘플 데이터로

customers 테이블과 orders 테이블을 사용하겠습니다 ^^

하단에 파일 첨부합니다

customers.sql
0.01MB
orders.sql
0.06MB

 

 

 

 

 

 

 

customers 테이블의 스키마 구조와 데이터 정보입니다 ^^

 

 

 

 

orders 테이블의 스키마 구조와 데이터 정보입니다 ^^

 

 

 

 

 

 

 

예제1.

주문금액이 600달러보다 큰 데이터를 조회하시오.

 

 

SELECT * FROM orders
LEFT JOIN customers on customers.id = orders.customer_id
WHERE amount > 600
ORDER BY amount ASC;

 

ORDER BY는 필수는 아닙니다

데이터를 조회 했을 때 확인하기 편하려고 추가했습니다 ^^

 

 

 

 

 

 

 

예제2.

위 조회 결과에서 이메일, 주문금액, 주문날짜를 조회하시오.

 

 

SELECT email, amount, order_date
FROM orders
JOIN customers ON orders.customer_id = customers.id
WHERE amount > 600
ORDER BY amount ASC;

 

1번 문제와 동일하되, 문제의 요구 조건에 맞춰서

SELECT 구에 email, amount, order_date 컬럼을 지정해주시면 되겠습니다 ^^

 

 

 

 

 

 

 

예제3.

위 조회 결과에서 주문날짜를 기준으로 내림차순 조회하시오.

 

 

SELECT email, amount, order_date
FROM orders
JOIN customers ON orders.customer_id = customers.id
WHERE amount > 600
ORDER BY amount DESC;

 

마찬가지로 동일한 구조입니다만,

이번에는 내림차순 정렬을 적용해주시면 되겠습니다 ^^

 

 

 

 

 

 

 

 

예제4.

고객 아이디가 36인 회원의 주문내역을 조회하시오.

 

 

SELECT * FROM customers
LEFT JOIN orders ON customers.id = orders.customer_id
WHERE customer_id = 36;

 

 

이번에 그냥 JOIN 연산이 아닌 LEFT JOIN 연산을 적용한 이유는,

회원 정보는 존재하되 아무런 상품도 구매하지 않았다면 주문 정보가 없을 수도 있기 때문입니다

그냥 JOIN 연산을 할 경우 위 사항에 해당될 경우 회원 정보도 제외가 되어 조회 결과가 NULL이 됩니다 ^^

 

 

 

 

 

 

 

예제5.

first_name이 'Cobby'인 회원의 주문내역을 조회하시오.

 

 

SELECT * FROM customers c
LEFT JOIN orders o ON c.id = o.customer_id
WHERE c.first_name = 'Cobby';

 

이전에는 제가 JOIN 연산시 별도로 테이블마다 별칭을 지정하지 않고

테이블의 풀 네임을 전부 써서 사용했었습니다

하지만 조금 더 효율적인 SQL문 작성을 위해서 보통은 해당 테이블의 첫 글자만 따서 별칭을 지정하여,

특정 컬럼 지정시 종속 테이블을 명시할 때 별칭으로 편리하게 사용을 합니다 ^^

AS 키워드를 사용하셔도 되고 위와 같이 공백으로 구분하셔도 됩니다 ^^!

 

 

다음 포스트에 이어서 실습예제 7의 나머지 문제도 살펴보도록 하겠습니다!

'MySQL > 실습문제' 카테고리의 다른 글

[EXERCISES] 18. 실습예제(7-3)  (0) 2024.08.10
[EXERCISES] 17. 실습예제(7-2)  (0) 2024.08.10
[EXERCISES] 15. 실습예제(6-4)  (0) 2024.08.10
[EXERCISES] 14. 실습예제(6-3)  (0) 2024.08.10
[EXERCISES] 13. 실습예제(6-2)  (0) 2024.08.08