2테이블의 연관 있음을 알 수 있는 것 :
-- 데이터 정의어 DDL
-- create alter drop
-- 데이터 조작어 DML
-- insert delete update select
-- 데이터 제어어 DCL
-- revoke(권한뻇기), grant(권한주기)
-- Tcl rollback(롤백), commit(완료)
-- 1.porderTBL 테이블과 productTBL테이블을 이용해서 판매금을 구하기
-- orderid, pcode, amount(수량), price(가격), 판매금액(수량 * 가격), pname(
-- region(원산지)
-- 연관있음을 알 수 있는 것 : pcode, 참조 관계 설정되어 있음
select porderTBL.orderid, porderTBL.pcode, porderTBL.amount as 수량,
productTBL.price, (porderTBL.amount * productTBL.price) as 판매금액, -- 테이블명을 생략할수있는 것 (같은곳, 명확하게 아는 곳이면 .(점)을 생략한다.)
productTBL.pname as 제품명, productTBL.region as 원산지
from porderTBL, productTBL -- 테이블을 두개 이상 작성시 콤마(,)로 구분
where porderTBL.pcode = productTBL.pcode ; -- 조건
-- 테이블명.컬럼명 : 컬럼이 어디에 소속되어 있는지 명확하게 밝히는 것
-- 변경 as추가
select O.orderid, O.pcode, O.amount as 수량,
p.price, (O.amount * p.price) as 판매금액, -- 테이블명을 생략할수있는 것 (같은곳, 명확하게 아는 곳이면 .(점)을 생략한다.)
p.pname as 제품명, p.region as 원산지
from porderTBL as O, productTBL p
-- alias : 테이블명 as 별칭, 또는 테이블명 별칭
where O.pcode = P.pcode ; -- 조건
-- inner join (내부쪼인, 같은것들, 두테이블에서 일치하는 것만 가져오는 경우)
select O.orderid, O.pcode, O.amount as 수량,
p.price, (O.amount * p.price) as 판매금액, -- 테이블명을 생략할수있는 것 (같은곳, 명확하게 아는 곳이면 .(점)을 생략한다.)
p.pname as 제품명, p.region as 원산지
from porderTBL as O inner join productTBL p
on O.pcode = P.pcode; -- 두 테이블에서 여기 조건과 일치하는 것만 검색
-- 2. porderTBL 테이블과 productTBL테이블을 이용해서 pname, 주문금액(수량 * 단가)
-- 판매수량(amount)을 검색하되, 판매수량이 50이상인 것만
-- where 조건이용
select O.orderid, O.pcode, O.amount as 판매수량,
(O.amount * p.price) as 주문금액 -- 테이블명을 생략할수있는 것 (같은곳, 명확하게 아는 곳이면 .(점)을 생략한다.)
from porderTBL as O inner join productTBL p
on O.pcode = P.pcode -- 두 테이블에서 여기 조건과 일치하는 것만 검색
where O.amount >= 50;
-- Tea
select pname, amount, (amount * price) as 주문금액
from porderTBL O, productTBL P
where O.pcode = p.pcode and O.amount >= 50;
-- 조인 - 내부조인(inner join)을 이용
-- Tea
select pname, amount, (amount * price) as 주문금액
from porderTBL O inner join productTBL P
On O.pcode = P.pcode
where O.amount >= 50;
-- 3. porderTBL 테이블에서 판매수량이 가장 많은 제품의 판매금액과 pcode를 검색
-- 주소가 강남으로 끝나고, amount가 50이하인 자료를 찾아
-- orderDate, amount, pname, cname을 검색하시오.
-- select orderDate, amount, pname, cname
select O.orderDate, O.amount, P.pname, C.cname
from porderTBL O inner join productTBL P -- 조인의 갯수는 상관없다.
inner join customerTBL C
on O.pcode = P.pcode and O.custid = C.custid
where O.amount <= 50 and C.address like '%강남' ;
-- 4. porderTBL 테이블에서 판매수량이 가장 많은 제품의 최고 판매수량과 pcode를 검색
-- porderTBL 테이블에서 판매수량이 가장 많은 제품들의 최고 판매수량과 pcode
select max(amount)
from porderTBL
group by pcode;
-- porderTBL 테이블에서 판매수량이 가장 많은 제품들의 최고 판매금액과 pcode를 검색
-- 하위질의문 = 부속질의문 = subquery
-- 쿼리문 안에 또 다른 쿼리문을 삽입
-- 실행은 하위 쿼리부터 실행 됨
select pcode, amount
from porderTBL
where amount = ( -- porderTBL 테이블에서 가장 큰 금액을 찾고, 그 값이 amount와 같은 것을 검색
-- 이렇게 하위절을 쓰는 까닭은 where에는 집계함수를 사용할 수 없기 때문
select max(amount)
from porderTBL
); --
'3. 데이터베이스 > 2). Mysql_개념' 카테고리의 다른 글
Mysql_개념_Day_08 (0) | 2024.02.14 |
---|---|
Mysql_개념_Day_07 (0) | 2024.02.13 |
Mysql_개념_Day_05 (1) | 2024.02.07 |
Mysql_개념_Day_03 (1) | 2024.02.05 |
Mysql_개념_Day_02 (0) | 2024.02.02 |