더북(TheBook)

코드 10-16을 보면 UPDATE 다음에 emp_update1을 명시합니다. 이는 emp_update1 테이블을 대상으로 데이터를 수정하겠다는 뜻입니다. 그럼 어떤 데이터를 수정할까요? SET 다음에 emp_name = CONCAT(emp_name, '2')라고 기술했으므로 emp_name 칼럼의 값을 등호(=) 오른쪽 값으로 바꾼다는 뜻입니다. CONCAT(emp_name, '2')는 emp_name 칼럼의 값에 ‘2’라는 문자열을 붙여 반환하므로 결국 emp_name 칼럼의 값을 기존 칼럼 값에 ‘2’를 붙인 값으로 수정합니다. 마찬가지로 salary = salary + 100은 salary 칼럼의 값을 기존 칼럼 값에 100을 더한 값으로 수정한다는 뜻입니다. 마지막으로, WHERE 절이 없으므로 emp_update1 테이블에 있는 모든 로우의 emp_name과 salary 칼럼 값을 수정합니다. 결과를 보면 총 11건의 데이터 모두 emp_name과 salary 칼럼의 값이 변경됐습니다.

코드 10-17

UPDATE emp_update1
   SET emp_no = emp_no + 1
 WHERE emp_no >= 1018 ;

실행결과

코드 10-17을 실행했더니 오류가 발생했습니다. 오류 원인을 파헤치기 전에 먼저 이 문장이 어떤 값을 변경하려고 했는지 살펴보죠. 문장을 보면 emp_updat1 테이블의 emp_no 칼럼을 원래 있던 값에 1을 더한 값으로 수정하려고 합니다. WHERE 절의 조건을 보니 1018보다 크거나 같은 건이므로 1018과 1019, 두 건이 대상입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.