mysql update statement tutorial update query syntax examples
이 튜토리얼은 쿼리 구문 및 예제와 함께 MySQL UPDATE 문을 설명합니다. 또한 MySQL 업데이트 테이블 명령의 다양한 변형을 학습합니다.
다른 데이터베이스와 마찬가지로 우리는 항상 테이블의 기존 데이터를 업데이트하거나 수정하거나 변경해야합니다. MySQL에는 테이블의 데이터를 업데이트하거나 수정하는 데 사용할 수있는 UPDATE 문이 있습니다.
이 명령을 사용하여 하나 이상의 필드를 업데이트 할 수 있습니다. 한 번에 특정 테이블의 값을 업데이트 할 수 있습니다. WHERE 절을 사용하여 특히 테이블에서 특정 행을 업데이트해야 할 때 사용되는 조건을 지정할 수 있습니다.
계속 진행하기 전에 MySQL 버전 8.0을 사용하고 있습니다. 다음에서 다운로드 할 수 있습니다. 여기.
학습 내용 :
MySQL UPDATE 테이블 구문
UPDATE table_name SET column1 = new_value1, column2 = new_value2, ... WHERE condition; 구문 설명 :
- 구문은 키워드 'UPDATE'로 시작하여 수행 할 활동 유형에 대해 MySQL 서버에 알립니다. 이것은 필수 키워드이며 생략 할 수 없습니다.
- 다음은 업데이트 작업을 수행해야하는 테이블의 이름입니다. 이것은 필수이며 생략 할 수 없습니다.
- 셋째, 키워드 SET입니다. 이 키워드는 열 이름에 대해 업데이트 할 값에 대해 MySQL Server에 알립니다. 이것은 필수 키워드이며 생략 할 수 없습니다.
- 다음은 해당 값과 함께 업데이트 할 열 이름입니다. 이것은 또한 필수이며 생략 할 수 없습니다.
- 그런 다음 UPDATE 작업이 적용되어야하는 대상 행의 수를 제한하거나 필터링하는 WHERE 조건이 발생합니다. WHERE도 키워드이지만 선택 사항입니다.
그러나 WHERE 절은 중요합니다. 언급되지 않거나 조건이 올바르게 설정되지 않은 경우 테이블이나 필수가 아닌 행이 업데이트되지 않습니다.
UPDATE 테이블 문의 수정 자
아래 나열된 것은 UPDATE 문의 수정 자입니다.
낮은 우선 순위: 이 수정자는 테이블에서 읽는 연결이 없을 때까지 업데이트를 지연하도록 MySQL 엔진에 알립니다.
무시 : 이 수정자는 오류가 있어도 UPDATE 작업을 계속하도록 MySQL 엔진에 알립니다. 오류를 일으킨 행에 대해서는 업데이트 조치가 수행되지 않습니다.
MySQL 업데이트 예
아래는 MySQL에서 생성 된 샘플 테이블입니다.
스키마 이름 : 태평양
테이블 이름 : 직원
열 이름 :
- empNum – 직원 번호에 대한 정수 값을 보유합니다.
- lastName – 직원의성에 대한 varchar 값을 보유합니다.
- firstName – 직원의 이름에 대한 varchar 값을 보유합니다.
- 이메일 – 직원의 이메일 ID에 대한 varchar 값을 보유합니다.
- deptNum – 직원이 속한 부서 ID에 대한 varchar를 보유합니다.
- 급여 – 각 직원에 대한 급여의 소수 값을 보유합니다.

스키마 이름 : 태평양
테이블 이름 : 부서
열 이름 :
- deptNum – 조직 내 부서 ID에 대한 varchar를 보유합니다.
- city – 부서가 근무하는 도시의 이름을 보유합니다.
- country – 도시에 해당하는 국가 이름을 보유합니다.
- bonus – 보너스의 백분율 값을 보유합니다.

MySQL UPDATE 테이블 명령
# 1) MySQL 업데이트 단일 열
이제 업데이트 할 레코드를 찾아 보겠습니다. 먼저 UPDATE 키워드를 사용하여 단일 열을 업데이트해야하는 시나리오를 살펴 보겠습니다.
여기 직원 번호가 1008 인 직원이 있습니다.
쿼리 및 해당 결과는 다음과 같습니다.

UPDATE 키워드를 사용하여이 직원의 이메일 ID를 ob@gmail.com에서 oliver.bailey@gmail.com으로 업데이트 해 보겠습니다.
최신 정보: 이 키워드는 MySQL 엔진에 문이 테이블 업데이트에 관한 것임을 알립니다.
세트: 이 절은이 키워드 뒤에 언급 된 열 이름의 값을 새 값으로 설정합니다.
어디: 이 절은 업데이트해야하는 특정 행을 지정합니다.

UPDATE 문을 실행 한 후 출력에 문 실행과 관련된 통계가 표시됩니다.
다음은 표시되는 세부 정보입니다.
- 실행 된 문입니다.
- 업데이트 된 행 수와 경고가있는 경우를 표시하는 메시지입니다.
UPDATE 문의 출력을 확인하기 위해 SELECT 문을 다시 실행하여 이메일 ID의 변경 사항을 확인합니다.

이전 테이블 스냅 샷 :
| empNum | 이름 | lastName | 이메일 | deptNum |
|---|---|---|---|---|
| 7 | 로마 | 이탈리아 | ||
| 1008 | 올리버 | 외벽 | ob@gmail.com | 삼 |
질문:
UPDATE employees SET email = “oliver.bailey@gmail.com” WHERE empNum = 1008 AND email = “ob@gmail.com” ; 이후 테이블 스냅 샷 :
| empNum | 이름 | lastName | 이메일 | deptNum |
|---|---|---|---|---|
| 1008 | 올리버 | 외벽 | oliver.bailey@gmail.com | 삼 |
# 2) MySQL 업데이트 여러 열
UPDATE 문을 사용하여 둘 이상의 열을 업데이트하는 구문은 단일 열을 업데이트하는 구문과 동일합니다. 하나의 SET 문에는 설정해야하는 새 값과 함께 쉼표로 구분 된 여러 열 이름이 있습니다.
업데이트해야하는 행을 살펴 보겠습니다. 직원 번호가 1003 인 행.

여기서는 lastName을 'Mary'에서 'Margaret'으로 업데이트 한 다음 ml@gmail.com의 이메일 ID를 margaret.langaley@gmail.com으로 업데이트합니다.
다음은 UPDATE 쿼리입니다. 쉼표로 구분 된 열 이름을 관찰하십시오.

위의 실행 결과는 이전 사례와 동일한 통계를 보여줍니다.
다음은 UPDATE 문 실행 후 동일한 레코드에 대한 출력입니다.

이전 테이블 스냅 샷 :
PC에서 mkv 파일을 재생하는 방법
| empNum | 이름 | lastName | 이메일 | deptNum |
|---|---|---|---|---|
| 1003 | 메리 | Langley | ml@gmail.com | 두 |
질문:
UPDATE employees SET firstName = “Margaret”, email = “margaret.lagaley@gmail.com” WHERE empNum = 1003 AND firstName = “Mary” AND email = “ml@gmail.com” ; 이후 테이블 스냅 샷 :
| empNum | 이름 | lastName | 이메일 | deptNum |
|---|---|---|---|---|
| 1003 | 마가렛 | Langley | margaret.langley@gmail.com | 삼 |
# 3) REPLACE 기능으로 MySQL 업데이트
REPLACE 함수를 사용하여 테이블의 행을 업데이트하는 방법에 대해 자세히 살펴 보겠습니다. 다음은 업데이트하려는 대상 레코드입니다.
아래 레코드는 직원 번호 1010입니다. 이메일 ID를 ja@gmail.com에서 jacob.armstrong@gmail.com으로 업데이트하도록 타겟팅합니다.

이메일 ID를 업데이트하는 REPLACE 함수와 함께 다음 UPDATE 쿼리를 사용하겠습니다.

다음은 REPLACE 함수에서 전달되는 매개 변수입니다. 3 개의 매개 변수는 모두 본질적으로 위치 적입니다. 즉, 매개 변수의 순서는 변경할 수 없습니다.
1성매개 변수 – 이메일 ID의 이름을 포함합니다.
두nd매개 변수 – 변경할 FROM 이메일 ID를 포함합니다.
삼rd매개 변수 – 새 값인 TO 이메일 ID를 포함합니다.
다음은 UPDATE 문의 실행 후 테이블 스냅 샷입니다.

이전 테이블 스냅 샷 :
| empNum | 이름 | lastName | 이메일 | deptNum |
|---|---|---|---|---|
| 1010 년 | Jacob | 암스트롱 | ja@gmail.com | 4 |
질문:
UPDATE employees SET email = REPLACE(email, “ja@gmail.com”, jacob.armstrong@gmail.com) WHERE empNum = 1010 ; 이후 테이블 스냅 샷 :
| empNum | 이름 | lastName | 이메일 | deptNum |
|---|---|---|---|---|
| 1010 년 | Jacob | 암스트롱 | jacob.armstrong@gmail.com | 4 |
# 4) SELECT 문을 사용한 MySQL UPDATE
이 유형의 UPDATE에서는 업데이트 할 열의 새 값을 하위 쿼리의 SELECT 문에 의해 가져옵니다. 자, 여기 '직원'테이블에서 예를 들어 보겠습니다. 다음은 업데이트하려는 대상 레코드입니다.


이 경우 부서 테이블을 사용하여 부서 번호, 즉 deptNum 열을 업데이트합니다. 부서 테이블을 보면 deptNum = 5가 베를린에 해당합니다. 이 직원을 deptNum = 2의 Charlotte로 이동하겠습니다.
이 작업을 수행하기 위해 다음 UPDATE 문이 사용됩니다.

UPDATE 문의 출력을 확인하기 위해 고르다 성명서.

위와 같이 deptNum 열의 값이 '2'로 업데이트되었습니다.
이전 테이블 스냅 샷 :
| empNum | 이름 | lastName | 이메일 | deptNum |
|---|---|---|---|---|
| 1005 | 베드로 | 읽다 | pl@gmail.com | 5 |
| deptNum | 시티 | 국가 |
|---|---|---|
| 1 | 뉴욕 | 미국 |
| 두 | 샬럿 | 미국 |
| 삼 | 시카고 | 미국 |
| 4 | 런던 | 영국 |
| 5 | 베를린 | 독일 |
| 6 | 뭄바이 | 인도 |
질문:
이후 테이블 스냅 샷 :
empNum 이름 lastName 이메일 deptNum 7 로마 이탈리아 없는 1005 베드로 읽다 pl@gmail.com 두
# 5) MySQL UPDATE 다중 행
때로는 값이 다른 여러 행에 대해 하나 이상의 열을 업데이트해야하는 요구 사항에 직면 할 수 있습니다.
예를 들어 우리는 특정 금액의 보너스 부서를 현명하게 제공하고자합니다. 즉, 부서의 모든 직원은 특정 금액의 보너스를 받아야합니다.
일반 구문은 다음과 같습니다.
UPDATE TAB1 SET COL2 = CASE WHEN condition1 THEN value1 WHEN condition2 THEN value2 …. ELSE result1 END; 예를 들어이를 설명하기 위해 부서 테이블에 열을 하나 더 추가 할 수 있습니다. 부서 테이블에 '보너스'열을 추가합니다. 아이디어는 각 부서에 보너스 비율을 할당하고 각 부서에 해당하는 비율만큼 직원의 급여를 인상하는 것입니다.
이를 위해 다음 ALTER 문을 실행하여 열을 추가합니다.
ALTER TABLE departments ADD COLUMN bonus decimal(5,2);다음은 위의 변경 사항을 게시 한 테이블 구조입니다. 새 열이 추가됩니다. 없는 가치로.

다음으로 각 부서의 보너스 비율을 업데이트하는 UPDATE 쿼리를 작성해 보겠습니다.

위의 명령문을 실행 한 후 다음은 Bonus 열의 값이 업데이트 된 스냅 샷입니다.

이전 테이블 스냅 샷 :
deptNum 시티 국가 보너스 1 뉴욕 미국 없는 두 샬럿 미국 없는 삼 시카고 미국 없는 4 런던 영국 없는 5 베를린 독일 없는 6 뭄바이 인도 없는
질문:
UPDATE departments SET bonus = CASE WHEN deptNum = 1 THEN 3.00 WHEN deptNum= 2 THEN 5.00 WHEN deptNum= 3 THEN 8.00 WHEN deptNum= 4 THEN 10.00 WHEN deptNum= 5 THEN 13.00 WHEN deptNum= 6 THEN 15.00 WHEN deptNum= 7 THEN 18.00 END; 이후 테이블 스냅 샷 :
deptNum 시티 국가 보너스 7 로마 이탈리아 18 1 뉴욕 미국 삼 두 샬럿 미국 5 삼 시카고 미국 8 4 런던 영국 10 5 베를린 독일 13 6 뭄바이 인도 열 다섯
# 6) INNER JOIN 키워드를 사용한 MySQL 업데이트
어울리다 SQL 문에서 가장 중요한 키워드 중 하나입니다. 일반적으로 SELECT 문에서 사용했을 수 있습니다.
기본적으로 4 가지 유형의 JOIN 문이 있습니다.
- 내부 조인 : 두 테이블에서 공통된 레코드를 가져옵니다.
- LEFT JOIN : 키워드 왼쪽에있는 테이블에서 모든 레코드를 가져오고 키워드 오른쪽에있는 테이블에서 일치하는 레코드를 가져옵니다.
- 올바른 가입 : 키워드 오른쪽에있는 테이블에서 모든 레코드를 가져오고 키워드 왼쪽에있는 테이블에서 일치하는 레코드를 가져옵니다.
- 외부 조인 : NULL로 표시되는 일치하지 않는 해당 레코드를 사용하여 두 테이블에서 모든 레코드를 가져옵니다.
MySQL은 UPDATE 문에서도 JOIN을 사용하여 테이블 간 업데이트를 수행 할 수있는 독특한 기회를 제공합니다. 그러나 INNER JOIN 및 LEFT JOIN으로 만 제한됩니다.
JOIN 키워드를 사용하는 UPDATE 문의 일반 구문은 다음과 같습니다.
UPDATE TAB1, TAB2, (INNER JOIN | LEFT JOIN) TAB1 ON TAB1.COL1 = TAB2.COL1 SET TAB1.COL2 = TAB2.COL2, TAB2.COL3 = expr WHERE condition - 여기서 UPDATE 문에는 세 개의 데이터 항목이 필요합니다.
- 결합이 수행되는 테이블 이름, TAB1 및 TAB2.
- 수행하려는 JOIN 유형, INNER 또는 LEFT.
- 그런 다음 TAB1 및 TAB2에서 열 값을 업데이트 할 수있는 SET 명령을 따릅니다.
- 마지막으로 기준에 맞는 행만 업데이트하는 WHERE 절입니다.
이를 예제로 설명하기 위해 Employees 테이블에 열을 하나 더 추가 할 수 있습니다. Employees 테이블에 'salary'열을 추가합니다. 아이디어는 부서 테이블의 보너스 열에있는 보너스 백분율 값으로 직원의 급여를 인상하는 것입니다.
이를 위해 다음 ALTER 문을 실행하여 열을 추가합니다.
ALTER TABLE employees ADD COLUMN salarydecimal(7,2);다음으로 추가 한 두 개의 새 필드를 채울 것입니다. 값을 채운 후 다음은 테이블의 내용입니다.
직원 테이블 :
empNum 이름 lastName 이메일 deptNum 봉급 1007 슈미트 제임스 js@gmail.com 4 18000 1001 앤드류스 잭 ja@gmail.com 1 3000 1002 Schwatz 마이크 ms@gmail.com 1 5000 1003 Langley 마가렛 margaret.langley@gmail.com 두 8000 1004 Harera 산드라 sh@gmail.com 1 10,000 1005 읽다 베드로 pl@gmail.com 두 13000 1006 키스 제니 jk@gmail.com 두 15000 1008 외벽 올리버 oliver.bailey@gmail.com 삼 21000 1009 컵 괴롭히다 hb@gmail.com 5 24000 1010 년 암스트롱 Jacob jacob.armstrong@gmail.com 4 27000
이제 JOIN 키워드를 사용하고 부서 표에서 보너스 비율로 모든 직원의 급여를 업데이트 해 보겠습니다. 여기서 deptNum은 두 테이블이 일치되는 키입니다.
에프 다음은 현재 직원 급여의 스냅 샷입니다.

부서 테이블의 스냅 샷은 다음과 같습니다.

다음은 deptNum 키 열을 기반으로하는 부서 테이블의 보너스 비율을 기반으로 직원의 급여를 업데이트하는 UPDATE 쿼리입니다.

이제 하이킹 후 각 직원의 급여를 확인하겠습니다.

이전 스냅 샷과 비교하면 급여에 추가 된 보너스 비율을 쉽게 이해할 수 있습니다.
모든 직원이 응원해야합니다!
이전 테이블 스냅 샷 :
empNum 이름 lastName 이메일 deptNum 봉급 1007 슈미트 제임스 js@gmail.com 4 18000 1001 앤드류스 잭 ja@gmail.com 1 3000 1002 Schwatz 마이크 ms@gmail.com 1 5000 1003 Langley 마가렛 margaret.langley@gmail.com 두 8000 1004 Harera 산드라 sh@gmail.com 1 10,000 1005 읽다 베드로 pl@gmail.com 두 13000 1006 키스 제니 jk@gmail.com 두 15000 1008 외벽 올리버 oliver.bailey@gmail.com 삼 21000 1009 컵 괴롭히다 hb@gmail.com 5 24000 1010 년 암스트롱 Jacob jacob.armstrong@gmail.com 4 27000
deptNum 시티 국가 보너스 7 로마 이탈리아 18 1 뉴욕 미국 삼 두 샬럿 미국 5 삼 시카고 미국 8 4 런던 영국 10 5 베를린 독일 13 6 뭄바이 인도 열 다섯
질문:
UPDATE employees INNER JOIN departments ON employees.deptNum = departments.deptNum SET salary = salary + ((salary * bonus)/100) ; 이후 테이블 스냅 샷 :
empNum 이름 lastName 이메일 deptNum 봉급 1007 슈미트 제임스 js@gmail.com 4 21780 1001 앤드류스 잭 ja@gmail.com 1 3182.7 1002 Schwatz 마이크 ms@gmail.com 1 5304.5 1003 Langley 마가렛 margaret.langley@gmail.com 두 8820 1004 Harera 산드라 sh@gmail.com 1 10609 1005 읽다 베드로 pl@gmail.com 두 14332.5 1006 키스 제니 jk@gmail.com 두 16537.5 1008 외벽 올리버 oliver.bailey@gmail.com 삼 24494.4 1009 컵 괴롭히다 hb@gmail.com 5 30645.6 1010 년 암스트롱 Jacob jacob.armstrong@gmail.com 4 32670
# 7) LEFT JOIN 키워드를 사용한 MySQL 업데이트
이전 섹션에서 설명한 것처럼 MySQL UPDATE에서 허용되는 두 가지 유형의 JOIN이 있습니다. 이미 INNER JOIN을 사용하여 UPDATE를 보았습니다.
LEFT JOIN을 사용하여 UPDATE부터 시작하겠습니다.
예:
아직 어떤 부서에도 배정되지 않은 신입 사원이 있습니다. 그러나 우리는 모든 신입 직원에게 1 %의 보너스를 제공해야합니다. 이제 신입 사원이 어떤 부서에도 배정되지 않았기 때문에 해당 테이블에서 보너스 비율 정보를 얻을 수 없습니다. 이 경우 LEFT JOIN을 사용하여 신입 사원 급여를 갱신합니다.
이를 위해 직원 데이터베이스에 새 직원을 추가해 보겠습니다.
INSERT INTO employees(empNum, firstName, lastName, email, deptNum, Salary) VALUES (1011, “Tom”, “Hanks”, th@gmail.com, NULL, 10000.00); 다음은 우리가 추가 한 새 레코드입니다.

직원 테이블 :
empNum 이름 lastName 이메일 deptNum 봉급 1007 슈미트 제임스 js@gmail.com 4 21780 1001 앤드류스 잭 ja@gmail.com 1 3183 1002 Schwatz 마이크 ms@gmail.com 1 5305 1003 Langley 마가렛 margaret.langley@gmail.com 두 8820 1004 Harera 산드라 sh@gmail.com 1 10609 1005 읽다 베드로 pl@gmail.com 두 14333 1006 키스 제니 jk@gmail.com 두 16538 1008 외벽 올리버 oliver.bailey@gmail.com 삼 24494 1009 컵 괴롭히다 hb@gmail.com 5 30646 1010 년 암스트롱 Jacob jacob.armstrong@gmail.com 4 32670 1011 행크스 톰 th@gmail.com 없는 10,000
다음으로, LEFT JOIN 절과 함께 UPDATE 문을 사용하여 Tom에게 급여에 추가로 1 %의 보너스를 제공합니다.

다음은 TOM 하이킹 후 급여입니다.

이전 스냅 샷과 비교해 보면 급여에 추가 된 보너스 비율을 쉽게 이해할 수 있습니다.
jar 파일을 실행하는 방법
이전 테이블 스냅 샷 :
empNum 이름 lastName 이메일 deptNum 봉급 1011 톰 행크스 th@gmail.com 없는 10,000
질문:
UPDATE employees LEFT JOIN departments ON employees.deptNum = departments.deptNum SET salary = salary + ((salary * 1)/100) WHERE employees.deptNum IS NULL ; 이후 테이블 스냅 샷 :
empNum 이름 lastName 이메일 deptNum 봉급 1011 톰 행크스 th@gmail.com 없는 10100
추천 자료 = >> MySQL 조인
자주 묻는 질문과 답변
Q # 1) MySQL에서 속성을 어떻게 업데이트합니까?
대답: MySQL UPDATE 문을 사용하여 속성 (들)을 업데이트 할 수 있습니다. 문은 UPDATE 키워드로 시작하고 테이블 이름이 이어집니다. 다음은 SET 절이고 뒤에 열 이름과 WHERE 절이 있습니다.
Q # 2) MySQL에서 여러 레코드를 어떻게 업데이트합니까?
대답: 위에 설명 된대로 '여러 행 업데이트' 섹션에서 CASE 문을 사용하여 값이 같거나 다른 하나 이상의 열에 대해 여러 행을 업데이트 할 수 있습니다.
Q # 3) MySQL의 업데이트 쿼리에서 JOIN을 사용할 수 있습니까?
대답: 예, MySQL은 UPDATE 문에서 JOIN을 사용할 수 있습니다. 그러나 INNER 및 LEFT JOIN으로 만 제한됩니다.
Q # 4) MySQL은 어디에서 다운로드 할 수 있습니까?
대답: 여기에서 MySQL 버전 8.0을 다운로드 할 수 있습니다. MySQL .
Q # 5) Update 문에서 WHERE 절의 의미는 무엇입니까?
대답: WHERE 절은 UPDATE 절의 기준에 맞는 행 수를 제한합니다.
추천 읽기 = >> 사용 방법 MySQL If 문
결론
따라서이 튜토리얼에서는 MySQL UPDATE 문을 실행하는 7 가지 방법에 대해 배웠습니다.
- 단일 열 업데이트
- 여러 열 업데이트
- REPLACE를 사용하여 업데이트
- SELECT를 사용하여 업데이트
- 여러 행 업데이트
- INNER JOIN을 사용하여 업데이트
- LEFT JOIN을 사용하여 업데이트
우리의 요구 사항에 따라 이들 중 하나를 사용할 수 있습니다.
행복한 독서 !!
추천 도서









