DROP TABLE TRUCK;
DROP TABLE CARGO;
CREATE TABLE TRUCK
(TRUCKNO CHAR(5) NOT NULL,
TRUCKNAME VARCHAR2(20),
CAPACITY NUMBER,
AMOUNT NUMBER
);
INSERT INTO TRUCK VALUES ('98710','PORTER',100,10);
INSERT INTO TRUCK VALUES ('98711','BONGO',100,20);
INSERT INTO TRUCK VALUES ('98712','LAMO',100,30);
INSERT INTO TRUCK VALUES ('98713','DAMAS',80,50);
INSERT INTO TRUCK VALUES ('98714','MUSSO',200,20);
INSERT INTO TRUCK VALUES ('98715','YAMUSIN',300,100);
INSERT INTO TRUCK VALUES ('98716','CARNIVAL',150,50);
INSERT INTO TRUCK VALUES ('98717','REXTON',100,40);
INSERT INTO TRUCK VALUES ('98718','PORTER2',100,20);DJ
INSERT INTO TRUCK VALUES ('98719','BONGO2',100,null);
INSERT INTO TRUCK VALUES ('98720','PICA2',100,50);
INSERT INTO TRUCK VALUES ('98721','DAMAS2',80,70);
INSERT INTO TRUCK VALUES ('98722','MUSSOSPORTS',200,0);
INSERT INTO TRUCK VALUES ('98723','YAMUSIN 2000',300,100);
INSERT INTO TRUCK VALUES ('98724','CARNIVAL GRAND',150,100);
INSERT INTO TRUCK VALUES ('98725','REXTON 2011',100,0);
INSERT INTO TRUCK VALUES ('98726','BONGO TOP',100,null);
CREATE TABLE CARGO
(CARGONO CHAR(5) NOT NULL,
CARGOCATEGORY VARCHAR2(20),
CARGONAME VARCHAR2(20),
TRUCKNO CHAR(5),
COST NUMBER,
WEIGHT NUMBER,
DEPARTURE VARCHAR2(20),
ARRIVAL VARCHAR2(20),
WAREHOUSEDATE DATE,
DELIVERYDATE DATE
);
INSERT INTO CARGO VALUES
('10001','A-01','TV', '98710',10000,30,'seoul','pusan','2011-01-01','2011-01-04');
INSERT INTO CARGO VALUES
('10002','A-02','WASHER','98710',10000,30,'seoul','pusan','2010-01-01','2010-01-08');
INSERT INTO CARGO VALUES
('10003','A-03','TV', '98711',15000,40,'pusan','deagu','2011-03-01','2011-03-07');
INSERT INTO CARGO VALUES
('10004','A-04','CELLPHONE','98712',5100,20,'seoul','pusan','2011-02-11','2011-02-16');
INSERT INTO CARGO VALUES
('10005','A-05','CELLPHONE','98713',4000,10,'pusan','deagu','2011-03-01','2011-03-04');
INSERT INTO CARGO VALUES
('10006','B-01','WASHER','98710',18000,60,'seoul','pusan','2011-03-01','2011-03-03');
INSERT INTO CARGO VALUES
('10007','B-02','CELLPHONE','98711',6000,15,'pusan','deagu','2011-02-01','2011-02-04');
INSERT INTO CARGO VALUES
('10008','B-03','TV', '98711',12000,35,'seoul','pusan','2010-12-01','2010-12-02');
INSERT INTO CARGO VALUES
('10009','B-04','TV', '98710',15000,40,'seoul','daejeon','2011-03-01','');
INSERT INTO CARGO VALUES
('10010','B-05','TV', '98713',16000,50,'seoul','pusan','2011-03-01','2011-03-04');
INSERT INTO CARGO VALUES
('10011','C-01','TV', '98710',13000,28,'seoul','gwangju','2011-03-01','2011-03-05');
INSERT INTO CARGO VALUES
('10012','C-02','CELLPHONE','98711',5500,18,'pusan','deagu','2011-01-01','2011-01-06');
INSERT INTO CARGO VALUES
('10013','C-03','WASHER','98712',18000,49,'seoul','gwangju','2011-03-01','2011-03-09');
INSERT INTO CARGO VALUES
('10014','C-04','WASHER','98713',19000,38,'seoul','pusan','2011-03-01','2011-03-05');
INSERT INTO CARGO VALUES
('10015','C-05','TV', '98710',13000,32,'seoul','daejeon','2011-03-01','2011-03-03');
INSERT INTO CARGO VALUES
('10016','D-01','CELLPHONE','98710',5000,30,'seoul','pusan','2011-03-01','2011-03-02');
INSERT INTO CARGO VALUES
('10017','D-02','TV', '98711',10000,30,'seoul','pusan','2011-03-01','2011-03-04');
INSERT INTO CARGO VALUES
('10018','D-03','TV', '98712',12000,25,'seoul','deagu','2011-03-01','2011-03-08');
INSERT INTO CARGO VALUES
('10019','D-04','TV', '98710',6000,20,'pusan','deagu','2011-03-01','');
INSERT INTO CARGO VALUES
('10020','D-05','WASHER','98710',6000,20,'pusan','deagu','2011-02-01',null);
INSERT INTO CARGO VALUES
('10021','D-01','WASHER','98710',10000,30,'pusan','deagu','2011-02-01',null);
INSERT INTO CARGO VALUES
('10022','D-01','TV','98711',12000,40,'pusan','deagu','2011-01-01','2011-01-04');
INSERT INTO CARGO VALUES
('10023','D-01','TV', '98713',14000,28,'seoul','gwangju','2011-03-01','2011-03-05');
COMMIT;
-> TRUCKNO가 PRIMARY KEY, FOREIGN KEY로 연결되어 있음
#1
- 무게가 30이 넘는 트럭의 번호와 이름을 출력하라
SELECT DISTINCT T.TRUCKNO, TRUCKNAME
FROM CARGO C, TRUCK T
WHERE C.TRUCKNO = T.TRUCKNO(+) AND WEIGHT >= 30;
- 부산에 도착하는 트럭 중 비용이 트럭종류별 높은 가격과 번호를 출력하라.
SELECT T.TRUCKNAME, T.TRUCKNO, MAX(COST)
FROM TRUCK T, CARGO C
WHERE T.TRUCKNO = C.TRUCKNO AND C.ARRIVAL = 'PUSAN' GROUP BY T.TRUCKNAME, T.TRUCKNO;
SELECT TRUCKNAME, TRUCKNO, MAX(COST)
FROM TRUCK JOIN CARGO USING(TRUCKNO)
WHERE CARGO.ARRIVAL = 'PUSAN'
GROUP BY TRUCKNAME, TRUCKNO;
- 트럭 별 배송시간을 트럭의 번호로 출력
SELECT T.TRUCKNO, C.DELIVERYDATE -C.WAREHOUSEDATE||'일' AS "DAYS"
FROM TRUCK T, CARGO C
WHERE T.TRUCKNO = C.TRUCKNO;
SELECT TRUCKNO,
DELIVERYDATE - WAREHOUSEDATE||'일' AS "DAYS"
FROM TRUCK JOIN CARGO
USING(TRUCKNO);
- 무게가 40이상 50이하의 트럭 이름을 알려주세요
SELECT DISTINCT T.TRUCKNAME, C.WEIGHT FROM TRUCK T JOIN CARGO C
ON (WEIGHT BETWEEN 40 AND 50) WHERE T.TRUCKNO = C.TRUCKNO;
SELECT T.TRUCKNAME FROM TRUCK T, CARGO C WHERE T.TRUCKNO = BETWEEN WEIGHT 40 AND 50;
- 도착일이() 11/03/01 이전에 도착하는 트럭의 트럭번호(TRUCKNO)와 도착일(DEPARTURE), 트럭이름(TRUCKNAME)을 표시
SELECT T.TRUCKNO, C.DEPARTURE, T.TRUCKNAME
FROM TRUCK T, CARGO C
WHERE T.TRUCKNO = C.TRUCKNO AND (C.DEPARTURE < 11/03/01);
#2
MTest.exerd (TB_ 로 시작하는 테이블 불러오는 EXERD)
관계 차수
부모 테이블 : EXACTLY_ONE 등
자식 테이블 : ZERO_OR_MORE 등
바꾸면 그림에서 TREE 수가 달라짐
#3
과목 테이블은 학부 테이블에 1:N 관계
교수 테이블도 학부 테이블에 1:N 관계
학생 테이블과 과목 테이블 사이에는 성적관계 테이블이 존재 M:N 관계
학생 테이블과 교수 테이블은 1:N 관계
#4
(부모 테이블의 PK가 자식 테이블의 PK로 상속된다) 부모 PK = 자식 PK, FK
식별 = 실선 = 부모가 있어야 자식이 있는 경우
식별 : Primary Key가 식별키를 참조 식별키로 인식한다. (실선)
(부모 테이블의 PK가 자식 테이블의 PK로 상속되지 않는다) 부모 PK = 자식 FK
비식별 = 점선 = 부모가 없어도 자식이 있는 경우
비식별 : Primary Key가 비식별키를 참조 (점선)
#5
- 주 키를 갖지 않는 엔티티 집합을 약 엔티티 집합이라 한다.
- 강 엔티티 집합이 있어야만 약 엔티티 집합이 존재한다. 약 엔티티 집합은 일대다 관계를 통해 강 엔티티 집합에 연결해야 한다.
- 약 엔티티 집합의 구별자(또는 부분 키)는 약 엔티티 집합 내의 엔티티들을 구분하는 어트리뷰트의 집합이다.
- 약 엔티티 집합의 주 키는 약 엔티티
세분화
- 하향식 설계 절차 : 집합 내의 서로 다른 엔티티와 구분되는 엔티티 집합 내의 서브 그룹핑으로 지정
- 이들 서브 그룹핑은 하위 계좌
'국비교육' 카테고리의 다른 글
1월 25일 국비교육 (0) | 2019.01.25 |
---|---|
1월 24일 국비교육 (0) | 2019.01.24 |
외우기 (0) | 2019.01.22 |
1월 22일 국비교육 (0) | 2019.01.22 |
1월 21일 국비교육 (0) | 2019.01.21 |
댓글