-- 테이블 삭제하는 명령어 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 |
댓글