3. 데이터베이스/2). Mysql_개념

Mysql_개념_Day_06

구이제이 2024. 2. 8. 17:26




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