MSA/SQL
DAY.07
domsam
2025. 4. 22. 18:03
반응형
/* p.190
INSERT
질의 3-44. book 테이블에 새로운 도서 '스포츠 의학'을 삽입하시오. 스포츠 의학은
한솔의학서적에서 출간했으며 가격은 90,000원입니다.
*/
INSERT INTO book
( bookid, bookname, publisher, price )
VALUES
( 11, '스포츠 의학', '한솔의학서적', 90000 );
INSERT INTO book
SET bookid = 12
, bookname = '스포츠 의학'
, publisher = '한솔의학서적'
, price = 90000;
/* 질의 3-45. book 테이블에 새로운 도서 '스포츠 의학'을 삽입하시오. 스포츠 의학은
한솔의학서적에서 출간했으며 가격은 미정입니다. */
INSERT INTO book
SET bookid = 13
, bookname = '스포츠 의학'
, publisher = '한솔의학서적';
-- 질의 3-46. 수입도서 목록을 book 테이블에 모두 삽입하시오.
INSERT INTO book
( bookid, bookname, publisher, price )
SELECT bookid - 7, bookname, publisher, price
FROM imported_book A;
-- p.193 update
/*
update 테이블명
set 속성명 = 수정값
[, 속성명 = 수정값
, 속성명 = 수정값 ... ]
[ WHERE 검색 조건 ]
*/
START TRANSACTION;
UPDATE book
set bookname = '걸어서 세계속으로'
, price = 20000
, 컬럼명 = 수정값
WHERE bookid = 3 ;
COMMIT;
ROLLBACK;
-- 질의 3-47. Customer 테이블에서 고객번호가 5인 고객의 주소를 '대한민국 부산'으로 변경하시오.
UPDATE customer
SET address = '대한민국 부산'
WHERE custid = 5;
-- 질의 3-48. book 테이블에서 14번 '스포츠 의학'의 출판사를 imported_book 테이블에 있는
-- 21번 책의 출판사와 동일하게 변경하시오.
UPDATE book
SET publisher = 'Pearson'
WHERE bookid = 13;
UPDATE book
SET publisher = ( SELECT publisher FROM imported_book WHERE bookid = 21 )
WHERE bookid = 13;
UPDATE imported_book
SET publisher = (SELECT publisher FROM book WHERE bookid = 12)
WHERE bookid = 21;
-- p.197 delete
START TRANSACTION;
DELETE FROM orders
WHERE pk
;
ROLLBACK;
-- 질의 3-49. book테이블에서 도서번호가 11인 도서를 삭제하시오.
DELETE FROM book
WHERE bookid = 9;
-- 질의 3-50. 모든 고객을 삭제하시오.
DELETE FROM customer;
TRUNCATE customer;
SELECT IFNULL(NULL, 0), ISNULL(NULL, 0), NVL(NULL, 0);
-- p.201
-- 01-(1) 도서번호가 1인 도서의 이름
SELECT bookname
FROM book
WHERE bookid = 1;
-- 01-(2) 가격이 20,000원 이상인 도서의 이름
SELECT bookname
FROM book
WHERE price >= 20000;
-- 01-(3) 박지성의 총 구매액
SELECT saleprice FROM orders WHERE custid = 1;
SELECT * FROM customer WHERE NAME = '박지성';
SELECT SUM(saleprice)
FROM orders O
INNER JOIN customer C
ON C.custid = O.custid
WHERE C.`name` = '박지성';
SELECT SUM(saleprice) FROM orders
WHERE custid IN ( SELECT custid FROM customer WHERE NAME = '박지성' );
-- 01-(4) 박지성이 구매한 도서의 수
SELECT COUNT(O.custid)
FROM orders O
INNER JOIN customer C
ON C.custid = O.custid
WHERE C.`name` = '박지성';
SELECT COUNT(custid) FROM orders
WHERE custid = ( SELECT custid FROM customer WHERE NAME = '박지성' );
-- 01-(5) 박지성이 구매한 도서의 출판사 수
SELECT COUNT(DISTINCT publisher)
FROM orders O
INNER JOIN customer C
ON C.custid = O.custid
AND C.`name` = '박지성'
INNER JOIN book B
ON B.bookid = O.bookid;
-- 01-(6) 박지성이 구매한 도서의 이름, 가격, 정가와 판매가격의 차이
SELECT B.bookname, B.price, ABS(B.price - O.saleprice) AS diff_price
FROM orders O
INNER JOIN customer C
ON C.custid = O.custid
AND C.`name` = '박지성'
INNER JOIN book B
ON B.bookid = O.bookid;
-- 절대값 구하는 함수 ABS()
SELECT ABS(10), ABS(-10);