
16 금요일 시험
21 다음주 수요일 설문
10.10~11 휴일
바킹독 - 알고리즘 cpp
- 질의 3-29 도서를 구매한 적이 있는 고객의 이름을 검색하시오.
SELECT name --2. 추출한 고객 아이디로 customer테이블에서 고객명 추출 FROM customer -- from customer, orders -- where customer.custid = orders.custid; WHERE custid IN(SELECT custid -- 1.orders테이블에서 고객아이디 찾아 customer테이블에 존재하는 고객아이디 추출 FROM orders);
- [실행 결과]
- 질의 3-30 대한미디어에서 출판한 도서를 구매한 고객의 이름을 보이시오.
SELECT name -- 3.찾은 고객아이디의 고객명을 찾아 출력함. FROM customer WHERE custid IN (SELECT custid -- 2.찾은 책아이디를 구매한 고객아이디를 찾음 FROM orders WHERE bookid IN (SELECT bookid -- 1.대한미디어 출판사인 책아이디를 찾음 FROM book WHERE publisher='대한미디어'));
- [실행 결과]
<br>
> - 질의 3-31 출판사별로 출판사의 평균 도서 가격보다 비싼 도서를 구하시오.
```sql
SELECT  b1.bookname
FROM    book b1  -- from table명 테이블별명
WHERE   b1.price > (SELECT  AVG(b2.price)
                FROM    book b2
                WHERE   b1.publisher = b2.publisher);
UNIONMINUS INTERSECT
- 질의 3-32 도서를 주문하지 않은 고객의 이름을 보이시오.
SELECT  name
FROM    customer
MINUS   --차집합
SELECT  name
FROM    customer
WHERE   custid IN (SELECT   custid
                    FROM    orders);
-- 질의 3-33 주문이 있는 고객의 이름과 주소를 보이시오.
SELECT  name, address -- 추출한 정보에 빈곳이 없는 속성을 구별해 이름과 주소를 출력함.
FROM    customer cs
WHERE   EXISTS(SELECT   *   -- orders테이블에 존재하는 고객아이디와 customer테이블에 고객 아이디 모두 추출 
                FROM    orders od
                WHERE   cs.custid = od.custid);
CREATE TABLE 테이블이름
( { 속성이름 데이터타입
	[NOT NULL | UNIQUE | DEFAULT 기본값 | CHECK 체크조건]
	}
	[PRIMARY KEY 	속성이름(들)]
	{[FOREIGN KEY 	속성이름 	REFERENCES 	테이블이름(속성이름)]
	[ON DELETE 	[CASCADE┃SET NULL]
	}
)
CREATE TABLE NewBook (
    bookid      NUMBER, 
    bookname    VARCHAR2(20),
    publisher   VARCHAR2(20),
    price       NUMBER,
    PRIMARY KEY (bookid) -- PRIMARY KEY를 bookid로 생성
);

not nulluniquedefault ~check(조건)조건이면 error 발생CREATE TABLE NewBook (
    bookname      VARCHAR(20)     NOT NULL, 
    publisher     VARCHAR(20)     UNIQUE,
    price         NUMBER          DEFAULT 10000 CHECK(price > 1000),
    PRIMARY KEY   (bookname, publisher)
);
ALTER TABLE 테이블이름
	[ADD 속성이름 데이터타입]
	[DROP COLUMN 속성이름]
	[MODIFY 속성이름 데이터타입]
	[MODIFY 속성이름 [NULL┃NOT NULL]]
	[ADD PRIMARY KEY(속성이름)]
	[[ADD┃DROP] 제약이름]DROP TABLE 테이블이름
- 질의 3-42 NewBook 테이블을 삭제하시오.
DROP TABLE NewBook;


ddl : 데이터 정의어
INSERT INTO 테이블이름[(속성리스트)]
VALUES (값리스트);
- 질의 3-44 Book 테이블에 새로운 도서 ‘스포츠 의학’을 삽입하시오.
스포츠 의학은 '한솔의학서적'에서 출간, 가격은 90,000원이다.
INSERT INTO Book(bookid, bookname, publisher, price)
VALUES (11, '스포츠 의학', '한솔의학서적', 90000);
primary key, not null, unique등 속성 값을 필수로 넣어야 하는 경우엔 속성 값을 지정해야함.
- 질의 3-45 Book 테이블에 새로운 도서 ‘스포츠 의학2’을 삽입하시오.
스포츠 의학은 '한솔의학서적'에서 출간했으며 가격은 미정(null)이다.
INSERT INTO Book(bookid, bookname, publisher)
VALUES (14, '스포츠 의학2', '한솔의학서적');
INSERT INTO Book
VALUES ('스포츠 의학3', 17, '한솔의학서적', 90000);
-- Book(bookid, bookname, publisher, price)가 원래 value순서
INSERT INTO Book(bookname, bookid, publisher, price)
VALUES ('스포츠 의학4', 17, '한솔의학서적', 90000);
UPDATE 테이블이름
SET 속성이름1=값1[, 속성이름2=값2, ...]
[WHERE <검색조건>];**UPDATE문 사용시 반드시 where조건문을 사용해야함**
UPDATE함.
- 질의 3-48 Customer 테이블에서 박세리 고객의 주소를 김연아 고객의 주소로 변경하시오.

UPDATE  Customer
SET     address='대한민국 부산'
WHERE   custid=5;
- 질의 3-48 Customer 테이블에서 박세리 고객의 주소를 김연아 고객의 주소로 변경하시오.
UPDATE  Customer
SET     address = (SELECT   address
                FROM    Customer
                WHERE   name='김연아')
WHERE   name LIKE '박세리';DELETE	FROM 테이블이름
[WHERE	검색조건];**DELETE문 사용시 반드시 where조건문을 사용해야함**
DELETE함.
- 질의 3-49 Customer 테이블에서 고객번호가 5인 고객을 삭제하시오.

DELETE  FROM  Customer
WHERE   custid=5;