오늘의 목표
- SQL 강의 듣기 (15강)
- 과제 및 요약 내용 정리하기
-- 남은 강의 : 6강
강의 내용
💡 눈으로만 보지말고, 직접 손으로 써보면서 진행해보기 !
Alias (별칭)
- 테이블이나 컬럼 이름을 짧게 표현하는 방법
- 테이블명 as alias = 테이블명 alias
- 컬럼명 as alias = 컬럼명 alias
select c.CustomerID as cid, c.FirstName as fname from Customer as c;
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)
[과제] 다음 쿼리를 작성해보세요.
- 주문번호, 주문일자, 제품번호, 수량, 단가, 금액
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)

- 고객번호, 고객명, 국가명, 도시명, 주문번호, 주문일자, 배송일자
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)

- 카테고리번호, 카테고리명, 제품번호, 제품명
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)

[과제] 다음 쿼리를 작성해보세요.
- ‘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;

- 주문 상태가 취소 (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;

- 카테고리명이 ‘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';
