관리 메뉴

거니의 velog

230714 SQL 강의 본문

대덕인재개발원/대덕인재개발원_Oracle DB

230714 SQL 강의

Unlimited00 2023. 7. 17. 20:32
-- <과제> 각 테이블에 데이터 10개 이상 입력하기

INSERT ALL
      INTO EMPLOYEE (EMP_NO, EMP_NAME, EMP_ADDRESS, EMP_TELNO, EMP_SALARY)
      VALUES ('A001', '강서주', '세종시 다정남로 22', '010-8317-9503', 3000000)
      INTO EMPLOYEE (EMP_NO, EMP_NAME, EMP_ADDRESS, EMP_TELNO, EMP_SALARY)
      VALUES ('A002', '임석일', '대전시 중구 계룡로 110', '010-4564-1546', 2700000)
      INTO EMPLOYEE (EMP_NO, EMP_NAME, EMP_ADDRESS, EMP_TELNO, EMP_SALARY)
      VALUES ('A003', '곽재우', '세종시 집현중앙로 17', '010-1115-9546', 3000000)
      INTO EMPLOYEE (EMP_NO, EMP_NAME, EMP_ADDRESS, EMP_TELNO, EMP_SALARY)
      VALUES ('A004', '이미지', '대전시 서구 관저북로 20', '010-6875-4563', 3300000)
      INTO EMPLOYEE (EMP_NO, EMP_NAME, EMP_ADDRESS, EMP_TELNO, EMP_SALARY)
      VALUES ('A005', '김수지', '대전시 동구 동서대로 1638번길', '010-4555-4785', 3100000)
      INTO EMPLOYEE (EMP_NO, EMP_NAME, EMP_ADDRESS, EMP_TELNO, EMP_SALARY)
      VALUES ('A006', '윤하늘', '대전시 가양남로 33번길', '010-6464-9243', 3000000)
      INTO EMPLOYEE (EMP_NO, EMP_NAME, EMP_ADDRESS, EMP_TELNO, EMP_SALARY)
      VALUES ('A007', '조수인', '대전시 동대전로 171', '010-2347-5526', 3100000)
      INTO EMPLOYEE (EMP_NO, EMP_NAME, EMP_ADDRESS, EMP_TELNO, EMP_SALARY)
      VALUES ('A008', '임민우', '대전시 우암로 139', '010-7767-9566', 2700000)
      INTO EMPLOYEE (EMP_NO, EMP_NAME, EMP_ADDRESS, EMP_TELNO, EMP_SALARY)
      VALUES ('A009', '강서준', '대전시 대학로 62', '010-2346-6455', 3000000)
      INTO EMPLOYEE (EMP_NO, EMP_NAME, EMP_ADDRESS, EMP_TELNO, EMP_SALARY)
      VALUES ('A010', '이경민', '세종시 새롬중앙로 18', '010-5656-3453', 3000000)
    SELECT *
      FROM DUAL;
      
SELECT * FROM EMPLOYEE; -- 사원 테이블

DELETE FROM EMPLOYEE;

SELECT * FROM EMPLOYEE;


-------------------------------------------------

INSERT ALL
      INTO CUSTOMER (CST_NO, CST_NAME, CST_ADDRESS, CST_TELNO)
      VALUES ('C001', '김승종', '대전시 남경마을로 3', '010-4445-3443')
      INTO CUSTOMER (CST_NO, CST_NAME, CST_ADDRESS, CST_TELNO)
      VALUES ('C002', '최서연', '대전시 대전로 1118 ', '010-4449-1534')
      INTO CUSTOMER (CST_NO, CST_NAME, CST_ADDRESS, CST_TELNO)
      VALUES ('C003', '김선민', '대전시 대화 9길', '010-5659-1234')
      INTO CUSTOMER (CST_NO, CST_NAME, CST_ADDRESS, CST_TELNO)
      VALUES ('C004', '이혜진', '대전시 덕암북로 4 ', '010-4659-1244')
      INTO CUSTOMER (CST_NO, CST_NAME, CST_ADDRESS, CST_TELNO)
      VALUES ('C005', '이송무', '대전시 석봉로 44', '010-7539-1774')
      INTO CUSTOMER (CST_NO, CST_NAME, CST_ADDRESS, CST_TELNO)
      VALUES ('C006', '신진수', '대전시 신탄진동로 36', '010-2349-1755')
      INTO CUSTOMER (CST_NO, CST_NAME, CST_ADDRESS, CST_TELNO)
      VALUES ('C007', '이소연', '대전시 오정로 100', '010-7779-1674')
      INTO CUSTOMER (CST_NO, CST_NAME, CST_ADDRESS, CST_TELNO)
      VALUES ('C008', '서예린', '대전시 회덕로 21', '010-4459-6564')
      INTO CUSTOMER (CST_NO, CST_NAME, CST_ADDRESS, CST_TELNO)
      VALUES ('C009', '정은비', '대전시 가수원로 65', '010-8689-6774')
      INTO CUSTOMER (CST_NO, CST_NAME, CST_ADDRESS, CST_TELNO)
      VALUES ('C010', '이현학', '대전시 괴정로 8', '010-4559-1224')
    SELECT *
      FROM DUAL;
      
SELECT * FROM CUSTOMER; -- 고객 테이블

DELETE FROM CUSTOMER;

SELECT * FROM CUSTOMER;


-------------------------------------------------

INSERT ALL
      INTO CAR (CAR_NO, CAR_MAKER, CAR_YEAR, CAR_DRIVING, CST_NO)
      VALUES ('113서9441', '쉐보레', '2016', 62051, 'C001')
      INTO CAR (CAR_NO, CAR_MAKER, CAR_YEAR, CAR_DRIVING, CST_NO)
      VALUES ('123두2341', '현대', '2009', 220135, 'C002')
      INTO CAR (CAR_NO, CAR_MAKER, CAR_YEAR, CAR_DRIVING, CST_NO)
      VALUES ('154가9651', '쌍용', '2011', 197562, 'C003')
      INTO CAR (CAR_NO, CAR_MAKER, CAR_YEAR, CAR_DRIVING, CST_NO)
      VALUES ('222나9651', '현대', '2016', 82051, 'C004')
      INTO CAR (CAR_NO, CAR_MAKER, CAR_YEAR, CAR_DRIVING, CST_NO)
      VALUES ('134누9963', '기아', '2021', 20083, 'C005')
      INTO CAR (CAR_NO, CAR_MAKER, CAR_YEAR, CAR_DRIVING, CST_NO)
      VALUES ('231라9124', '기아', '2010', 153251, 'C006')
      INTO CAR (CAR_NO, CAR_MAKER, CAR_YEAR, CAR_DRIVING, CST_NO)
      VALUES ('177로2631', '포드', '2019', 62051, 'C007')
      INTO CAR (CAR_NO, CAR_MAKER, CAR_YEAR, CAR_DRIVING, CST_NO)
      VALUES ('211머6574', '르노', '2017', 92235, 'C008')
      INTO CAR (CAR_NO, CAR_MAKER, CAR_YEAR, CAR_DRIVING, CST_NO)
      VALUES ('146구2116', '현대', '2011', 133453, 'C009')
      INTO CAR (CAR_NO, CAR_MAKER, CAR_YEAR, CAR_DRIVING, CST_NO)
      VALUES ('155하3541', '쉐보레', '2014', 91052, 'C010')
    SELECT *
      FROM DUAL;
      
SELECT * FROM CAR; -- 자동차 테이블

DELETE FROM CAR;

SELECT * FROM CAR;


-------------------------------------------------

INSERT ALL
      INTO SERVICE (EMP_NO, CAR_NO, SVC_NO, SVC_TIME, SVC_PRICE, CST_NO)
      VALUES ('A001', '113서9441', 'S00001', 11, 900000, 'C001')
      INTO SERVICE (EMP_NO, CAR_NO, SVC_NO, SVC_TIME, SVC_PRICE, CST_NO)
      VALUES ('A002', '123두2341', 'S00002', 5, 150000, 'C002')
      INTO SERVICE (EMP_NO, CAR_NO, SVC_NO, SVC_TIME, SVC_PRICE, CST_NO)
      VALUES ('A002', '154가9651', 'S00003', 3, 120000, 'C007')
      INTO SERVICE (EMP_NO, CAR_NO, SVC_NO, SVC_TIME, SVC_PRICE, CST_NO)
      VALUES ('A003', '222나9651', 'S00004', 5, 310000, 'C004')
      INTO SERVICE (EMP_NO, CAR_NO, SVC_NO, SVC_TIME, SVC_PRICE, CST_NO)
      VALUES ('A006', '134누9963', 'S00005', 10, 450000, 'C007')
      INTO SERVICE (EMP_NO, CAR_NO, SVC_NO, SVC_TIME, SVC_PRICE, CST_NO)
      VALUES ('A006', '231라9124', 'S00006', 7, 350000, 'C006')
      INTO SERVICE (EMP_NO, CAR_NO, SVC_NO, SVC_TIME, SVC_PRICE, CST_NO)
      VALUES ('A002', '177로2631', 'S00007', 6, 300000, 'C007')
      INTO SERVICE (EMP_NO, CAR_NO, SVC_NO, SVC_TIME, SVC_PRICE, CST_NO)
      VALUES ('A007', '211머6574', 'S00008', 3, 150000, 'C008')
      INTO SERVICE (EMP_NO, CAR_NO, SVC_NO, SVC_TIME, SVC_PRICE, CST_NO)
      VALUES ('A008', '146구2116', 'S00009', 1, 80000, 'C009')
      INTO SERVICE (EMP_NO, CAR_NO, SVC_NO, SVC_TIME, SVC_PRICE, CST_NO)
      VALUES ('A010', '155하3541', 'S00010', 2, 60000, 'C010')
    SELECT *
      FROM DUAL;
      
SELECT * FROM SERVICE; -- 서비스 테이블

DELETE FROM SERVICE;

SELECT * FROM SERVICE;


-------------------------------------------------
SELECT * FROM EMPLOYEE; -- 사원 테이블
SELECT * FROM CUSTOMER; -- 고객 테이블
SELECT * FROM CAR; -- 자동차 테이블
SELECT * FROM SERVICE; -- 서비스 테이블

-- 가) 월급이 200만원과 300만원 사이인 직원의 이름, 주소, 연락처를 출력하라. 
SELECT EMP_NAME AS "직원이름",
       EMP_ADDRESS AS "직원주소",
       EMP_TELNO AS "직원연락처"
  FROM EMPLOYEE
 WHERE EMP_SALARY BETWEEN 2000000 
                      AND 3000000;

쿼리 결과


-- 가-2) 다음 직원의 월급을 수정하시오.
-- 임민우 월급 2400000
UPDATE EMPLOYEE
   SET EMP_SALARY = 2400000
 WHERE EMP_NAME = '임민우';
-- 곽재우 월급 3200000
UPDATE EMPLOYEE
   SET EMP_SALARY = 3200000
 WHERE EMP_NAME = '곽재우';
-- 윤하늘 월급 2600000
UPDATE EMPLOYEE
   SET EMP_SALARY = 2600000
 WHERE EMP_NAME = '윤하늘';
-- 강서주 월급 4000000
UPDATE EMPLOYEE
   SET EMP_SALARY = 4000000
 WHERE EMP_NAME = '강서주';
-- 이경민 월급 2300000
UPDATE EMPLOYEE
   SET EMP_SALARY = 2300000
 WHERE EMP_NAME = '이경민';
 
SELECT * FROM EMPLOYEE;

쿼리 결과


-------------------------------------------------

-- 나) 고객 ‘C007’이 수리를 요청한 목록을 수리비를 내림차순으로 출력하라
SELECT a.CST_NO AS "고객번호",
       a.CST_NAME AS "고객이름",
       b.SVC_PRICE AS "수리비"
  FROM CUSTOMER a, SERVICE b
 WHERE 1=1
   AND a.CST_NO = b.CST_NO
   AND b.CST_NO = 'C007'
 ORDER BY b.SVC_PRICE DESC;

쿼리 결과


-------------------------------------------------

-- 다) 카센터의 직원수와 직원의 평균급여를 출력하라
SELECT COUNT(*) AS "직원수",
       AVG(EMP_SALARY) AS "평균급여"
  FROM EMPLOYEE;

쿼리 결과


-------------------------------------------------

-- 라) 30만원 이상 수리한 자동차 현황을
--    서비스번호, 자동차번호, 메이커, 수리금액, 고객번호, 고객명, 연락처 순으로 조회하시오.
SELECT a.CST_NO AS "서비스번호",
       a.CAR_NO AS "자동차번호",
       b.CAR_MAKER AS "메이커",
       a.SVC_PRICE AS "수리금액",
       c.CST_NO AS "고객번호",
       c.CST_NAME AS "고객명",
       c.CST_TELNO AS "연락처"
  FROM SERVICE a, CAR b, CUSTOMER c
 WHERE 1=1
   AND a.CAR_NO = b.CAR_NO
   AND a.CST_NO = c.CST_NO
   AND a.SVC_PRICE >= 300000;

쿼리 결과


-------------------------------------------------

-- 마) 2023년도 수리된 자동차현황을
--    서비스번호, 자동차번호, 수리시간, 수리금액을 수리금액이 큰 순으로 조회하시오.
SELECT SVC_NO AS "서비스번호",
       CAR_NO AS "자동차번호",
       SVC_TIME AS "수리시간",
       SVC_PRICE AS "수리금액"
  FROM SERVICE
 ORDER BY SVC_PRICE DESC;

쿼리 결과


-- 바) 금액기준으로 가장 큰 금액수리를 요청한 고객의 고객번호, 금액을 조회하시오.
SELECT MAX(SVC_PRICE) FROM SERVICE;

SELECT CST_NO AS "고객번호",
       SVC_PRICE AS "금액"
  FROM SERVICE
 WHERE SVC_PRICE = (SELECT MAX(SVC_PRICE) FROM SERVICE);
 
SELECT CST_NO AS "고객번호",
       (SELECT MAX(SVC_PRICE) FROM SERVICE) AS "금액"
  FROM SERVICE
 WHERE ROWNUM = 1;
 
SELECT ASD AS "고객번호",
       MPR AS "금액"
  FROM (
           SELECT CST_NO ASD,
                  MAX(SVC_PRICE) AS MPR
             FROM SERVICE
            GROUP BY CST_NO
            ORDER BY MAX(SVC_PRICE) DESC
        )
 WHERE ROWNUM = 1;

쿼리 결과(3개 모두 동일)

 

'대덕인재개발원 > 대덕인재개발원_Oracle DB' 카테고리의 다른 글

230718 SQL 강의  (0) 2023.07.18
230717 SQL 강의  (0) 2023.07.17
230713 SQL 강의  (0) 2023.07.17
230712 SQL 강의  (2) 2023.07.14
230711 SQL 강의  (0) 2023.07.13