★연습문제1
1-1. 표의 논리적 스키마를 참고하여 상품관리 테이블을 생성하시오.
칼럼명 | 영문명 | 데이터형 | 크기 | NN | 키 | 참조테이블 |
상품코드 | Product_Code | 문자형 | 10 | NN | PK | |
상품명 | Product_Name | 문자형 | 20 | NN | ||
규격 | Standard | 문자형 | 20 | |||
단위 | Unit | 문자형 | 10 | |||
단가 | Unit_Price | 숫자형 | 7 | NN | ||
재고수량 | Left_Qty | 숫자형 | 5 | NN | ||
생산처 | Company | 문자형 | 20 | |||
상품이미지명 | ImageName | 문자형 | 20 | |||
상품정보 | Info | 문잦형 | 50 | |||
상세소개 | Detail_Info | 문자형 | 255 |
CREATE TABLE EC_Product ( Product_Code VARCHAR2(10), Product_Name VARCHAR2(20) NOT NULL, Standard VARCHAR2(20), Unit VARCHAR2(10), Unit_Price NUMBER(7) NOT NULL, Left_Qty NUMBER(5) NOT NULL, Company VARCHAR2(20), ImageName VARCHAR2(20), Info VARCHAR2(50), Detail_Info VARCHAR2(255), CONSTRAINT EC_Product_pk PRIMARY KEY(Product_Code));
1-2. 표의 논리적 스키마를 참고하여 회원관리 테이블을 생성하시오.
칼럼명 | 영문명 | 데이터형 | 크기 | NN | 키 | 참조테이블 |
회원 ID | UserID | 문자형 | 10 | NN | PK | |
회원비밀번호 | Passwd | 문자형 | 10 | NN | ||
회원명 | Name | 문자형 | 10 | NN | ||
주민등록번호 | Regist_No | 문자형 | 14 | NN | UK | |
eMail 주소 | 문자형 | 20 | ||||
전화번호 | Telephone | 문자형 | 13 | NN | ||
주소 | Address | 문자형 | 40 | |||
구매실적 | Buycash | 숫자형 | 9 | 기본값 0 | ||
가입일자 | Timestamp | 날짜형 | 기본값 SYSDATE |
CREATE TABLE EC_Member ( UserID VARCHAR(10), Passwd VARCHAR(10) NOT NULL, Name VARCHAR(10) NOT NULL, Regist_No VARCHAR(14) CONSTRAINT EC_Member_uk UNIQUE NOT NULL, Email VARCHAR(20), Telephone VARCHAR(13) NOT NULL, Address VARCHAR(40), Buycash NUMBER(9) DEFAULT 0, Timestamp DATE DEFAULT SYSDATE, CONSTRAINT EC_Member_pk PRIMARY KEY(UserID));
1-3. 표의 논리적 스키마를 참고하여 장바구니 테이블을 생성하시오.
칼럼명 | 영문명 | 데이터형 | 크기 | NN | 키 | 참조테이블 |
주문번호 | Order_No | 문자형 | 10 | NN | PK | |
주문자 ID | Order_ID | 문자형 | 10 | NN | FK1 | 회원관리 |
상품코드 | Product_Code | 문자형 | 10 | NN | FK2 | 상품관리 |
주문수량 | Order_Qty | 숫자형 | 3 | NN | ||
주문일자 | Order_Date | 날짜형 | 기본값 SYSDATE |
CREATE TABLE EC_Basket( Order_No VARCHAR(10), Order_ID VARCHAR(10) NOT NULL, Product_Code VARCHAR(10) NOT NULL, Order_Qty NUMBER(3) NOT NULL, Order_Date DATE DEFAULT SYSDATE, CONSTRAINT EC_Basket_pk PRIMARY KEY(Order_No), CONSTRAINT EC_Basket_fk1 FOREIGN KEY(Order_ID) REFERENCES EC_Member(UserId), CONSTRAINT EC_Basket_fk2 FOREIGN KEY(Product_Code) REFERENCES EC_Product(Product_Code));
1-4. 표의 논리적 스키마를 참고하여 주문처리 테이블을 생성하시오.
칼럼명 | 영문명 | 데이터형 | 크기 | NN | 키 | 참조테이블 |
주문번호 | Order_No | 문자형 | 10 | NN | PK | |
주문자ID | Order_ID | 문자형 | 10 | NN | ||
상품코드 | Product_Code | 문자형 | 10 | NN | ||
주문수량 | Order_Qty | 숫자형 | 3 | NN | ||
결제방법 | Csel | 문자형 | 10 | |||
결제금액 | CMoney | 숫자형 | 9 | |||
결제일자 | Cdate | 날짜형 | ||||
배달일자 | Mdate | 날짜형 | ||||
구분 | Gubun | 문자형 | 10 |
CREATE TABLE EC_Order( Order_No VARCHAR2(10), Order_ID VARCHAR2(10) NOT NULL, Product_Code VARCHAR2(10) NOT NULL, Order_Qty NUMBER(3) NOT NULL, Csel VARCHAR2(10), Cmoney NUMBER(9), Cdate DATE, Mdate DATE, Gubun VARCHAR2(10), CONSTRAINT EC_Order_pk PRIMARY KEY(Order_No));
2. 사용자가 생성한 테이블명을 모두 출력하시오.
SELECT * FROM TAB;
3. 장바구니(EC_Basket) 테이블의 구조를 출력하시오
DESC EC_Basket
4. 상품관리(EC_Product) 테이블의 상세소개(Detail_info) 칼럼을 삭제하시오.
ALTER TABLE EC_Product DROP COLUMN Detail_info;
5. 상품관리(EC_Product) 테이블의 상품정보(Info) 칼럼을 40자로 줄이시오.
ALTER TABLE EC_Product MODIFY(INFO VARCHAR2(40));
6. 주문처리(EC_Order) 테이블의 구분(Gubun) 칼럼을 20자로 늘리시오.
ALTER TABLE EC_Order MODIFY(Gubun VARCHAR2(20));
7. 주문처리(EC_Order) 테이블의 상품코드(Product_Code) 칼럼을 상품관리(EC_Product 테이블을 참조하여 외부 키를 추가하시오.
ALTER TABLE EC_Order ADD CONSTRAINT EC_Order_fk FOREIGN KEY(Product_Code) REFERENCES EC_Product(Product_Code);
8. 주문처리(EC_Order) 테이블에 지정된 제약조건을 출력하시오.
SELECT CONSTRAINT_NAME,CONSTRAINT_TYPE,SEARCH_CONDITION FROM USER_CONSTRAINTS WHERE TABLE_NAME ='EC_ORDER';
9. 주문처리(EC_Order) 테이블에 지정한 제약조건명, 칼럼명, 복합칼럼(POSITION) 유무를 출력하시오.
SELECT CONSTRAINT_NAME,COLUMN_NAME,POSITION FROM USER_CONS_COLUMNS WHERE TABLE_NAME ='EC_ORDER';
★연습문제2
1. 표의 논리적 스키마를 참고하여 자유게시판(Board) 테이블을 생성하시오.
칼럼명 | 영문명 | 데이터형 | 크기 | NN | 키 |
게시물 번호 | B_Id | 숫자형 | 5 | NN | PK |
등록자 | B_Name | 문자형 | 20 | NN | |
비밀번호 | B_Pwd | 문자형 | 20 | NN | |
이메일 주소 | B_Email | 문자형 | 20 | NN | |
제목 | B_Title | 문자형 | 80 | NN | |
내용 | B_Content | 문자형 | 2000 | NN | |
등록일자 | B_Date | 날짜형 | 기본값 SYSDATE | ||
조회수 | B_Hit | 숫자형 | 5 | 기본값 0 | |
IP 주소 | B_Ip | 문자형 | 15 |
CREATE TABLE Board( B_Id NUMBER(5), B_Name VARCHAR2(20) NOT NULL, B_Pwd VARCHAR2(20) NOT NULL, B_Email VARCHAR2(20) NOT NULL, B_Title VARCHAR2(80) NOT NULL, B_Content VARCHAR2(2000) NOT NULL, B_Date DATE DEFAULT SYSDATE, B_Hit NUMBER(5) DEFAULT 0, B_IP VARCHAR2(15), CONSTRAINT Board_pk PRIMARY KEY(B_Id));
2. 표를 참고하여 답변형 게시판에 필요한 칼럼을 Board 테이블에 추가하시오.
칼럼명 | 영문명 | 데이터형 | 크기 | NN | 키 |
동일 게시물 참조번호 | B_Ref | 숫자형 | 5 | 기본값 0 | |
동일 게시물 단계번호 | B_Step | 숫자형 | 5 | 기본값 0 | |
동일 게시물 위치번호 | B_Order | 숫자형 | 5 | 기본값 0 |
ALTER TABLE Board ADD(B_Ref NUMBER(5) DEFAULT 0, B_Step NUMBER(5) DEFAULT 0, B_Order NUMBER(5) DEFAULT 0);
3. Board 테이블의 제목(B_Title) 칼럼 길이를 100자로 늘리시오
ALTER TABLE Board MODIFY(B_TiTLE VARCHAR2(100));
4. Board 테이블의 비밀번호(B_Pwd) 칼럼을 NULL로 수정하시오.
ALTER TABLE Board MODIFY(B_Pwd VARCHAR2(20) NULL);
5. Board 테이블의 IP 주소(b_ip) 칼럼을 삭제하시오
ALTER TABLE Board DROP COLUMN B_Ip;
6. Board 테이블의 구조를 확인하시오
DESC Board
7. 회원관리(EC_Member) 테이블의 회원 ID(UserID) 칼럼에 영소문자(a부터 z까지)로 제한하시오. 체크 제한조건이 동작하는지 다음 INSERT문을 실행해 보시오.
INSERT INTO EC_Member (UserID, Passwd, Name, Regist_No, Telephone) VALUES ('srlee','1234','이소라','821001-2******','010-1234-1234'); |
INSERT INTO EC_Member (UserID, Passwd, Name, Regist_No, Telephone) VALUES ('20park','1234','박연수','810604-1******','010-2345-2345'); |
ALTER TABLE EC_MEMBER ADD(CONSTRAINT Member_CK CHECK(UserID BETWEEN 'a' AND 'z')); INSERT INTO EC_Member(UserId,Passwd,Name,Regist_No,Telephone) VALUES('srlee','1234','이소라','821001-2******','010-1234-1234'); INSERT INTO EC_Member(UserId,Passwd,Name,Regist_No,Telephone) VALUES('20park','1234','박연수','810604-1******','010-2345-2345');
8. Board 테이블의 동일게시물번호(B_Step) 칼럼명을 "B_Level"로 변경하시오
ALTER TABLE Board RENAME COLUMN B_Step TO B_Level;
9. 주문처리(EC_Order) 테이블의 기본 키를 삭제하시오
ALTER TABLE EC_Order DROP PRIMARY KEY;
10. Board 테이블의 B_Email 칼럼에 유일성(unique) 제약조건을 추가하시오.
ALTER TABLE Board MODIFY(B_Email VARCHAR2(20) CONSTRAINT BOARD_uk UNIQUE);
11. Board 테이블을 Free_Board 테이블명으로 변경하시오.
RENAME Board TO FREE_Board;
12. 장바구니(EC_Basket) 테이블을 삭제하시오.
DROP TABLE EC_Basket;
13. 휴지통의 임시 테이블들을 삭제하시오.
PURGE RECYCLEBIN;
'오라클 SQL' 카테고리의 다른 글
오라클 11g와 함께하는 SQL과 PL/SQL 10장 연습문제 정답 정리 (0) | 2023.06.21 |
---|---|
오라클 11g와 함께하는 SQL과 PL/SQL 9장 연습문제 정답 정리 (0) | 2023.06.06 |
오라클 11g와 함께하는 SQL과 PL/SQL 8장 연습문제 정답 정리 (0) | 2023.05.30 |
오라클 11g와 함께하는 SQL과 PL/SQL 7장 연습문제 정답 정리 (0) | 2023.05.25 |
오라클 11g와 함께하는 SQL과 PL/SQL 6장 연습문제 정답 정리 (0) | 2023.05.24 |