HOWTO · MySQL
MySQL에서 하나의 쿼리로 여러 테이블 업데이트
이 기사에서는 MySQL에서 하나의 쿼리로 여러 테이블을 업데이트하는 방법을 소개합니다.
이 페이지의 내용
사용자가 논리적으로 관련된 테이블에서 동시 업데이트를 수행하려는 경우가 있을 수 있습니다. 이러한 논리적으로 관련된 테이블은 일부 속성을 통해 서로 연결됩니다.
MySQL에서 하나의 쿼리로 여러 테이블을 업데이트할 때의 이점
테이블 내의 유사한 속성은 업데이트 쿼리를 생성하는 데 사용됩니다. 업데이트 쿼리는 조건에 따라 서로 다른 테이블에서 여러 행 업데이트를 수행합니다.
여러 테이블 업데이트 쿼리는 유사한 상황이 발생할 때 적합합니다. 이 다중 테이블 업데이트 쿼리를 사용하면 다음과 같은 이점이 있습니다.
- 이렇게 하면 각 테이블에서 개별 업데이트를 수행하는 대신 한 번에 행 업데이트가 수행됩니다.
- 이것은 또한 다른 테이블의 항목을 업데이트하는 전체 시간을 줄여줍니다.
- 이렇게 하면 테이블의 일관성 없는 업데이트 가능성이 줄어듭니다.
- 주어진 시간에 모든 테이블에서 유사한 응답.
UPDATE 키워드를 사용하여 MySQL에서 하나의 쿼리로 여러 테이블 업데이트
다중 테이블 업데이트 쿼리에서는 조건을 만족하는 각 레코드가 업데이트됩니다. 조건이 여러 번 일치하더라도 행은 한 번만 업데이트됩니다.
여러 테이블을 업데이트하는 구문은 ORDER BY 및 LIMIT 키워드와 함께 사용할 수 없습니다.
UPDATE 키워드 구문:
UPDATE table1, table2, ...
SET column1 = value1,
column2 = value2,
...
[WHERE conditions]
다중 업데이트는 MySQL 언어에 있는 결합된 키워드가 아닙니다. 구문은 join 키워드와 같이 둘 이상의 테이블을 그룹화하는 데 도움이 되는 다양한 키워드의 조합으로 구성됩니다.
조인 유형은 한 번에 둘 이상의 테이블을 업데이트하는 단일 쿼리를 만드는 데 사용됩니다. 한 번에 여러 테이블을 업데이트하여 이를 이해합시다.
library 및 stu_book 테이블이라는 두 개의 테이블을 고려하십시오. 그리고 도서관에서 학생에게 책이 발행되는 경우를 생각해 보십시오.
도서관에 있는 책의 수는 감소하는 반면, 학생이 있는 책의 수는 증가합니다. 그리고 그것은 두 개의 개별 호출이 필요한 시나리오입니다.
RDBMS 테이블의 개별 업데이트를 피하기 위해 단일 쿼리로 두 테이블의 행을 업데이트합니다. 다음은 업데이트 호출 전에 실행할 명령문 목록입니다.
테이블에 대한 실제 쿼리 이전의 쿼리 목록:
-
library및stu_book이라는 두 개의 엔티티를 작성하십시오. -
둘에 대한 스키마는 아래에서 공유됩니다.
-
아래와 같이 표에 몇 가지 공통 값을 개별적으로 삽입합니다.
-
두 테이블에서 동시에 증가 또는 감소를 수행하여 사용 사례를 구현해 보십시오.
MySQL 문을 실행하기 위한 쿼리:
UPDATE library l, stu_book s
SET l.book_count = l.book_count - 2,
s.book_count = s.book_count + 2
WHERE l.id = s.book_id;
위의 쿼리에서 내부적으로 내부 조인은 두 테이블을 결합하고 테이블에 대한 제약 조건을 확인한 후 결합된 테이블에 대해 작동합니다. 키워드를 지정하지 않으면 내부 조인이 적용됩니다.
외부 조인, 오른쪽 외부 조인과 같은 조인은 사용자가 올바른 키워드를 사용해야 합니다. 조인은 그룹화되는 두 테이블에 유사/일치 속성이 있는 경우에만 수행할 수 있습니다.
SET 키워드는 UPDATE 키워드와 함께 사용되어 기존 행에 새 값을 설정합니다. 새 데이터를 덮어써 이전 값을 재정의합니다.
여기 세트는 stu_book 테이블의 도서 수를 업데이트하고 library 도서 수에서 동일한 수의 수가 감소합니다.
두 테이블의 모든 행에 대해 개수가 업데이트되지 않습니다. 대신 WHERE 키워드에 의해 제한이 유지됩니다.
WHERE 키워드는 행의 실제 필터링을 수행합니다. 키워드는 테이블의 조건을 확인한 후 행을 필터링합니다.
여기에서 이 키워드는 library_id가 stu_book 테이블의 book_id와 일치해야 한다고 말합니다.
출력에는 두 테이블 모두에서 영향을 받는 총 행 수에 대한 결과가 나열됩니다. 다음은 영향을 받는 행 수를 확인하는 출력입니다.
Query OK, 2 rows affected (0.02 sec)
Rows matched: 2 Changed: 2 Warnings: 0
다음은 로컬 실행 환경 또는 명령 프롬프트에서 위 쿼리에 대한 최종 출력입니다.
로컬 실행 스크린샷: