개요
구문 형식
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';
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;
개발부의 empNo, com, excel, word만 출력
SELECT empNo, com, excel, word
FROM emp_score
WHERE empNo IN (SELECT empNo FROM emp WHERE dept = '개발부');
기본 형식
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 쓰자 .