[SQL] MYSQL 15

SUNGJIN KIM·2023년 8월 8일

SQL

목록 보기
5/8
post-thumbnail

오늘의 목표

  • SQL 강의 듣기 (15강)
  • 과제 및 요약 내용 정리하기
    -- 남은 강의 : 6강

강의 내용

💡 눈으로만 보지말고, 직접 손으로 써보면서 진행해보기 !

Alias (별칭)

  • 테이블이나 컬럼 이름을 짧게 표현하는 방법
    • 테이블명 as alias = 테이블명 alias
    • 컬럼명 as alias = 컬럼명 alias
/* as를 사용해 별칭 지정 */
select c.CustomerID as cid, c.FirstName as fname from Customer as c;

/* as를 쓰지않고 띄고 쓰는 방법 */
select c.CustomerID cid, c.FirstName fname from Customer c;

두 테이블에서 데이터 조회

  • 템플릿 :
/* 연결에 대한 명시 필요 */
select
	테이블1.컬럼,
	테이블2.컬럼,
	...
from
	테이블1 inner join 테이블2
	on (테이블1.키 컬럼 = 테이블2.키 컬럼)
  • 주문번호, 고객번호, 고객명을 같이 조회하고 싶은 경우?
/* 주문번호, 고객번호, 고객명 을 같이 조회하고 싶으면? */
select
    so.SalesOrderID,
    so.CustomerID,
    c.FirstName,
    c.LastName
FROM
    SalesOrder so inner join Customer c
    on (so.CustomerID = c.CustomerID)
  • 주문번호, 제품번호, 제품명 조회
/* 주문번호, 제품번호, 제품명 조회 */
SELECT
    sod.SalesOrderID,
    sod.ProductID,
    p.[Name] as p_name
From
    SalesOrderDetail sod inner join Product p
    on (sod.ProductID = p.ProductID)

[과제] 다음 쿼리를 작성해보세요.

  1. 주문번호, 주문일자, 제품번호, 수량, 단가, 금액
/* 주문번호, 주문일자, 제품번호, 수량, 단가, 금액 */
SELECT
    sod.SalesOrderID,
    so.OrderDate,
    sod.ProductID,
    sod.OrderQty,
    sod.UnitPrice,
    sod.SubTotal
From
    SalesOrderDetail sod inner join SalesOrder so
    on (sod.SalesOrderID = so.SalesOrderID)

  1. 고객번호, 고객명, 국가명, 도시명, 주문번호, 주문일자, 배송일자
/* 고객번호, 고객명, 국가명, 도시명, 주문번호, 주문일자, 배송일자 */
select
    c.CustomerID,
    c.FirstName,
    c.LastName,
    c.CountryRegion,
    c.City,
    so.SalesOrderID,
    so.OrderDate,
    so.ShipDate
from
    SalesOrder so inner join Customer c
    on (so.CustomerID = c.CustomerID)

  1. 카테고리번호, 카테고리명, 제품번호, 제품명
/* 카테고리번호, 카테고리명, 제품번호, 제품명 */
select
    pc.ProductCategoryID,
    pc.Name as pc_name,
    p.ProductID,
    p.[Name] as p_name
from
    ProductCategory pc inner join Product p
    on (pc.ProductCategoryID = p.ProductCategoryID)

조건 붙여 검색하기

  • 남성 주문건의 주문번호, 고객번호, 고객명 조회하기
**/* 남성 주문건의 주문번호, 고객번호, 고객명을 조회 */
select
    so.SalesOrderID,
    so.CustomerID,
    c.Title,
    c.FirstName + ' ' + c.LastName as c_name
from
    SalesOrder so inner join Customer c
    on (So.CustomerID = c.CustomerID)
where c.Title = 'Mr.';**

  • 정렬된 데이터 조회하기
/* 제품번호, 제품명, 카테고리명을 조회 시, 카테고리명(오름차순), 제품명(오름차순)으로 정렬 */
select
    p.ProductID,
    p.[Name] as p_name,
    pc.[Name] as pc_name
from
    Product p inner join ProductCategory pc
    on (p.ProductCategoryID = pc.ProductCategoryID)
order by pc_name, p_name;

  • inner join 3개의 테이블에 걸쳐 조회하기
/* 주문번호, 제품명, 카테고리명 조회 */
select
    sod.SalesOrderID,
    p.[Name] as p_name,
    pc.[name] as [pc_name]
from
    SalesOrderDetail sod inner join Product p
    on (sod.ProductID = p.ProductID)
    inner join ProductCategory pc
    on (p.ProductCategoryID = pc.ProductCategoryID)

[과제] 다음 쿼리를 작성해보세요.

  1. ‘United States’에서 들어온 주문건의 주문번호, 주문일자, 도시명(오름차순)
select
    so.SalesOrderID,
    so.OrderDate,
    c.City
from
    SalesOrder so inner join SalesOrderDetail sod
    on (so.SalesOrderID = sod.SalesOrderID)
    inner join Customer c
    on (so.CustomerID = c.CustomerID)
where c.CountryRegion = 'United States'
ORDER by c.city;

  1. 주문 상태가 취소 (status = 6)인 주문 건의 주문일자(내림차순), 제품명, 카테고리명
/* 주문 상태가 취소(status=6)인 주문 건의 주문일자(내림차순), 제품명, 카테고리명 */
select
    so.OrderDate,
    p.[Name] as p_name,
    pd.[Name] as pd_name
from
    SalesOrder so inner join SalesOrderDetail sod
    on (so.SalesOrderID = sod.SalesOrderID)
    inner join Product p
    on (sod.ProductID = p.ProductID)
    inner join ProductCategory pd
    on (p.ProductCategoryID = pd.ProductCategoryID)
where so.[Status] = 6
ORDER BY so.OrderDate DESC;

  1. 카테고리명이 ‘Breakes’인 주문 건의 주문번호(오름차순), 주문 일자, 고객명, 제품명
/* 카테고리명이 'Brakes' 인 주문 건의 주문번호(오름차순), 주문 일자, 고객명, 제품명 */
select
    so.SalesOrderID,
    so.OrderDate,
    c.FirstName + ' ' + c.LastName as c_name,
    p.[Name] as p_name
from
    Product p inner join SalesOrderDetail sod
    on (p.ProductID = sod.ProductID)
    inner join SalesOrder so
    on (sod.SalesOrderID = so.SalesOrderID)
    inner join Customer c
    on (c.CustomerID = so.CustomerID)
    inner join ProductCategory pc
    on (pc.ProductCategoryID = pc.ProductCategoryID)
where pc.[Name] = 'Brakes';

profile
#QA #woonmong

0개의 댓글