★연습문제1

1. 상품관리(EC_Product) 테이블에서 단가(Unit_price)가 평균 단가보다 높은 상품에 대하여 [상품코드, 상품명, 단가]를 출력하시오.

더보기
SELECT PRODUCT_CODE, PRODUCT_NAME, UNIT_PRICE
FROM   EC_Product
WHERE  UNIT_PRICE > (SELECT AVG(UNIT_PRICE)
                     FROM   EC_Product);

2. 주문처리(EC_Order) 테이블로부터 입금액이 제일 많은 [주문자ID, 상품코드, 주문수량, 결제방법, 입금액]을 출력하시오.

더보기
SELECT ORDER_ID, PRODUCT_CODE, ORDER_QTY,CSEL,CMONEY
  FROM EC_Order
 WHERE CMONEY = (SELECT MAX(CMONEY)
                   FROM EC_Order);

3. 주문처리(EC_Order) 테이블에서 결제종류별 입금한 금액이 제일 많은 행에 대하여 [결제종류, 주문자ID, 입금액, 입금일자]를 입금액순으로 출력하시오.

더보기
SELECT CSEL "결제종류",ORDER_ID, CMONEY "입급액", CDATE "입급일자"
FROM   EC_Order
WHERE  CMONEY IN (SELECT MAX(CMONEY)
                   FROM EC_Order
                   GROUP BY CSEL);

4. 주문처리(EC_Order)테이블에서 한 번 이상 거래한 회원의 [회원 ID, 회원명, 주민등록번호, 전화번호]를 회원명순으로 출력하시오. 

더보기
SELECT USERID, NAME,REGIST_NO,TELEPHONE
FROM   EC_Member M
WHERE  EXISTS (SELECT *
                   FROM   EC_Order O
                   WHERE  M.USERID= O.ORDER_ID)
ORDER BY 2;

5. 회원관리(EC_Member) 테이블과 주문처리(EC_Order) 테이블을 이용하여 한 번도 거래하지 않은 회원의 [회원ID, 회원명, 주민등록번호, 전화번호]를 회원명순으로 출력하시오.

더보기
SELECT USERID, NAME,REGIST_NO,TELEPHONE
FROM   EC_Member M
WHERE  NOT EXISTS (SELECT *
                   FROM   EC_Order O
                   WHERE  M.USERID= O.ORDER_ID)
ORDER BY 2;

6. 장바구니(EC_Basket) 테이블의 [주민번호, 주문자 ID, 상품코드, 주문수량, 주문일자]를 출력하여 확인한 모든 행을 주문처리(EC_Order) 테이블에 저장하고, 장바구니(EC_Basket) 테이블의 모든 행을 영구히 삭제하시오.

더보기
SELECT ORDER_NO, ORDER_ID, PRODUCT_CODE, ORDER_QTY, ORDER_DATE
FROM  EC_BASKET;

INSERT INTO EC_Order(ORDER_NO,ORDER_ID,PRODUCT_CODE,ORDER_QTY,CDATE)
SELECT*
FROM  EC_BASKET;

SELECT ORDER_NO, ORDER_ID, PRODUCT_CODE,ORDER_QTY, CMONEY
FROM   EC_Order
WHERE  CMONEY IS NULL;

DELETE FROM EC_Basket;

commit;

7. 주문처리(EC_Order) 테이블의 결제금액(cmoney)이 널인 행에 대하여 주문 수량(Order_Qty)과 상품관리(EC_Product) 테이블의 단가(Unit_Price)를 이용하여 주문처리(EC_Order) 테이블의 주문금액(주문수량 x 단가)을 계산하여 저장하고, 구분(Gubun) 칼럼에 '미결'로 수정하시오. (서브 쿼리를 사용한 UPDATE문)

더보기
UPDATE EC_Order O
SET    CMONEY =ORDER_QTY*(SELECT UNIT_PRICE
                          FROM   EC_Product P
                          WHERE  O.PRODUCT_CODE=P.PRODUCT_CODE)
       ,Gubun='미결'
WHERE  CMONEY IS NULL;

select ORDER_NO, PRODUCT_CODE, ORDER_QTY, CMONEY, GUBUN
from   EC_Order
WHERE  Gubun='미결';

commit;

8. 상품관리 테이블(EC_Product)에서 단가가 높은 상위 상품 TOP-5에 대하여 [순위, 상품코드, 상품명, 단가, 생산처]를 출력하시오. (인라인 뷰)

더보기
SELECT ROWNUM "순위", a.*
FROM (SELECT Product_CODE, Product_Name, UNIT_PRICE,COMPANY
      FROM   EC_Product
      ORDER  BY 3 DESC)a
WHERE ROWNUM<=5;

9. 상품관리 테이블(EC_Product)에서 단가가 높은 상위 상품 11위부터 15위까지 [num, 상품코드, 상품명, 단가, 생산처]를 출력하시오. (인라인 뷰)

더보기
SELECT*
FROM (SELECT ROWNUM num, a.*
      FROM (SELECT Product_CODE, Product_Name, UNIT_PRICE,COMPANY
            FROM   EC_Product
            ORDER  BY 3 DESC)a
            )
WHERE num BETWEEN 11 AND 15;

10. 주문처리(EC_Order) 테이블과 동일한 Empty_Order 빈 테이블을 생성하고, Empty_Order 테이블의 구조를 확인하시오.

더보기
CREATE TABLE Empty_Order
AS
       SELECT *
       FROM   EC_Order
       WHERE  1=2;
       
DESC Empty_Order

★연습문제2

1. 주문처리(EC_Order) 테이블로부터 'jupark'가 주문한 상품과 동일한 상품의 구매지수를 출력하시오. (스칼라 서브 쿼리 이용)

더보기
SELECT Order_ID, Product_Code, (SELECT COUNT(*)
                                FROM EC_Order A
                                WHERE A.Product_code=B.Product_code
                                ) "동일상품_구매자수"
FROM   EC_Order B                                
WHERE  Order_ID = 'jupark';

2. 주문처리(EC_Order) 테이블에서 구분(Gubun) 칼럼이 '배달' 또는 '결제' 행에 대하여 2018년 1월 1일부터 2018년 7월 30일까지 주문자ID별 결젲 합계 금액을 회원관리(EC_Member) 테이블의 구매실적(BuyCash)칼럼에 합하여 저장하시오.

더보기
UPDATE EC_Member M
SET    BuyCash = BuyCash +
                 (SELECT SUM(CMoney)
                  FROM EC_Order O
                  WHERE O.Order_ID= M.UserID
                  AND CDate BETWEEN '2018/01/01' AND '2018/07/30'
                  AND Gubun IN ('배달', '결제'));

SELECT UserID, Name, TO_CHAR(BuyCash, 'L99,999,999')
FROM   EC_Member
WHERE  Buycash IS NOT NULL;

3. 주문처리(EC_Order) 테이블과 상품관리(EC_Product) 테이블, 회원관리(EC_Member) 테이블을 이용하여 결제합계금액(Cmoney)이 가장 많은 금액중 상위 5명에 대한 (회원명, 결제합계금액)을 출력하시오. (인라인 뷰 이용)

더보기
SELECT ROWNUM "순위", a.*
FROM  (SELECT Name "회원명", SUM(CMoney) "결제합계금액"
       FROM EC_Order O INNER JOIN EC_Member M ON O.Order_ID= M.UserID
       GROUP BY Name
       ORDER BY 2 DESC ) a
WHERE  ROWNUM <= 5;

4. 주문처리(EC_Order) 테이블과 상품관리(EC_Product) 테이블을 이용하여 최근에 주문 결제한 상위자 5명에 대하여 (순위, 상품코드, 상품명, 주문수량, 결제방법, 결제금액, 결제일자)을 출력하시오. (인라인 뷰 이용)

더보기
SELECT ROWNUM "순위", a.*
FROM  (SELECT Product_Code, Product_Name, Order_QTY, Csel, CMoney, CDate
       FROM EC_Order INNER JOIN EC_Product USING (Product_Code)
       WHERE CMoney IS NOT NULL AND CDate IS NOT NULL
       ORDER BY CDate DESC ) a
WHERE  ROWNUM <= 5;

5. 과목임시(T_Course) 테이블에서 추가수강료(Course_fees)의 평균값을 계산하여 출력하고, 추가 수강료가 평균 수강료보다 높은 과목을 출력하시오.

더보기
SELECT AVG(Course_Fees) FROM T_Course;

SELECT *
FROM Course
WHERE Course_Fees >= (SELECT AVG(Course_Fees) FROM Course)
ORDER BY 1;

6. 과목임시(T_Course) 테이블에서 과목코드가 'L1'로 시작하는 과목중에서 추가 수강료가 가장 낮은 금액보다 많은 과목을 추가수강료 역순으로 출력하시오.

더보기
SELECT *
FROM  T_Course
WHERE Course_ID LIKE 'L1%'
AND   Course_fees > ANY (SELECT Course_fees
                       FROM T_Course)
ORDER BY Course_Fees Desc;

7. 수강임시(T_SG_Scores) 테이블에서 성적취득일자가 2018년 6월에 과목코드 별 최고점을 받은 과목의 [과목코드, 학번, 성적, 성적취득일자]를 과목코드 순으로 출력하시오.

더보기
SELECT Course_ID, Student_ID, Score, Score_Assigned
FROM   T_SG_Scores
WHERE (Course_ID, Score) IN (SELECT Course_ID, MAX(Score)
                             FROM T_SG_Scores
                             WHERE TO_CHAR(Score_Assigned, 'YY/MM') = '18/06'
                             GROUP BY Course_ID)
ORDER BY Course_ID;

8. 과목임시(T_Course) 테이블과 수강임시(T_SG_Scores) 테이블을 이용하여 한 명 시아 수강한 과목을 [과목코드, 과목명, 학점수, 담당교수번호, 추가수강료]를 과목코드순으로 출력하시오.

더보기
SELECT *
FROM T_Course C
WHERE EXISTS (SELECT *
              FROM T_SG_Scores SG
              WHERE SG.Course_ID = C. Course_ID);

9. 과목임시(T_Course) 테이블과 수강임시(T_SG_Scores) 테이블을 이용하여 한번도 수강하지 않은 과목을 [과목코드, 과목명, 학점수, 담당교수번호, 추가수강료]를 과목코드순으로 출력하시오.

더보기
SELECT *
FROM   T_Course C
WHERE NOT EXISTS(SELECT *
                 FROM T_SG_Scores SG
                 WHERE SG.Course_ID = C.Course_ID)
ORDER BY 1;

10. 수강(SG_Scores) 테이블을 이용하여 2018학년도에 성적을 취득한 행들을 저장하는 2018학년도 성적(SG_Score_2018) 테이블을 동일한 구조로 생성하고, 저장된 행들을 학번, 과목코드순으로 출력하시오.

더보기
CREATE TABLE SG_Score_2018
AS
   SELECT *
   FROM   SG_Scores
   WHERE  TO_CHAR(Score_Assigned, 'YY') = '18'
     AND  Score IS NOT NULL;

SELECT Student_ID, Course_ID, Score, Grade, Score_Assigned
FROM   SG_Score_2018
ORDER  BY 1, 2;

11. 과목(Course) 테이블에서 추가 수강료가 널인 행을 수강임시(T_Course) 테이블로 복사하시오.

더보기
INSERT INTO T_Course
SELECT *
FROM Course
WHERE Course_Fees IS NULL;

12. 수강(SG_Scores) 테이블과 학생(Student) 테이블을 이용하여 '컴공' 학과의 평균 성적 상위자 3명을 출력하되, 취득과목수가 최소한 3과목 이상인 학생의 (순위, 학과코드 ,학번, 서ㅕㅇ명, 취득과목수, 평균점수)를 출력하시오. 단 평균은 소숫점 2자리까지 반올림하여 출력함.

더보기
SELECT ROWNUM "순위", a.*
FROM (SELECT Dept_ID, student_ID, Name, COUNT(Course_ID), ROUND(AVG(Score),2) "평균"
      FROM SG_Scores INNER JOIN Student USING (Student_ID)
      GROUP BY dept_ID, Student_ID, Name
      HAVING COUNT(Course_ID) > 3
      ORDER BY 5 DESC )a
WHERE ROWNUM <= 3;

13. 수강(SG_Scores) 테이블로부터 과목별 등급 인원수를 피벗 테이블을 이용하여 출력하시오. 등급은 'A','A ','B+','B ','C+','C ',,'D+','D ','F '로 구분함

더보기
SELECT *
FROM (SELECT Title, Grade
      FROM SG_Scores INNER JOIN Course USING (Course_ID) )
PIVOT (
       COUNT(*)
       FOR grade IN ('A+', 'A', 'B+', 'B', 'C+', 'C', 'D+', 'D', 'F ')
       )
ORDER BY 1;

 

*아래 연습문제는 연습문제를 위한 견본데이터베이스가 있어야 실행 가능

 

★연습문제1

1. 주문처리(EC_Order) 테이블과 상품관리(EC_Product) 테이블을 이용하여, 'jupark' 회원이 결제한 [주문자 ID, 상품코드, 상품명, 주문 수량, 주문 금액]을 주문자 ID순으로 출력하시오. (등가조인과 내부조인 방법)

①등가조인

더보기
SELECT ORDER_ID,P.PRODUCT_CODE, PRODUCT_NAME,ORDER_QTY,CMONEY "주문금액"
FROM   EC_Order P, EC_Product S
WHERE  P.PRODUCT_CODE=S.PRODUCT_CODE
  AND  ORDER_ID='jupark'
ORDER  BY 1;

②내부조인(INNER JOIN~USING 또는 INNER JOIN~ON 키워드)

더보기
SELECT ORDER_ID,PRODUCT_CODE, PRODUCT_NAME,ORDER_QTY,CMONEY "주문금액"
FROM   EC_Order INNER JOIN EC_Product USING(PRODUCT_CODE)
WHERE  ORDER_ID='jupark'
ORDER  BY 1;

2. 주문처리(EC_Order) 테이블과 회원관리(EC_Member) 테이블, 상품관리(EC_Product) 테이블을 이용하여 결제한 [회원명, 전화번호, 주소, 배달상품, 배달수량]을 회원명순으로 출력하시오. (등가조인과 내부조인 방법)

①등가조인

더보기
COLUMN 배달상품 FORMAT A14
SELECT NAME, TELEPHONE, ADDRESS, PRODUCT_NAME "배달상품", ORDER_QTY "수량"
FROM   EC_Order P, EC_Member S, EC_Product Y
WHERE  P.ORDER_ID=S.USERID
  AND  P.PRODUCT_CODE=Y.PRODUCT_CODE
  AND  GUBUN ='결제'
ORDER  BY 1;

②내부조인(INNER JOIN~USING 또는 INNER JOIN~ON 키워드)

 

더보기
SELECT NAME, TELEPHONE, ADDRESS, PRODUCT_NAME "배달상품", ORDER_QTY "수량"
FROM   EC_Order P INNER JOIN EC_Member S
                    ON(P.ORDER_ID=S.USERID)
                  INNER JOIN EC_Product Y
                    ON(P.PRODUCT_CODE=Y.PRODUCT_CODE)
WHERE  GUBUN ='결제'
ORDER  BY 1;

3. 상품관리(EC_Product) 테이블과 주문처리(EC_Order) 테이블을 이용하여, 모든 상품을 출력하되 주문 상품의 주문금액(주문 수량 x 단가)을 계산하여 [상품명, 주문 수량, 단가, 주문자 ID, 주문금액]을 주문자ID순으로 2가지 방법에 의하여 출력하시오.

① WHERE절을 이용한 좌 외부조인

더보기
SELECT PRODUCT_NAME "주문상품",ORDER_QTY "수량",
       TO_CHAR(UNIT_PRICE,'L99,999,999') "단가",
       ORDER_ID, 
       TO_CHAR(ORDER_QTY*UNIT_PRICE,'L99,999,999') "주문금액"
FROM   EC_PRODUCT P, EC_ORDER C
WHERE  P.Product_CODE=C.PRODUCT_CODE(+)
ORDER  BY 4;

② LEFT OUTER JOIN 키워드를 이용한 방법

 

더보기
SELECT PRODUCT_NAME "주문상품",ORDER_QTY "수량",
       TO_CHAR(UNIT_PRICE,'L99,999,999') "단가",
       ORDER_ID, 
       TO_CHAR(ORDER_QTY*UNIT_PRICE,'L99,999,999') "주문금액"
FROM   EC_Product LEFT OUTER JOIN EC_Order USING(Product_CODE)
ORDER  BY 4;

4. 상품관리(EC_Product) 테이블과 주문처리(EC_Order) 테이블을 이용하여 한 번도 판매되지 않은 상품의 목록 [상품코드, 상품명, 단가, 재고수량]을 상품코드순으로 출력하시오. (외부조인 응용)

더보기
SELECT PRODUCT_CODE,PRODUCT_NAME,UNIT_PRICE,LEFT_QTY
FROM   EC_Product
WHERE  PRODUCT_CODE NOT IN (SELECT PRODUCT_CODE
                            FROM   EC_Order)
ORDER BY 1;

5. 회원관리(EC_Member) 테이블과 주문처리(EC_Order) 테이블을 참고하여 한 번 도 거래하지 않은 회원의 [회원ID, 회원명, 가입일자]을 출력하시오.

더보기
SELECT USERID, NAME, TIMESTAMP
FROM EC_Member
WHERE  USERID NOT IN (SELECT ORDER_ID
                            FROM   EC_Order)
ORDER BY 1;

★연습문제2

1. 회원(EC_Member) 테이블과 주문처리(EC_Order) 테이블을 이용하여 한번 이상 거래한 회원의 [회원명, 주민등록번호, 상품명, 주문수량, 주문금액]을 회원명순으로 출력하시오. (내부조인)

더보기
SELECT Name, Regist_No, O.Product_Code, Order_Qty, Cmoney
FROM EC_Member M INNER JOIN EC_Order O ON (M.UserID = O.Order_ID) 
ORDER BY 1;

2. 회원관리(EC_Member) 테이블과 주문처리(EC_Order) 테이블을 이용하여 한번도 주문하지 않은 회원의 [회원명, 주민등록번호, 전화번호]를 출력하시오.

더보기
SELECT Name, Regist_No, Telephone
FROM EC_Member M LEFT OUTER JOIN EC_Order O ON (M.UserID = O.Order_ID) 
WHERE O.Order_ID is NULL
ORDER BY 1;

3. 주문처리(EC_Order) 테이블, 회원관리(EC_Member) 테이블, 상품관리(EC_Product) 테이블을 이용하여 거주지가 '서울'인 회원 중에서 한번 이상 주문한 회원의 [회원명, 주민번호, 상품명, 주문수량, 단가, 거주지]를 회원명순으로 출력하시오. (내부 조인)

더보기
SELECT Name, Regist_No, Product_Name, Order_Qty, Unit_Price, SUBSTR(Address, 1,2) "거주지"
FROM EC_Member M INNER JOIN EC_Order O ON (M.UserID=O.Order_ID)
                 INNER JOIN EC_Product P ON (O.Product_Code =
P.Product_Code)
WHERE Address LIKE '서울%'
ORDER BY 1;

4. 수강임시(T_SG_Scores) 테이블, 과목임시(T_Course) 테이블, 학생(Student) 테이블을 이용하여 'C1801' 학번의 수강신청 과목을 출력하시오. (등가조인)

더보기
SELECT Dept_ID, Year, TS.Student_ID, Name, TS. Course_ID, Title, C_Number
FROM   T_SG_Scores TS, Student S, T_Course TC
WHERE  TS.Student_ID = S.Student_ID
  AND  TS.Course_ID = TC. Course_ID
  AND  TS. Student_ID = 'C1801'
ORDER  BY 5;

5. 수강임시(T_SG_Scores) 테이블, 과목임시(T_Course) 테이블, 학생(Student) 테이블을 이용하여 'C1801' 학번의 성적을 내부조인(inner join) 방식으로 출력하시오.

더보기
SELECT Dept_ID, Year, Student_ID, Name, Course_ID, Title, C_Number, Grade
FROM T_SG_Scores INNER JOIN Student USING (Student_ID)
                 INNER JOIN T_Course USING (Course_ID)
WHERE Student_ID = 'C1801'
ORDER BY 5;

6. 수강임시(T_SG_Scores) 테이블과 과목임시(T_Course) 테이블을 이용하여 'C1801' 학번의 등급에 대한 평점, 과목별 평점을 출력하시오. 단, 평점은 등급이 'A+'이면 4.5, 'A '이면 4.0, 'B+'이면 3.5, 'B '이면 3.0, 'C+'이면 2.5, 'C '이면 2.0, 'D+'이면 1.5, 'D '이면 1.0, 'F '이면 0.0이며, 과목별 평점은 "등급에 대한 평점 x 학점수"로 계산한다.

더보기
SELECT Student_ID, Course_ID, Title, C_Number "학점", Grade,
       CASE Grade WHEN 'A+' THEN 4.5 WHEN 'A' THEN 4.0
                  WHEN 'B+' THEN 3.5 WHEN 'B' THEN 3.0
                  WHEN 'C+' THEN 2.5 WHEN 'C' THEN 2.0
                  WHEN 'D+' THEN 1.5 WHEN 'D' THEN 1.0
                            ELSE 0.0 
        END "등급평점",
        CASE Grade WHEN 'A+' THEN 4.5 WHEN 'A' THEN 4.0
                   WHEN 'B+'  THEN 3.5 WHEN 'B' THEN 3.0
                   WHEN 'C+' THEN 2.5 WHEN 'C' THEN 2.0
                   WHEN 'D+' THEN 1.5 WHEN 'D' THEN 1.0 
                            ELSE 0.0
        END * C_Number "과목평점"
FROM    T_SG_Scores INNER JOIN Student USING (Student_ID)
                    INNER JOIN T_Course USING (Course_ID)
WHERE   Student_ID = 'C1802'
ORDER   BY Course_ID;

7. 수강임시(T_SG_Scores) 테이블에서 학번별 취득 과목수, 취득 점수의 합계와 평균을 계산하여, [학과코드, 학년, 학번, 성명, 과목수, 총점, 평균]을 총점 내림차순으로 출력하시오. 단, 평균은 소숫점 반올림하여 둘째자리까지 출력한다.

더보기
SELECT Dept_ID, Year, Student_ID, Name, Count (1) "과목수", SUM(Score) "총점",
       TO_CHAR(ROUND (AVG(Score), 2), '999.99') "평균"
FROM   T_SG_Scores SG INNER JOIN Student S USING (Student_ID)
WHERE  Score IS NOT NULL
GROUP  BY Dept_ID, Year, Student_ID, Name
Order  BY 3 DESC;

8. 학과(Department) 테이블과 교수(Professor) 테이블을 이용하여 직책명(Duty)에 대한 계층적 구조("총장->학과장->교수"순)의 학과별 직위 명단을 출력하시오.

더보기
SELECT Dept_Name "소속", decode (Duty,'총장',''
                            ,'학과장','   L______'
                            , NULL, '           L______') || Duty ||
     '  '|| Name || '  ' || Position "직책 및 성명"
FROM Professor P INNER JOIN Department D ON (P.Dept_ID = D.Dept_ID)
START WITH mgr is NULL
CONNECT BY prior Professor_id = Mgr ;

9. 수강(SG_Scores) 테이블과 과목(Course) 테이블을 이용하여 한 명이상 수강한 과목의 [과목코드, 과목명, 학점수]를 과목코드순으로 출력하시오. (INTERSECT)

더보기
SELECT Course_ID, Title, C_Number
FROM   Course
INTERSECT
SELECT Course_ID, Title, C_Number
FROM   SG_Scores INNER JOIN Course USING (Course_ID)
ORDER BY 1;

10. 수강(SG_Scores) 테이블에서 2018학년도 수강 신청한 학생(학번이 'C18'로 시작)의 과목과 2017학년도 수강 신청한 학생(학번이 'C17'로 시작)의 과목중에서 2016학년도 학생(학번이 'C16'이 시작)이 수강하지 않은 과목을 출력하시오.

더보기
SELECT Course_ID, Title, C_Number
FROM SG_Scores INNER JOIN Course USING (Course_ID)
WHERE Student_ID LIKE 'C18%'
UNION
SELECT Course_ID, Title, C_Number
FROM SG_Scores INNER JOIN Course USING (Course_ID)
WHERE Student_ID LIKE 'C17%'
MINUS
SELECT Course_ID, Title, C_Number
FROM SG_Scores INNER JOIN Course USING (Course_ID)
WHERE Student_ID LIKE 'C16%'
ORDER BY 1;

 

*아래 연습문제는 연습문제를 위한 견본데이터베이스가 있어야 실행 가능

★연습문제1

1. 회원관리(EC_Member) 테이블을 이용하여 총회원수를 출력하시오.

더보기
SELECT COUNT(*)"총회원수"
FROM   EC_Member;

2. 주문처리(EC_Order) 테이블에서 결제금액(CMONEY)이 제일 적은 금액과 제일 많은 금액을 출력하시오.

더보기
SELECT MIN(CMONEY),MAX(CMONEY)
FROM   EC_Order;

3. 주문처리(EC_Order) 테이블에서 결제한 회원의 주문자ID별 결제 금액(CMONEY)의 합계를 계산하여 [주문자ID, 결제합계]를 출력하시오.

더보기
SELECT   ORDER_ID "주문자 ID", TO_CHAR(SUM(CMONEY),'L999,999,999')"결제합계"
FROM     EC_Order
GROUP BY ORDER_ID;

4. 상품관리(EC_Product) 테이블의 단가(Unit_Price)를 이용하여 역순으로 상품 단가에 순위를 부여하여 [상품코드, 상품명, 단가, 순위]를 출력하시오.

더보기
SELECT PRODUCT_CODE, PRODUCT_NAME, UNIT_PRICE,
         RANK() OVER (ORDER BY UNIT_PRICE DESC) "상품단가순위"
FROM     EC_Product
ORDER BY 3 DESC;

5. 회원관리(EC_Member) 테이블을 이용하여 회원의 시도별 분포 인원수와 전체 인원수를 계산하여 출력하시오. (ROLLUP 연산)

더보기
SELECT UNIQUE SUBSTR(ADDRESS,1,2)"시도별",
COUNT(*) "인원수"
FROM EC_Member
GROUP BY ROLLUP(SUBSTR(ADDRESS,1,2))
ORDER BY 1;

6. 주문처리(EC_Order) 테이블에서 결제 년월별 판매금액계를 출력하시오. GROUPING() 함수를 사용하여 '결제년월'이 연산에 사용되지 않을 경우 '합계금액'을 출력한다. (ROLLUP 연산, CASE() 함수 사용)

더보기
SELECT CASE GROUPING(SUBSTR(CDATE,1,5)) WHEN 0 THEN SUBSTR(CDATE,1,5)
                                        WHEN 1 THEN ' 합계금액'
       END "결제년월",
       TO_CHAR(SUM(CMONEY),'L999,999,999') "판매금액계"
FROM EC_Order
GROUP BY ROLLUP(SUBSTR(CDATE,1,5))
ORDER BY GROUPING(SUBSTR(CDATE,1,5)),1;

7. 주문처리(EC_Order) 테이블에서 2018년 1/4분기(1월~3월)의 주문자ID, 주문상품, 결제금액을 (주문자ID, 상품코드별), 회원별 집계, 상품코드별 집계, 전체 합계를 계산하여 주문자ID 순으로 출력하시오. (CUBE 연산, CASE() 함수, GROUPING_ID() 함수 사용)

더보기
SELECT CASE GROUPING_ID(ORDER_ID, PRODUCT_CODE) WHEN 0 THEN ORDER_ID
                                                WHEN 1 THEN NULL
                                                WHEN 2 THEN ' 상품 집계'
                                                WHEN 3 THEN ' 전체 합계'
       END "주문자_ID",
       CASE GROUPING_ID(ORDER_ID, PRODUCT_CODE) WHEN 0 THEN PRODUCT_CODE
                                                WHEN 1 THEN ' 회원집계'
                                                WHEN 2 THEN PRODUCT_CODE
                                                WHEN 3 THEN NULL
                                                
                                       
       END "주문상품", TO_CHAR(SUM(CMONEY),'L999,999,999') "결제금액"
FROM   EC_Order
WHERE TO_CHAR(CDATE,'YY/MM') >='18/01' AND TO_CHAR(CDATE,'YY/MM')<='18/03'
GROUP  BY CUBE(ORDER_ID,PRODUCT_CODE)
ORDER BY ORDER_ID;

★연습문제2

1. 주문처리(EC_Order) 테이블에서 결제한 결제년월별로 [결제년월, 주문건수, 주문 수량 합계, 결제 금액 합계]를 계산하여 결제년월순으로 출력하시오.

더보기
SELECT TO_CHAR(Cdate, 'YYYY/MM') "결제년월", Count(2) "주문건수",
       SUM(Order_QTY) "주문수량 합계", TO_CHAR(SUM(CMONEY),'L999,999,999')"결제합계"
FROM EC_ORDER
WHERE Cdate IS NOT NULL
GROUP BY TO_CHAR(Cdate, 'YYYY/MM')
ORDER BY 1;

2. 회원관리(EC_Member) 테이블에서 남, 여 회원수를 출력하시오. 단, 성별 코드가 1또는 3이면 남자, 2 또는 4는 여자임.

더보기
SELECT DECODE(SUBSTR(REGIST_NO,8,1),1,'남자',2,'여자',3,'남자',4,'여자')
"성별", COUNT(*) "회원수"
FROM EC_MEMBEr
GROUP BY DECODE(SUBSTR(REGIST_NO,8,1),1,'남자',2,'여자',3,'남자',4,'여자');

3. 주문처리(EC_Order) 테이블에서 년월별 결제금액이 가장 많은 금액을 결제년월별순으로 출력하시오.

더보기
SELECT TO_CHAR(Cdate, 'YYYY/MM') "결제년월", TO_CHAR(MAX(CMoney),'L999,999,999') "결제최대금액"
FROM   EC_ORDER
WHERE  CDATE IS NOT NULL
GROUP  BY TO_CHAR(Cdate, 'YYYY/MM')
ORDER BY 1;

4. 주문처리(EC_Order) 테이블에서 주문자ID, 주문상품코드, 구매횟수, 결제금액을 (주문자, 상품코드별), 주문자별 소계, 전체 합계를 계산하여 주문자ID순으로 출력하시오. (ROLLUP 연산, CASE() 함수와 GROUPING_ID() 함수 사용)

더보기
SELECT CASE GROUPING_ID(Order_ID, Product_Code) WHEN 1 THEN NULL
                                                       ELSE Order_ID
            END "주문자_ID",
            CASE GROUPING_ID(Order_ID, Product_Code) WHEN 1 THEN '     소계'
                                                    WHEN 3 THEN '전체합계'
                                                        ELSE Product_Code
            END "주문상품",
            COUNT(*) "구매횟수", TO_CHAR(SUM(Cmoney),'L999,999,999')"결제금액"
FROM       EC_Order
WHERE      CDate IS NOT NULL
GROUP      BY ROLLUP(Order_ID, Product_Code)
ORDER      BY ORder_ID;

5. 주문처리(EC_Order) 테이블에서 주문자ID, 상품코드, 결제금액을 주문자별, 상품코드별로 계산하여 주문자, 상품코드순으로 출력하시오. (GROUPING SETS 연산)

더보기
SELECT Order_ID, Product_Code, TO_CHAR(SUM(Cmoney),'L999,999,999') "결제금액"
FROM   EC_Order
WHERE CDAte IS NOT NULL
GROUP BY GROUPING SETS(Order_ID, Product_Code)
ORDER BY 1,2;

6. 주문처리(EC_Order) 테이블에서 결제자의 결제금액을 이용하여 높은 금액부터 순위를 구하여 [주문자ID, 결제일자, 결제방법, 결제금액, 순위]를 출력하시오.

더보기
SELECT Order_ID, CDATE "결제일자", Csel "결제방법", TO_CHAR(CMoney,'L999,999,999') "결제금액",
       DENSE_RANK() OVER(ORDER BY CMoney DESC) "순위"
FROM   EC_Order
WHERE  CDate IS NOT NULL
ORDER BY 4 DESC;

7. 수강임시(T_SG_Scores) 테이블에서 성적 취득한 학번별 과목수, 합계와 평균을 계산하여 [학번, 과목수, 총점, 평균]을 총점 내림차순으로 출력하시오.

더보기
SELECT Student_ID, COUNT(1) "과목수", SUM(Score) "총점", AVG(Score) "평균"
FROM   T_SG_Scores
WHERE  Score IS NOT NULL
GROUP  BY STudent_ID
ORder  BY 3 DESC;

8. 수강(SG_Scores) 테이블의 학번별 총점과 평균을 구하고, 평균으로 석차를 구하여 [학번, 총점, 평균, 석차]를 석차순으로 출력하시오.

더보기
SELECT Student_ID, SUM(Score) "총점", TO_CHAR(AVG(Score), '99.9') "평균",
       RANK()  OVER(ORDER BY AVG(Score) DESC) "석차"
FROM   SG_Scores
GROUP  BY Student_ID
ORDER  BY 4;

9. 자유게시판(Fress_Board) 테이블의 게시물 행을 수를 출력하고, 게시물의 저장하기 위해 게시판 번호(B_ID)를 구하시오. 단, 게시물 번호는 널이면 1, 그렇지 않으면 게시물번호의 최댓값+1로 한다. (CASE문 사용)

더보기
SELECT COUNT(*) "총게시물수" FROM FRee_Board;
SELECT CASE WHEN MAX(B_ID) IS NULL THEN 1
                                    ELSE MAX(B_ID)+1
       END "게시물번호"
FROM   Free_BOARD;

 

★연습문제1

1. 회원관리(EC_Member) 테이블의 주민등록번호를 이용하여 성별을 추출하고, 성별이 '1' 또는 '3'일 때 '남자', '2' 또는 '4'일 때 '여자'로 변환하여 성별순으로 출력하시오.

더보기
SELECT NAME, REGIST_NO,DECODE(SUBSTR(REGIST_NO,8,1),'1','남','2','여',
                                                    '3','남','4','여')
                                                    AS 성별
FROM EC_MEMBER
ORDER BY 3;

2. 회원관리(EC_Member) 테이블을 이용하여 각 회원의 [회원명, 주민등록번호, 나이, 기준년월일]을 출력하시오. 단 , 기준녀월일은 SYSDATE로 한다.

더보기
SELECT NAME,REGIST_NO,EXTRACT(YEAR FROM SYSDATE)
       -(DECODE(SUBSTR(REGIST_NO,8,1),'1', '19','2','19','20') || 
       SUBSTR(REGIST_NO,1,2)) +1 AS 나이,
       TO_CHAR(SYSDATE,'YYYY/MM/DD') AS 기준년월일
FROM EC_Member
ORDER BY 3;

3. 주문처리(EC_Order) 테이블에서 결제 후 배달하지 않은 상품에 대하여 [주문자ID, 상품코드, 수량, 결제금액, 결제 후 지난 일자, 기준일]을 계산하여 출력하시오. 단, 기준일은 SYSDATE임.

더보기
SELECT ORDER_ID, PRODUCT_CODE AS 주문상품,ORDER_QTY AS 수량,
       TO_CHAR(CMONEY,'L99,999,999') AS 결제금액, 
       TO_DATE(TO_CHAR(SYSDATE,'YYYYMMDD'),'YYYYMMDD') 
       - TO_DATE(TO_CHAR(CDATE,'YYYYMMDD'),'YYYYMMDD') "결제 후 일자",
       TO_CHAR(SYSDATE,'YYYY/MM/DD') AS 기준일
FROM EC_Order
WHERE GUBUN='결제' AND MDATE IS NULL;

4. 단가가 100만원 이상인 상품에 대하여 10% 할인하려고 한다. 상품관리(EC_Product) 테이블에서 해당 상품의 10%할인된 금액을 형식에 맞추어 출력하시오.

더보기
SELECT PRODUCT_CODE,PRODUCT_NAME,
       TO_CHAR(UNIT_PRICE,'L99,999,999') AS 단가,
       TO_CHAR(UNIT_PRICE*0.9,'L99,999,999') "10%할인된금액"
FROM EC_Product
WHERE UNIT_PRICE>=1000000;

5. 주문처리(EC_Order) 테이블의 구분(Gubun) 칼럼 값이 '배달'을 제외하고, '결제'이면 '배달준비', '미결'이면 '결제대기', '취소'이면 '반품', 그렇지 않으면 '대기'로 변경하여 [주문자ID, 상품코드, 결제금액, 결제일자, 구분]의 처리내용을 출력하시오.

더보기
SELECT ORDER_ID,PRODUCT_CODE,CMONEY AS 결제금액,TO_CHAR(CDATE,'YY/MM/DD') AS 결제일자,
       DECODE(SUBSTR(GUBUN,1,2),'결제','배달준비'
                                ,'미결','결제대기'
                                ,'취소','반품','대기')AS 처리내용
FROM EC_Order
WHERE NOT GUBUN='배달';

★연습문제2

1. 회원관리(EC_Member) 테이블에서 '서울' 거주자에 대하여 회원명의 성씨를 출출하여 [회원명, 성, 전화번호, 주소]를 출력하시오.

더보기
SELECT NAME, SUBSTR(NAME,1,1) AS 성,TELEPHONE,ADDRESS
FROM   EC_Member
WHERE Address LIKE '서울%'
ORDER BY 1;

2. 상품관리(EC_Product) 테이블에서 모든 컴퓨터 제품의 재고수량을 단위와 결합하여 [상품코드, 상품명, 단위, 재고수량, 생샌처]를 출력하시오. CONCAT()함수

더보기
SELECT Product_Code,Standard, CONCAT(Left_Qty,Unit) "재고수량",
Company
FROM Ec_product
WHERE Product_Name LIKE '%컴퓨터%';

3. 주문처리(EC_Order) 테이블에서 결제금액이 100만원 이상 결제한 주문자의 결제일자(CDATE를 년월('YYYY/MM') 형식으로 변환하여 출력하시오.

더보기
SELECT Order_ID, Product_Code, CMoney,CDate "결제일자",
       TO_CHAR(Cdate, 'YYYY/MM') "결제년월"
FROM   EC_Order
WHERE  CDATE IS NOT NULL AND CMONEY >=1000000
ORDER  BY CDate;

4. 회원관리(EC_Member) 테이블에서 현재일자(SYSDATE) 기준으로 회원가입기간을 'xx년 xx월'로 계산하여 1년 이상인 회원을 출력하시오.

더보기
SELECT Name, REGIST_NO, TimeStamp "가입일자",
       Trunc(MONTHS_Between(Current_DATE,Timestamp) /12) || '년' ||
       MOD(Trunc(MONTHS_Between(Current_Date,Timestamp)),12)||'월' AS 가입기간,
       CURRENT_DATE "기준일자"
FROM   EC_MEMBER
WHERE  Trunc(MONTHS_Between(Current_Date, Timestamp)/12) >=1
ORDER  BY 1;

5. 주문처리(EC_Order) 테이블에서 결제한 회원중 '신용카드'로 결제한 회원에 대하여 EXTRACT() 함수를 이용하여 결제년도와 결제 월을 추출해 보시오.

더보기
SELECT Order_ID, CMoney, Csel, Cdate,
       ExTRACT(YEAR FROM CDATE) "결제년도",
       EXTRACT(MONTH FROM CDATE) "결제 월"
FROM   EC_Order
WHERE  CDATE IS NOT NULL AND Csel='신용카드'
ORDER  BY 4;

6. 수강임시(T_SG_Scores) 테이블에서 CASE 함수를 이용하여 등급을 산출하고, [학번, 과목코드, 성적, 등급, 성적취득일자]를 출력하시오.

더보기
UPDATE T_SG_Scores
SET    GRADE = CASE WHEN Score BETWEEN 95 AND 100 THEN 'A+'
                    WHEN Score BETWEEN 90 AND 94  THEN 'A'
                    WHEN Score BETWEEN 85 AND 89  THEN 'B+'
                    WHEN Score BETWEEN 80 AND 84  THEN 'B'
                    WHEN Score BETWEEN 75 AND 79  THEN 'C+'
                    WHEN Score BETWEEN 70 AND 74  THEN 'C'
                    WHEN Score BETWEEN 65 AND 69  THEN 'D+'
                    WHEN Score BETWEEN 60 AND 64  THEN 'D'
                                                  ELSE 'F'
                    END
WHERE  GRADE IS NULL;

SELECT*FROM T_SG_SCores;
COMMIT;

7. 수강임시(T_SG_Scroes)테이블에서 'C1801'학번의 성적을 5로 나누어 몫과 나머지를 계산하여 [학번, 과목코드, 성적, 몫, 나머지]를 출력하시오.

더보기
SELECT Student_ID, Course_ID, Score, Floor(Score/5)"몫",MOD(Score,5)"나머지"
FROM   T_SG_Scores
WHERE  Student_ID='C1801'
ORDER  BY 3 DESC;

8. 수강임시(T_SG_Scores) 테이블에서 CASE 함수를 이용하여 'C1801' 학번의 등급이 'A+'이면 4.5, 'A'이면 4.0, 'B+'이면 3.5, 'B '이면 3.0, 'C+'이면 2.5, 'C'이면 2.0, 'D+'이면 1.5, 'D'이면 1.0, 'F'이면 0.0을 출력하시오.

더보기
SELECT Student_ID, Course_ID, Grade,
       CASE Grade When 'A+' THEN '4.5' WHEN 'A ' THEN '4.0'
                  When 'B+' THEN '3.5' WHEN 'B ' THEN '3.0'
                  When 'C+' THEN '2.5' WHEN 'C ' THEN '2.0'
                  When 'D+' THEN '1.5' WHEN 'D ' THEN '1.0'
                            ELSE '0.0'
       END "평점"
FROM   T_SG_Scores
WHERE  Student_ID='C1801';

9. 과목임시(T_Course) 테이블에서 추가수강료(Course_fees)가 널인 행에 대하여 널 값을 0으로 변환하여 출력하시오.

더보기
SELECT Course_ID, Title,C_Number,Professor_ID, NVL(Course_fees,0)
FROM   T_Course
WHERE  Course_fees IS NULL;

10. 기준일자(CURRENT_DATE)에 5일을 더하고, 기준시간에 4시간을 더하여 출력하시오.

더보기
ALTER SESSION SET NLS_DATE_FORMAT='YYYY/MM/DD HH24:MI:SS';

SELECT CURRENT_DATE "기준일자와 기준시간", CURRENT_DATE+5 "5일 후",
       CURRENT_DATE+4/24 "4시간 후"      FROM DUAL;

11. 상품관리(EC_Product)테이블에서 상품명을 '개인용컴퓨터', '노트북컴퓨터', '프린터', 'TV', 기타 출력순서로 1순위, 단가 내림차순을 2순위로 출력하시오.

더보기
SELECT Product_Code, Product_Name, Unit_Price, Company
FROM   EC_Product
ORDER  BY CASE Product_Name WHEN '개인용컴퓨터' THEN 1
                            WHEN '노트북컴퓨터' THEN 2
                            WHEN '프린터'      THEN 3
                            WHEN 'TV'         THEN 4
                                              ELSE 5
          END, 3 DESC;

 

★연습문제1

1. 상품관리(EC_Product) 테이블에 표를 참고하여 새로운 상품을 추가하시오.

상품코드 상품명 규격 단가 재고수량 생산처 이미지
SP01 아이폰 IPHONE8+64G 816, 000 10 APPLE sp01.jpg
SP02 갤럭시노트 NOTE8+256G 829, 000 15 SAMSUNG sp02.jpg
SP03 G7 ThinQ G7+128G 822, 000 10 LG전자 sp03.jpg
더보기
INSERT INTO EC_Product
(PRODUCT_CODE,PRODUCT_NAME,STANDARD,UNIT_PRICE,LEFT_QTY,COMPANY,IMAGENAME)
VALUES
('SP01','아이폰','IPHONES8+64G',816000,10,'APPLE','sp01.jpg');
INSERT INTO EC_Product
(PRODUCT_CODE,PRODUCT_NAME,STANDARD,UNIT_PRICE,LEFT_QTY,COMPANY,IMAGENAME)
VALUES
('SP02','갤럭시노트','NOTE8+256G',829000,15,'SAMSUNG','sp02.jpg');
INSERT INTO EC_Product
(PRODUCT_CODE,PRODUCT_NAME,STANDARD,UNIT_PRICE,LEFT_QTY,COMPANY,IMAGENAME)
VALUES
('SP03','G7 ThinQ','G7+128G',822000,10,'LG전자','sp03.jpg');

SELECT PRODUCT_CODE,PRODUCT_NAME,STANDARD,UNIT_PRICE,LEFT_QTY,COMPANY,IMAGENAME
FROM EC_Product
WHERE PRODUCT_CODE IN('SP01','SP02','SP03');

2. 주문처리(EC_Order) 테이블에 배달일자(Mdate)와 구분(Gubun) 칼럼 값을 표를 참고하여 수정하고, 2018년 5월 10일의 배달 내역을 출력하시오.

주문번호 주문자ID 배달상품코드 배달수량 배달일자 구분
180505002 kcchoi DK01 1 개 2018/05/10 배달
180505003 kcchoi CH01 1 개 2018/05/10 배달
더보기
UPDATE EC_Order
SET   MDATE='18/05/10', GUBUN='배달'
WHERE  ORDER_ID='kcchoi';

SELECT ORDER_NO,PRODUCT_CODE,ORDER_QTY,CMONEY,MDATE,GUBUN
FROM   EC_Order
WHERE  MDATE='18/05/10';

3. 주문처리(EC_Order) 테이블에 금일(2018/07/12) 입금된 내역이다. 주문금액과 결제 금액이 동일한 경우 표를 참고하여 [결제방법, 결제일자, 구분]의 결제항목을 입력하시오.

주문번호 주문자ID 주문금액 결제금액 결제방법 결제일자 구분
180707001 jupark 3,725,000 3,735,000 신용카드 2018/07/12 결제
180707002 jupark 4,300,000 4,300,000 신용카드 2018/07/12 결제
180707003 cscho 747,000 747,000 신용카드 2018/07/12 결제
더보기
UPDATE EC_Order
SET CSEL='신용카드',CDATE='18/07/12',GUBUN='결제'
WHERE ORDER_NO='180707001';

UPDATE EC_Order
SET CSEL='신용카드',CDATE='18/07/12',GUBUN='결제'
WHERE ORDER_NO='180707002';

UPDATE EC_Order
SET CSEL='신용카드',CDATE='18/07/12',GUBUN='결제'
WHERE ORDER_NO='180707003';

4. 주문처리(EC_Order) 테이블로부터 금일 (2018년 7월 12일) 결제한 [주문번호, 상품코드, 주문수량, 결제금액, 결제방법, 결제일자]를 주문번호순으로 출력하시오.

더보기
SELECT ORDER_NO,PRODUCT_CODE,ORDER_QTY,CSEL,CMONEY,CDATE
FROM EC_Order
WHERE CDATE='18/07/12'
ORDER BY 1;

5. 회원관리(EC_Member) 테이블의 구매실적(BuyCash) 칼럼이 널(null)인 행을 0으로 수정하시오.

더보기
UPDATE EC_Member
SET    BUYCASH=0
WHERE  NVL(BUYCASH,0)=0;

6. 테이블의 트랜잭션 영역의 모든 행들을 영구히 저장하시오.

더보기
COMMIT;

★연습문제2

1. 다음 표의 개설과목을 과목임시(T_Course) 테이블에 저장하고, 출력하시오.

과목코드 과목명 학점수 담당교수번호 추가수강료
L3001 스프링 프로젝트 3 P11 50,000
L3002 모바일프로그래밍 3 P12  
L3003 데이터베이스튜닝 2 P13 50,000
L3004 빅데이터 개론 2 P14 30,000
더보기
INSERT INTO T_Course
(Course_ID, Title, C_Number,Professor_ID,Course_fees)
VALUES
('L3001','스프링 프로젝트',3,'P11',50000);

INSERT INTO T_Course
(Course_ID, Title, C_Number,Professor_ID,Course_fees)
VALUES
('L3002','모바일프로그래밍',3,'P12',null);

INSERT INTO T_Course
(Course_ID, Title, C_Number,Professor_ID,Course_fees)
VALUES
('L3003','데이터베이스튜닝',2,'P13',50000);

INSERT INTO T_Course
(Course_ID, Title, C_Number,Professor_ID,Course_fees)
VALUES
('L3004','빅데이터 개론',2,'P14',30000);

SELECT * FROM T_Course;

2. 다음 표를 참고하여 학번별 수강신청 과목을 수강임시(T_SG_Scores) 테이블에 저장하고 출력하시오.

학번 성명 과목코드 과목명 학점수 수강일자
C1801 김대현 L3001 스프링 프로젝트 3 2018/02/23
L3002 모바일프로그래밍 3
L3003 데이터베이스튜닝 2
L3004 빅데이터 개론 2
C1802 신지애 L3001 스프링 프로젝트 3 2018/02/24
L3002 모바일프로그래밍 3
L3003 데이터베이스튜닝 2
L1051 웹서버 관리 2
더보기
INSERT INTO T_SG_Scores (Student_ID,Course_ID,Score_Assigned)
                 VALUES ('C1801','L3001','18/02/23');              
INSERT INTO T_SG_Scores (Student_ID,Course_ID,Score_Assigned)
                 VALUES ('C1801','L3002','18/02/23');              
INSERT INTO T_SG_Scores (Student_ID,Course_ID,Score_Assigned)
                 VALUES ('C1801','L3003','18/02/23');                
INSERT INTO T_SG_Scores (Student_ID,Course_ID,Score_Assigned)
                 VALUES ('C1801','L3004','18/02/23');  
                 
INSERT INTO T_SG_Scores (Student_ID,Course_ID,Score_Assigned)
                 VALUES ('C1802','L3001','18/02/24');                
INSERT INTO T_SG_Scores (Student_ID,Course_ID,Score_Assigned)
                 VALUES ('C1802','L3002','18/02/24');               
INSERT INTO T_SG_Scores (Student_ID,Course_ID,Score_Assigned)
                 VALUES ('C1802','L3003','18/02/24');                
INSERT INTO T_SG_Scores (Student_ID,Course_ID,Score_Assigned)
                 VALUES ('C1802','L1051','18/02/24');   
                 
SELECT*FROM T_SG_Scores ORDER BY 1,2;

3. 'C1802' 학번의 '신지애' 학생이 수강 신청한 'L1051' 과목을 'L3004'  '빅데이터 개론'으로 수강 과목을 변경하고자 한다. T_SG_Scores 테이블에 변경하시오.

더보기
UPDATE T_SG_Scores
SET COURSE_ID='L3004'
WHERE STUDENT_ID='C1802' AND COURSE_ID='L1051';

4. 표를 참고하여 성적을 수강임시(T_SG_Scores) 테이블에 저장하고 출력하시오

교수번호 과목코드 과목명 학번 성적 성적취득일자
P11 L3001 스프링프로젝트 C1801 98 2018/06/28
C1802 88
P12 L3002 모바일프로그래밍 C1801 87
C1802 92
P13 L3003 데이터베이스튜닝 C1801 92 2018/06/28
C1802 93
P14 L3004 빅데이터 개론 C1801 89
C1802 97
더보기
UPDATE T_SG_Scores
SET Score=98,Score_Assigned='2018/06/28'
WHERE Student_ID='C1801' AND Course_ID='L3001';
UPDATE T_SG_Scores
SET Score=87,Score_Assigned='2018/06/28'
WHERE Student_ID='C1801' AND Course_ID='L3002';
UPDATE T_SG_Scores
SET Score=92,Score_Assigned='2018/06/28'
WHERE Student_ID='C1801' AND Course_ID='L3003';
UPDATE T_SG_Scores
SET Score=89,Score_Assigned='2018/06/28'
WHERE Student_ID='C1801' AND Course_ID='L3004';

UPDATE T_SG_Scores
SET Score=88,Score_Assigned='2018/06/28'
WHERE Student_ID='C1802' AND Course_ID='L3001';
UPDATE T_SG_Scores
SET Score=92,Score_Assigned='2018/06/28'
WHERE Student_ID='C1802' AND Course_ID='L3002';
UPDATE T_SG_Scores
SET Score=93,Score_Assigned='2018/06/28'
WHERE Student_ID='C1802' AND Course_ID='L3003';
UPDATE T_SG_Scores
SET Score=97,Score_Assigned='2018/06/28'
WHERE Student_ID='C1802' AND Course_ID='L3004';

SELECT*FROM T_SG_Scores ORDER BY 1,2;

5. 과목코드 'L2033'의 '게임프로그래밍' 개설과목이 폐강되었다. 수강임시(T_Course) 테이블에서 'L2033' 과목코드를 삭제하시오.

더보기
DELETE FROM T_Course
WHERE Course_ID='L2033';

6. 과목임시(T_Course) 테이블의 과목코드 'L1031', 과목명이 'SQL'의 추가수강료를 30000원으로 수정하시오.

더보기
UPDATE T_Course
SET Course_fees=30000
WHERE Course_ID='L1031';

7. 트랜잭션 영역의 모든 행들을 테이블에 영구히 저장하고, SQL*PLus의 AUTOCOMMIT 시스템 변수를 OFF으로 설정하시오.

더보기
COMMIT;
SET AUTOCOMMIT OFF;

8. 수강임시(T_Course)테이블에서 과목코드가 'L4'로 시작하는 과목코드들을 삭제하시오.

더보기
DELETE FROM T_Course
WHERE Course_ID LIKE 'L4%';

9. 수강임시(T_Course) 테이블에서 과목코드가 'L4'로 시작하는 과목코드들을 실수로 삭제하였다. 삭제된 행들을 복구하시오.

더보기
ROLLBACK;

*아래 연습문제는 연습문제를 위한 견본데이터베이스가 있어야 실행 가능

★연습문제1

1. 상품관리(EC_Product) 테이블에서 단가가 100만원을 초과하는 상품 목록의 [상품코드, 상품명, 단가]를 출력하시오.

더보기
SELECT PRODUCT_CODE,PRODUCT_NAME,UNIT_PRICE
FROM EC_Product
WHERE UNIT_PRICE >1000000;

2. 회원관리(EC_Member) 테이블로부터 서울에서 거주하는 회원의 [사용자아이디, 회원명, 주민등록번호, 주소]를 출력하시오.

더보기
SELECT USERID,NAME,REGIST_NO,ADDRESS
FROM EC_Member
WHERE ADDRESS LIKE '서울%';

3. 장바구니(EC_Basket) 테이블에서 2018년 07월 11일에 주문한 고객과 주문 내용을 출력하시오.

더보기
SELECT ORDER_NO, ORDER_ID, PRODUCT_CODE,ORDER_QTY,ORDER_DATE
FROM EC_Basket
WHERE ORDER_DATE='18/07/11';

4. 주문처리(EC_Order) 테이블에서 결제한 회원 중에서 상품을 배달하지 않은 회원의 [주문번호, 상품코드, 주문수량, 결제방법, 결제금액, 결제일자, 구분]을 주문번호순으로 출력하시오.

더보기
SELECT ORDER_NO, PRODUCT_CODE,ORDER_QTY,CSEL,CMONEY,CDATE,GUBUN
FROM EC_Order
WHERE GUBUN ='결제'  AND GUBUN != '배달' ;

5. 회원관리(EC_Member) 테이블에서 회원명에 '우'자가 들엉간 회원의 [회원ID, 회원명, 주민등록번호]를 출력하시오.

더보기
SELECT USERID, NAME,REGIST_NO
FROM EC_Member
WHERE NAME LIKE '%우%';

6. 주문처리(EC_Order) 테이블에서 배달한 주문자 중에서 '신용카드'로 결제하지 않은 주문자의 [주문번호, 주문자ID, 상품코드, 결제방법, 구분]을 주문자ID 순으로 출력하시오.

더보기
SELECT ORDER_NO, ORDER_ID, PRODUCT_CODE,CSEL,GUBUN
FROM EC_Order
WHERE GUBUN ='배달' AND CSEL !='신용카드'
ORDER BY 2;

7. 상품관리(EC_Product) 테이블에서 상품의 단가가 30만원에서 50만원 이내의 상품 목록의 [상품코드, 상품명, 단가, 재고수량, 생산처를 단가(Unit_Price)내림차순으로 출력하시오.

더보기
SELECT PRODUCT_CODE,PRODUCT_NAME,UNIT_PRICE,LEFT_QTY,COMPANY
FROM EC_Product
WHERE UNIT_PRICE BETWEEN 300000 AND 500000
ORDER BY 3 DESC;

8. 주문처리(EC_Order) 테이블에서 '신용카드'로 결제한 행의 [주문번호, 주문자ID, 결제금액, 결제일자, 결제방법]을 출력하시오.

더보기
SELECT ORDER_NO,ORDER_ID,CMONEY,CDATE,CSEL
FROM EC_Order
WHERE CSEL='신용카드';

9. 주문처리(EC_Order) 테이블에서 결제하지 않은 행의 [주문번호, 주문자ID, 상품코드, 주문수랴으 결제할 금액, 구분]을 출력하시오.

더보기
SELECT ORDER_NO,ORDER_ID,PRODUCT_CODE,ORDER_QTY,CMONEY,GUBUN
FROM EC_Order
WHERE GUBUN IS NULL;

10. 주문처리(EC_Order) 테이블에서 'usko' 회원의 거래한 상품의 [주문자ID, 상품코드, 주문수량, 결제방법, 결제금액, 구분]을 출력하시오.

더보기
SELECT ORDER_ID,PRODUCT_CODE,ORDER_QTY,CSEL,CMONEY,GUBUN
FROM EC_Order
WHERE ORDER_ID = 'usko';

★연습문제2

1. 상품관리(EC_Product) 테이블에서 삼성(samsung) 회사의 제품의 [상품코드, 상품명, 단위, 단가, 재고수량, 생산처]를 상품명순으로 출력하시오.

더보기
SELECT PRODUCT_CODE,PRODUCT_NAME,STANDARD,UNIT_PRICE,LEFT_QTY,COMPANY
FROM EC_Product
WHERE COMPANY IN('SAMSUNG','Samsung','samsung')
ORDER BY 2;

2. 상품관리(EC_Product) 테이블에서 '프린터' 제품의 단가(Unit_Price)가 50만원을 추과하는 상품의 [상품코드, 상품명, 단위, 단가, 재고수량, 생산처]를 단가 내림차순으로 출력하시오.

더보기
SELECT PRODUCT_CODE,PRODUCT_NAME,STANDARD, UNIT_PRICE,LEFT_QTY,COMPANY
FROM EC_Product
WHERE PRODUCT_NAME='프린터' AND Unit_Price >500000
ORDER BY 4 DESC;

3. 회원관리(EC_Member) 테이블에서 '정'씨 회원의 [회원명, 주민등록번호, 전화번호, 가입일자]를 출력하시오.

더보기
SELECT NAME,REGIST_NO,TELEPHONE,TIMESTAMP
FROM EC_Member
WHERE NAME LIKE '정%';

4. 주문처리(EC_Order) 테이블에서 '현금입금'과 '계좌이체'한 회원의 [주문번호, 상품코드, 결제방법, 결제일자]를 결제방법, 결제일자순으로 출력하시오.

더보기
SELECT ORDER_NO,PRODUCT_CODE,CSEL,CMONEY,CDATE
FROM EC_Order
WHERE CSEL IN('현금입금','계좌이체')
ORDER BY 3,5;

5. 상품관리(EC_Product) 테이블에서 'Hp' 회사의 '프린터' 제품에 대한 [상품코드, 상품명, 단위, 단가, 재고수량]을 단가순으로 출력하시오.

더보기
SELECT PRODUCT_CODE,PRODUCT_NAME,UNIT_PRICE,LEFT_QTY
FROM EC_Product
WHERE COMPANY='HP' AND PRODUCT_NAME='프린터'
ORDER BY 3;

6. 상품관리(EC_Product) 테이블에서 생산처가 '삼성(SAMSUNG)'과 'LG전자'가 아닌 상품의 [상품코드, 상품명, 단위, 단가, 재고수량, 생산처]를 생산처, 단가순으로 출력하시오.

더보기
SELECT PRODUCT_CODE,PRODUCT_NAME,STANDARD,UNIT_PRICE,LEFT_QTY,COMPANY
FROM EC_Product
WHERE COMPANY NOT IN ('SAMSUNG','Samsung','samsung','LG전자')
ORDER BY 6,4;

7. 회원관리(EC_Member) 테이블에서 주소가 '서울'과 '대구'가 아닌 회원의 [회원명, 주민등록번호, 전화번호, 주소]를 주소(Address)순으로 출력하시오.

더보기
SELECT NAME,REGIST_NO,TELEPHONE,ADDRESS
FROM EC_Member
WHERE ADDRESS NOT LIKE '서울%' AND ADDRESS NOT LIKE '대구%'
ORDER BY 4;

8. 상품관리(EC_Product) 테이블에서 재고수량이 10 미만인 상품의 [상품코드, 상품명, 규격, 단가, 재고수량, 생산처]를 상품명순으로 출력하시오.

더보기
SELECT PRODUCT_CODE,PRODUCT_NAME,STANDARD,UNIT_PRICE,LEFT_QTY,COMPANY
FROM EC_Product
WHERE LEFT_QTY <10
ORDER BY 2;

9. 회원관리(EC_Member) 테이블에서 전화번호가 '666'이 포함된 회원의 [회원명, 주민등록번호, 전화번호, 주소]를 회원명순으로 출력하시오.

더보기
SELECT NAME,REGIST_NO,TELEPHONE,ADDRESS
FROM EC_Member
WHERE TELEPHONE LIKE '%666%'
ORDER BY 1;

10. 회원관리(EC_Member) 테이블에서 2018년 5월 1일 이후에 가입한 회원의 [회원명, 주민등록번호, 전화번호, 주소, 가입일자]를 회원 가입일자(Timestape)순으로 출력하시오.

더보기
SELECT NAME,REGIST_NO, TELEPHONE, ADDRESS, TIMESTAMP
FROM EC_Member
WHERE TIMESTAMP >'2018/05/01'
ORDER BY 5;

11. 상품관리(EC_Product) 테이블에서 상품명이 '노트'로 시작하는 상품의 [상품코드, 상품명, 단위, 단가, 재고수량, 생산처]를 생산처순으로 출력하시오.

더보기
SELECT PRODUCT_CODE,PRODUCT_NAME,STANDARD,UNIT_PRICE,LEFT_QTY,COMPANY
FROM EC_Product
WHERE PRODUCT_NAME LIKE '노트%'
ORDER BY 6;

12. 상품관리(EC_Product) 테이블에서 'LG'로 시작하는 생산처의 상품이 80만원을 초과하는 [상품코드, 상품명, 단위, 단가, 재고수량, 생산처]를 상품코드순으로 출력하시오.

더보기
SELECT PRODUCT_CODE,PRODUCT_NAME,STANDARD,UNIT_PRICE,LEFT_QTY,COMPANY
FROM EC_Product
WHERE COMPANY LIKE 'LG%' AND UNIT_PRICE>800000
ORDER BY 1;

13. 상품관리(EC_Product) 테이블에서 생산처가 입력되지 않은 행의 [상품코드, 상품명, 단위, 단가, 재고수량, 생산처]를 상품코드순으로 출력하시오.

더보기
SELECT PRODUCT_CODE,PRODUCT_NAME,STANDARD,UNIT_PRICE,LEFT_QTY,COMPANY
FROM EC_Product
WHERE COMPANY IS NULL
ORDER BY 1;

14. 주문처리(EC_Order) 테이블에서 상품코드가 'CM01'이고 주문이 1개 초과 주문한 행의 [주문번호, 주문자ID, 상품코드, 주문수량, 결제금액]을 주문자ID순으로 출력하시오.

더보기
SELECT ORDER_NO,ORDER_ID,PRODUCT_CODE,ORDER_QTY,CMONEY
FROM EC_Order
WHERE Product_CODE='CM01' AND ORDER_QTY>1
ORDER BY 2;

15. 회원관리(EC_Member) 테이블에서 회원명이 '고'씨부터 '최'씨를 제외한 회원을 [회원명, 주민등록번호, 전화번호, 주소']를 회원명순으로 출력하시오.

더보기
SELECT NAME,REGIST_NO,TELEPHONE,ADDRESS
FROM EC_Member
WHERE NAME NOT BETWEEN '고' AND '쵸'
ORDER BY 1;

16. 수강(SG_Scores) 테이블에서 수강과목코드가 'L1011'과 'L1021' 과목의 학점을 취득한 학생의 [과목코드, 학번, 성적, 성적취득일자]를 과목코드, 학번순으로 출력하시오.

더보기
SELECT COURSE_ID, STUDENT_ID,SCORE,SCORE_ASSIGNED
FROM SG_Scores
WHERE COURSE_ID IN('L1011','L1021')
ORDER BY 1,2;

17. 수강(SG_Scores)테이블에서 성적이 80점 이상이 아닌 행의 [과목코드, 학번, 성적, 성적취득일자]를 출력하시오.

더보기
SELECT STUDENT_ID, COURSE_ID, SCORE,SCORE_ASSIGNED
FROM SG_Scores
WHERE NOT SCORE >=80;

18. 학생(Student) 테이블에서 학과코드가 '컴공',과 '경영'학과가 아닌 학생의 [학과코드, 학년, 학번, 성명, 전화번호]를 학과코드, 학번순으로 출력하시오.

더보기
SELECT DEPT_ID, YEAR, STUDENT_ID,NAME,TELEPHONE
FROM Student
WHERE DEPT_ID NOT IN('컴공','경영')
ORDER BY 1,3;

★연습문제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 주소 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;

+ Recent posts