mysql update 문 예제

업데이트 하는 동안 두 개의 테이블을 결합할 수도 있습니다. 단일 update 문을 사용하여 두 테이블의 값을 동시에 업데이트할 수도 있습니다. 다음 기본 예제에서 이 업데이트 명령은 직원 테이블의 모든 행에 대해 Dept 열값을 기술로 설정합니다. 다음 출력에서 볼 수 있듯이 위의 업데이트 명령은 위의 WHERE 조건과 일치하는 마지막 세 레코드에 대해 두 개의 열 값을 업데이트했습니다. CASE와 마찬가지로 IF 조건을 사용하여 열 값을 적절하게 업데이트할 수도 있습니다. UPDATE는 실제로 변경된 행 수를 반환합니다. mysql_info() C API 함수는 일치하고 업데이트된 행 수와 업데이트 중에 발생한 경고 수를 반환합니다. 여러 테이블 구문의 경우 UPDATE는 조건을 충족하는 table_references에 지정된 각 테이블의 행을 업데이트합니다. 각 일치 행은 조건과 여러 번 일치하는 경우에도 한 번 업데이트됩니다. 다중 테이블 구문의 경우 ORDER BY 및 LIMIT를 사용할 수 없습니다.

제한에 의한 MySQL 업데이트 순서는 업데이트 문을 어느 정도 제한하는 데 사용됩니다. 이름으로 정렬된 직원 테이블의 처음 5행의 주소를 변경한다고 가정합니다. 테이블 수준 잠금을 사용하는 MyISAM과 같은 저장소 엔진을 사용하여 분할된 테이블의 UPDATE는 테이블 분할 열이 업데이트되지 않는 한 UPDATE 문 WHERE 절과 일치하는 행을 포함하는 파티션만 잠급니다. (행 수준 잠금을 사용하는 InnoDB와 같은 저장소 엔진의 경우 파티션잠금이 수행되지 않습니다.) 자세한 내용은 분할 및 잠금을 참조하십시오. 위의 WHERE 조건과 일치하는 레코드는 4개뿐입니다. 그러나 기술 부서에 속한 직원 레코드 중 하나가 급여 분야에서 NULL 값을 가졌기 때문에 아래와 같이 세 개의 레코드만 업데이트되었습니다. 따라서 위의 급여 +500 표현식도 NULL이되었고 특정 레코드를 업데이트하지 않았습니다. 먼저 아래와 같이 DEFAULT 키워드를 사용하여 급여 열을 기본값으로 업데이트해 보겠습니다.

MySQL UPDATE 구문 예제의 경우 직원 테이블 목록에서 Dany의 휴대폰 번호를 08112810848로 변경합니다. 여러 테이블을 포함하는 UPDATE 작업을 수행할 수도 있습니다. 그러나 여러 테이블 업데이트에서는 ORDER BY 또는 LIMIT를 사용할 수 없습니다. table_references 절에는 조인과 관련된 테이블이 나열됩니다. 해당 구문은 섹션 13.2.10.2, „JOIN 구문“에 설명되어 있습니다. 다음은 예제에서 기존 직원 테이블과 함께 다음 복리후생 테이블을 사용합니다. 식에서 업데이트할 테이블의 열에 액세스하는 경우 UPDATE는 열의 현재 값을 사용합니다. 예를 들어 다음 문은 col1을 현재 값보다 하나 더 설정합니다.

이로 인해 „마지 잔해“는 „마지 플랑드르“가 됩니다. 아래와 같이 업데이트된 WHERE 조건과 일치하는 레코드는 두 개뿐입니다.