본문 바로가기
SQL

SQL 연습문제 답

by Minius 2018. 3. 6.
반응형

-- 테이블 삭제하는 명령어 delete drop truncate

-- delete 용량 변경 없이 데이터만 삭제

-- truncate 데이터, 용량, 인덱스 삭제

-- drop 테이블 전체 삭제


Main query

Subquery 올 수 있는 위치 : update_  set where



-- (1)박지성이 구매한 도서의 출판사와 같은 출판사에서 도서를 구매한 고객의 이름

select s1.name,s3.publisher

from customer s1, orders s2, book s3

                    where s1.custid = s2.custid

                      and s2.bookid = s3.bookid

                      and s1.name != '박지성'

                      and s3.publisher in (select publisher from customer t1, orders t2, book t3

                                                            where t1.custid = t2.custid

                                                            and t2.bookid = t3.bookid

                                                            and t1.name = '박지성');

                                                            

-- (2)두 개 이상의 서로 다른 출판사에서 도서를 구매한 고객의 이름

select NAME

from CUSTOMER s1

where (select count(distinct publisher) from customer t1, orders t2, book t3

                                            where t1.custid = t2.custid

                                            and t2.bookid = t3.bookid

                                            and t1.name = s1.name) >= 2;

                                            

-- (3)전체 고객의 30% 이상이 구매한 도서

select bookname

from book s1

where ((select count(t1.bookid)

        from book t1, orders t2

        where t1.bookid = t2.bookid

        and t1.bookid = s1.bookid) >= 0.3 * (select count(*) from customer));

        

-- 4.(1) 새로운 도서 ('스포츠 세계', '대한미디어', 10000원)이 마당서점에 입고되었다.

--       삽입이 안 될 경우 필요한 데이터가 더 있는지 찾아보시오.


-- 테이블 목록

select * from tabs;

-- 테이블 구조조회

-- 데이터 사전 조회시 대문자로 조회해야한다.

desc book;

select * from all_tab_columns where table_name = 'BOOK';

-- 테이블 제약 조건 조회

-- CONSTRAINT_TYPE 'P' : PRIMARY KEY, 'R' : FOREIGN KEY, 'U':UNIQUE, 'C':CHECK, NOT NULL

SELECT * FROM ALL_CONSTRAINTS WHERE TABLE_NAME = 'ORDERS';


create view vw_book

as select *

from book

where bookname like '%축구%';


select * from vw_book;


create view vw_customer

as select *

from customer

where address like '%대한민국%';

select * from vw_customer;


create view vw_orders(orderid,custid,name,bookid,bookname, saleprice,orderdate)

as select od.orderid, od.custid, cs.name, od.bookid, bk.bookname, od.saleprice, od.orderdate

from orders od, customer cs, book bk

where od.custid = cs.custid and od.bookid = bk.bookid;

select * from vw_orders;


create or replace view vw_customer(custid,name,address)

as select custid,name,address

from customer

where address like '%영국%';

select * from vw_customer;

drop view vw_customer;


-- p.252 6.(1) 판매가격 2만원 이상

create view highorders(bookid,bookname,name,publisher,price)

as select t1.bookid,t1.bookname,t2.name,t1.publisher,t1.price

from book t1, customer t2, orders t3

where t1.price >= 20000

and t1.bookid = t3.bookid and t2.CUSTID = t3.CUSTID;

select * from highorders;

drop view highorders;


-- 6.(2)

select bookname, name from highorders;


-- 6.(3)

create or replace view highorders(bookid,bookname,name,publisher,price)

as select t1.bookid,t1.bookname,t2.name,t1.publisher,t1.price

from book t1, customer t2, orders t3

where t1.price >= 20000

and t1.bookid = t3.bookid and t2.CUSTID = t3.CUSTID;

'SQL' 카테고리의 다른 글

View  (0) 2018.03.08
2018-03-07 SQL  (0) 2018.03.07
[SQL] DDL, DML이란?  (0) 2018.03.05
[SQL] p.193 연습문제  (0) 2018.03.02
Oracle SQL  (0) 2018.02.12

댓글