MySQL의 UPDATE 쿼리는 테이블의 데이터를 수정하는 데 사용되는 DML 문입니다. UPDATE 쿼리에는 SET 및 WHERE 절이 필요합니다. SET 절은 WHERE 절에 지정된 컬럼의 값을 변경하는 데 사용됩니다.
MySQL의 JOIN 절은 단일 쿼리 내에서 여러 테이블을 조인하여 데이터를 검색하는 문에 사용됩니다.
UPDATE JOIN은 교차 테이블 업데이트를 수행하는 데 사용되는 MySQL 문입니다. 즉, JOIN 절 조건이 있는 다른 테이블을 사용하여 한 테이블을 업데이트할 수 있음을 의미합니다. . 이 쿼리는 다음을 기반으로 둘 이상의 테이블이 조인된 데이터를 업데이트하고 변경합니다. 주요한 열쇠와 외국의 키와 지정된 조인 조건. 다음을 사용하여 한 번에 하나 또는 여러 개의 열을 업데이트할 수 있습니다. 업데이트 쿼리 .
참고: MySQL UPDATE JOIN 문은 버전 4.0 이상에서 지원됩니다.
통사론
다음은 레코드를 MySQL 테이블로 수정하는 UPDATE JOIN 문의 기본 구문입니다.
UPDATE Tab1, Tab2, [INNER JOIN | LEFT JOIN] Tab1 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Condition;
위의 MySQL UPDATE JOIN 구문에서:
먼저 기본 테이블(Tab1)과 UPDATE 절 이후의 다른 테이블(tab2)이라는 두 테이블을 지정했습니다. UPDATE 절 뒤에는 적어도 하나의 테이블을 지정해야 합니다. 다음으로 유형을 지정했습니다. JOIN 절 , 즉 INNER JOIN 또는 왼쪽 조인 , 이는 UPDATE 절 바로 뒤에 나타나고 ON 키워드 뒤에 지정된 Join 술어가 나타납니다. 그런 다음 테이블 수정을 위해 Tab1 및/또는 Tab2의 열에 새 값을 할당해야 합니다. 마지막으로 WHERE 절 조건은 업데이트할 행을 제한하는 데 사용됩니다.
UPDATE JOIN은 MySQL에서 어떻게 작동하나요?
UPDATE JOIN 작업 프로세스 MySQL 위의 구문에 설명된 것과 동일합니다. 그러나 때때로 조인을 포함하지 않고 이 쿼리만으로 교차 테이블 업데이트를 수행하는 경우가 있습니다. 다음 구문은 다른 테이블을 사용하여 한 테이블을 업데이트하는 또 다른 방법입니다. :
웜퍼스 월드
UPDATE Tab1, Tab2, SET Tab1.C2 = Tab2.C2, Tab2.C3 = expression WHERE Tab1.C1 = Tab2.C1 AND condition;
위의 UPDATE 문은 INNER JOIN 또는 LEFT JOIN 절을 사용하는 UPDATE JOIN과 동일한 결과를 생성합니다. 이는 위 구문을 위에 표시된 UPDATE JOIN 구문으로 다시 작성할 수 있음을 의미합니다.
UPDATE Tab1,Tab2 INNER JOIN Tab2 ON Tab1.C1 = Tab2.C1 SET Tab1.C2 = Taba2.C2, Tab2.C3 = expression WHERE condition
MySQL 테이블에서 UPDATE JOIN 문이 어떻게 작동하는지 이해하기 위해 몇 가지 예를 들어 보겠습니다.
업데이트 조인 예
먼저, 다음과 같은 두 개의 테이블을 생성합니다. 성능 그리고 직원 , 두 테이블 모두 외래 키를 통해 관련되어 있습니다. 여기서 '성능'은 상위 테이블 , '직원'은 어린이 테이블 . 다음 스크립트는 해당 레코드와 함께 두 테이블을 모두 생성합니다.
표: 성능
CREATE TABLE Performance ( performance INT(11) NOT NULL, percentage FLOAT NOT NULL, PRIMARY KEY (performance) );
그런 다음 INSERT 문을 사용하여 테이블의 레코드를 채웁니다.
INSERT INTO Performance (performance, percentage) VALUES(101,0), (102,0.01), (103,0.03), (104,0.05), (105,0.08);
그런 다음 아래 이미지와 같이 SELECT 쿼리를 실행하여 데이터를 확인합니다.
표: 직원
CREATE TABLE Employees ( id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, performance INT(11) DEFAULT NULL, salary FLOAT DEFAULT NULL, CONSTRAINT fk_performance FOREIGN KEY (performance) REFERENCES Performance (performance) );
그런 다음 INSERT 문을 사용하여 테이블의 레코드를 채웁니다.
INSERT INTO Employees (name, performance, salary) VALUES('Mary', 101, 55000), ('John', 103, 65000), ('Suzi', 104, 85000), ('Gracia', 105, 110000), ('Nancy Johnson', 103, 95000), ('Joseph', 102, 45000), ('Donald', 103, 50000);
그런 다음 아래 이미지와 같이 SELECT 쿼리를 실행하여 데이터를 확인합니다.
INNER JOIN 예제를 사용한 UPDATE JOIN
우리가 업데이트하고 싶다고 가정하자 성과에 따라 직원의 급여를 지급합니다. . UPDATE INNER JOIN 문을 사용하여 Employees 테이블에서 직원의 급여를 업데이트할 수 있습니다. 백분율 성능 테이블에 저장됩니다.
위의 표에서 우리는 성능 필드를 사용하여 직원 및 성과 테이블에 조인합니다. 아래 쿼리를 참조하세요.
UPDATE Employees e INNER JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * percentage;
위 명령문을 실행하면 아래 출력이 표시되며 직원의 급여 열이 성공적으로 업데이트된 것을 확인할 수 있습니다.
이 쿼리가 MySQL에서 어떻게 작동하는지 살펴보겠습니다. 쿼리에서는 UPDATE 절 뒤에 Employees 테이블만 지정했습니다. 두 테이블 모두가 아닌 Employees 테이블에서만 레코드를 변경하려고 하기 때문입니다.
쿼리는 'Performance' 테이블의 성과 열과 비교하여 'Employees' 테이블의 각 행에 대한 성과 열 값을 확인합니다. 일치하는 성과 열을 얻으면 성과 테이블의 백분율을 가져와 직원 테이블의 급여 열을 업데이트합니다. UPDATE JOIN 쿼리에 WHERE 절을 지정하지 않았기 때문에 이 쿼리는 Employees 테이블의 모든 레코드를 업데이트합니다.
LEFT JOIN을 사용한 UPDATE JOIN 예
LEFT JOIN을 사용한 UPDATE JOIN을 이해하려면 먼저 Employees 테이블에 두 개의 새 행을 삽입해야 합니다.
INSERT INTO Employees (name, performance, salary) VALUES('William', NULL, 73000), ('Rayan', NULL, 92000);
이들 직원은 신입사원이므로 성과기록을 확인할 수 없습니다. 아래 출력을 참조하세요.
새로 입사한 직원의 급여를 업데이트하고 싶은 경우 , UPDATE INNER JOIN 쿼리를 사용할 수 없습니다. 이는 성능 테이블에서 성능 데이터를 사용할 수 없기 때문입니다. 따라서 이러한 요구를 충족하기 위해 UPDATE LEFT JOIN 문을 사용할 것입니다.
MySQL의 UPDATE LEFT JOIN 문은 다른 테이블의 해당 행에 레코드가 없을 때 테이블의 행을 업데이트하는 데 사용됩니다.
예를 들어 , 새로 고용된 직원의 급여를 2.5% 인상하려면 다음 명령문을 사용하여 이를 수행할 수 있습니다.
UPDATE Employees e LEFT JOIN Performance p ON e.performance = p.performance SET salary = salary + salary * 0.025 WHERE p.percentage IS NULL;
위 쿼리를 실행하면 아래 이미지와 같이 출력되며, 신입사원의 급여가 성공적으로 업데이트된 것을 확인할 수 있습니다.
이 기사에서 우리는 JOIN 절 조건을 사용하여 한 테이블의 기존 데이터를 다른 테이블의 새 데이터로 변경할 수 있는 MySQL Update Join 문을 배웠습니다. 이 쿼리는 INNER JOIN 또는 LEFT JOIN 절을 사용하여 WHERE 절에 지정된 특정 열을 수정해야 할 때 유용합니다.