[데이터베이스 개론 3판] Chapter 7. SQL 실습문제 풀이



데이터 정의어 (DDL, Data Definition Language)
7-1. 고객 테이블은 고객아이디, 고객이름, 나이, 등급, 직업, 적립금 속성으로 구성되고, 고객 아이디 속성이 기본키다.
고객이름과 등급 속성은 값을 반드시 입력해야 하고, 적립금 속성은 값을 입력하지 않으면 0이 기본으로 되도록 생성해보자.
📌 code
CREATE TABLE 고객 ( 고객아이디 VARCHAR(20) NOT NULL, 고객이름 VARCHAR(10) NOT NULL, 나이 INT, 등급 VARCHAR(10) NOT NULL, 직업 VARCHAR(20), 적립금 INT DEFAULT 0, PRIMARY KEY(고객아이디) );
📌 result
7-2. 제품 테이블은 제품번호, 제품명, 재고량, 단가, 제조업체 속성으로 구성되고, 제품번호 속성이 기본키다.
재고량이 항상 0개 이상 10000개 이하를 유지하도록 생성해보자.
📌 code
CREATE TABLE 제품( 제품번호 CHAR(3) NOT NULL, 제품명 VARCHAR(20), 재고량 INT, 단가 INT, 제조업체 VARCHAR(20), PRIMARY KEY(제품번호), CHECK (재고량 >= 0 AND 재고량 <= 10000) );
📌 result
7-3. 주문 테이블은 주문번호, 주문 고객, 주문제품, 수량, 배송지, 주문 일자 속성으로 구성되고, 주문번호 속성이 기본키다. 주문고객 속성이 고객 테이블의 고객 아이디 속성을 참조하는 외래 키이고, 주문제품 속성이 제품 테이블의 제품번호 속성을 참조하는 외래키가 되도록 생성해보자.
📌 code
CREATE TABLE 주문( 주문번호 CHAR(3) NOT NULL, 주문고객 VARCHAR(20) NOT NULL, 주문제품 CHAR(3) NOT NULL, 수량 INT, 배송지 VARCHAR(20), 주문일자 DATE, PRIMARY KEY(주문번호), FOREIGN KEY(주문고객) REFERENCES 고객(고객아이디), FOREIGN KEY(주문제품) REFERENCES 제품(제품번호) );
📌 result
7-4. 배송업체 테이블은 업체번호, 업체명, 주소, 전화번호 속성으로 구성되고 업체번호 속성이 기본키다. 테이블을 생성해보자.
📌 code
CREATE TABLE 배송업체( 업체번호 CHAR(3) NOT NULL, 업체명 VARCHAR(20), 주소 VARCHAR(100), 전화번호 VARCHAR(20), PRIMARY KEY(업체번호) );
📌 result
7-5. [예제 7-1]에서 생성한 고객 테이블에 가입날짜 속성을 추가해보자.
📌 code
ALTER TABLE 고객 ADD 가입날짜 DATE;
📌 result
7-6. [예제 7-5]에서 추가한 고객 테이블의 가입날짜 속성을 삭제해보자.
📌 code
ALTER TABLE 고객 DROP COLUMN 가입날짜;
📌 result
7-7. 고객 테이블에 20세 이상의 고객만 가입할 수 있다는 데이터 무결성 제약조건을 추가해보자.
📌 code
ALTER TABLE 고객 ADD CONSTRAINT CHK_AGE CHECK(나이>=20);
7-8. [예제 7-7]에서 추가한 고객 테이블에 20세 이상의 고객만 가입할 수 있다는 데이터 무결성 제약조건을 삭제해보자.
📌 code
ALTER TABLE 고객 DROP CONSTRAINT CHK_AGE;
7-9. 배송업체 테이블을 삭제해보자.
📌 code
DROP TABLE 배송업체;
데이터 조작어 (DML, Data Manipulation Language)
📌 code - 데이터 삽입
#[고객 테이블에 투플 삽입]
INSERT INTO 고객 VALUES ('apple', '정소화', 20, 'gold', '학생', 1000);
INSERT INTO 고객 VALUES ('banana', '김선우', 25, 'vip', '간호사', 2500);
INSERT INTO 고객 VALUES ('carrot', '고명석', 28, 'gold', '교사', 4500);
INSERT INTO 고객 VALUES ('orange', '김용욱', 22, 'silver', '학생', 0);
INSERT INTO 고객 VALUES ('melon', '성원용', 35, 'gold', '회사원', 5000);
INSERT INTO 고객 VALUES ('peach', '오형준', NULL, 'silver', '의사', 300);
INSERT INTO 고객 VALUES ('pear', '채광주', 31, 'silver', '회사원', 500);
#고객아이디고객[제품 테이블에 투플 삽입]
INSERT INTO 제품 VALUES ('p01', '그냥만두', 5000, 4500, '대한식품');
INSERT INTO 제품 VALUES ('p02', '매운쫄면', 2500, 5500, '민국푸드');
INSERT INTO 제품 VALUES ('p03', '쿵떡파이', 3600, 2600, '한빛제과');
INSERT INTO 제품 VALUES ('p04', '맛난초콜릿', 1250, 2500, '한빛제과');
INSERT INTO 제품 VALUES ('p05', '얼큰라면', 2200, 1200, '대한식품');
INSERT INTO 제품 VALUES ('p06', '통통우동', 1000, 1550, '민국푸드');
INSERT INTO 제품 VALUES ('p07', '달콤비스킷', 1650, 1500, '한빛제과');
#[주문 테이블에 투플 삽입]
INSERT INTO 주문 VALUES ('o01', 'apple', 'p03', 10, '서울시 마포구', '22/01/01');
INSERT INTO 주문 VALUES ('o02', 'melon', 'p01', 5, '인천시 계양구', '22/01/10');
INSERT INTO 주문 VALUES ('o03', 'banana', 'p06', 45, '경기도 부천시', '22/01/11');
INSERT INTO 주문 VALUES ('o04', 'carrot', 'p02', 8, '부산시 금정구', '22/02/01');
INSERT INTO 주문 VALUES ('o05', 'melon', 'p06', 36, '경기도 용인시', '22/02/20');
INSERT INTO 주문 VALUES ('o06', 'banana', 'p01', 19, '충청북도 보은군', '22/03/02');
INSERT INTO 주문 VALUES ('o07', 'apple', 'p03', 22, '서울시 영등포구', '22/03/15');
INSERT INTO 주문 VALUES ('o08', 'pear', 'p02', 50, '강원도 춘천시', '22/04/10');
INSERT INTO 주문 VALUES ('o09', 'banana', 'p04', 15, '전라남도 목포시', '22/04/11');
INSERT INTO 주문 VALUES ('o10', 'carrot', 'p03', 20, '경기도 안양시', '22/05/22');
7-10. 고객 테이블에서 고객아이디, 고객이름, 등급 속성을 검색해보자.
📌 code
SELECT 고객아이디, 고객이름, 등급 FROM 고객;
📌 result
7-11. 고객 테이블에 존재하는 모든 속성을 검색해보자.
📌 code
SELECT 고객아이디, 고객이름, 나이, 등급, 직업, 적립금 FROM 고객;
📌 result
7-12. 고객 테이블에 존재하는 모든 속성을 검색해보자.
📌 code
SELECT * FROM 고객;
📌 result
7-13. 제품 테이블에서 제조업체를 검색해보자.
📌 code
SELECT 제조업체 FROM 제품;
📌 result
7-14. 제품 테이블에서 제조업체를 검색하되, ALL 키워드를 사용해보자.
📌 code
SELECT ALL 제조업체 FROM 제품;
📌 result
7-15. 제품 테이블에서 제조업체 속성을 중복 없이 검색해보자.
📌 code
SELECT DISTINCT 제조업체 FROM 제품;
📌 result
7-16. 제품 테이블에서 제품명과 단가를 검색하되, 단가를 가격이라는 새 이름으로 출력해보자.
📌 code
SELECT 제품명, 단가 AS 가격 FROM 제품;
📌 result
7-17. 제품 테이블에서 제품명과 단가 속성을 검색하되, 단가에 500원을 더해 '조정 단가'라는 새 이름으로 출력해보자.
📌 code
SELECT 제품명, 단가+500 AS "조정 단가" FROM 제품;
📌 result
7-18. 제품 테이블에서 한빛제과가 제조한 제품의 제품명, 재고량, 단가를 검색해보자.
📌 code
SELECT 제품명, 재고량, 단가 FROM 제품 WHERE 제조업체 = '한빛제과;
📌 result