UPDATE 구문 - 24.09.11

수호천사임다·2024년 9월 13일

오라클

목록 보기
24/53

개요

  • 테이블에 저장된 데이터를 수정하기 위해서 사용하는 명령문이다.
  • WHERE 절을 사용하지 않을 경우는 테이블에 있는 모든 행이 수정된다.
  • 컬럼에 제약 조건이 설정된 경우, 제약조건에 위반되는 값으로 수정하면 오류가 발생한다.
  • UPDATE 문을 사용하여 데이터를 수정 후에 COMMIT 또는 ROLLBACK 명령을 사용하여 트랜잭션을 완료해야 한다.
  • subquery를 이용한 하나의 컬럼 UPDATE
  • 업데이트 건수가 많을수록 좋지않다..

구문 형식

UPDATE 테이블명 SET 컬럼명1 = expr1 [, 컬럼명2 = expr2, ...] WHERE condition];
수정 할 컬럼과 subquery의 컬럼 개수 및 데이터 타입이 일치해야 하며, subquery의 결과는 하나의 행만 가능하다.
UPDATE emp_score SET excel = 100; -- 이렇게 할 경우 모든 excel 값 변경이 된다.

UPDATE emp_score SET com = 90, excel = 95 WHERE empNo = '1002';

문제1

emp_score: empNo, com, excel, word, tot, avg, grade
tot = com + excel + word
avg = (com + excel + wrod) / 3
grade : 모든 과목의 점수가 40 이상이고 평균 60 이상이면 합격,
평균이 60 이상이고 한과목이라도 40 미만이면 과학 나머지는 불합격
grade를 계산할때는 평균을 반올림 하지 않는다.

SELECT empNo, com, excel, word, (com + excel + word) tot, ROUND((com + excel + word) / 3, 1) ave,
    CASE
        WHEN com >= 40 AND excel >= 40 AND word >= 40 AND (com + excel + word) / 3 >= 60 THEN '합격'
        WHEN (com + excel + word) / 3 >= 60 THEN '과락'
    ELSE '불합격'
    END grade
FROM emp_score;

문제2

개발부의 empNo, com, excel, word만 출력

SELECT empNo, com, excel, word
FROM emp_score
WHERE empNo IN (SELECT empNo FROM emp WHERE dept = '개발부');

subquery를 이용한 여러 컬럼 UPDATE

기본 형식

UPDATE 테이블명 SET colum = (subquery) [WHERE condition];
수정 할 컬럼과 subquery의 컬럼 개수 및 데이터 타입이 일치해야 하며, subquery의 결과는 하나의 행만 가능 한다.

서브쿼리로 수정

UPDATE emp_score SET (excel, word) = (SELECT 100, 100 FROM dual)
WHERE empNo = '1001';

UPDATE emp_score SET excel = 100, word = 100
WHERE empNo = '1001';

UPDATE emp_score SET empNo = '2001' -- 무겨렁 제약조건 부모키 위반 
WHERE empNo = '1001';

제약조건을 위반하면 수정 할 수 없다.
-- FROM 쓰고 WHERE 쓰고 GROUP BY 쓰고 HAVING 쓰고 SELECT 쓰자 .

0개의 댓글