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='대한미디어'));
- [실행 결과]![](https://velog.velcdn.com/images/dingcomiii/post/1cde7c7b-2342-4d84-b6ae-5ac4de0392dc/image.png)
<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);
UNION
MINUS
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 null
unique
default ~
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;