MySQL
최신 정보
수색…
통사론
UPDATE [LOW_PRIORITY] [무시] tableName SET column1 = expression1, column2 = expression2, ... [WHERE 조건]; // 단순한 단일 테이블 업데이트
UPDATE [LOW_PRIORITY] [무시] tableName SET column1 = expression1, column2 = expression2, ... [WHERE 조건] [ORDER BY 식 [ASC | DESC]] [LIMIT 행 _ 개수]; // order by와 limit로 업데이트
UPDATE [LOW_PRIORITY] [무시] table1, table2, ... SET column1 = expression1, column2 = expression2, ... [WHERE 조건]; // 다중 테이블 업데이트
기본 업데이트
한 행 업데이트
UPDATE customers SET email='[email protected]' WHERE id=1
이 쿼리는 customers
테이블의 email
내용을 [email protected]
문자열로 [email protected]
여기에서 id
값은 1과 같습니다. 데이터베이스 테이블의 이전 내용과 새로운 내용은 아래 각각 왼쪽과 오른쪽에 나와 있습니다.
모든 행 업데이트 중
UPDATE customers SET lastname='smith'
이 쿼리는 customers
테이블의 모든 항목에 대한 lastname
의 내용을 업데이트합니다. 데이터베이스 테이블의 이전 및 새 내용은 각각 왼쪽과 오른쪽에 아래에 설명되어 있습니다.
주의 사항 : UPDATE 쿼리에서 조건절 (WHERE)을 사용할 필요가 있습니다. 조건절을 사용하지 않으면 해당 테이블 속성의 모든 레코드가 업데이트됩니다. 위의 예제에서는 customers 테이블의 lastname에 대한 새 값 (Smith)이 모든 행으로 설정되었습니다.
조인 패턴으로 업데이트
questions_mysql
이라는 프로덕션 테이블과 LOAD DATA INFILE
에서 가져온 CSV 데이터의 마지막 배치를 나타내는 테이블 iwtQuestions
(임포트 된 작업 테이블)를 고려하십시오. 가져 오기 전에 작업 테이블이 잘리고 데이터가 가져오고 해당 프로세스는 여기에 표시되지 않습니다.
가져온 작업 테이블 데이터에 조인을 사용하여 생산 데이터를 업데이트하십시오.
UPDATE questions_mysql q -- our real table for production
join iwtQuestions i -- imported worktable
ON i.qId = q.qId
SET q.closeVotes = i.closeVotes,
q.votes = i.votes,
q.answers = i.answers,
q.views = i.views;
별칭 q
와 i
는 테이블 참조를 줄이기 위해 사용됩니다. 이로 인해 개발 및 가독성이 향상됩니다.
qId
는 기본 키이며 Stackoverflow 질문 ID를 나타냅니다. 조인의 일치하는 행에 대해 네 개의 열이 업데이트됩니다.
ORDER BY 및 LIMIT로 업데이트
ORDER BY
절이 갱신 SQL 문에 지정된 경우, 행은 지정된 순서대로 갱신됩니다.
SQL 문에 LIMIT
절이 지정되면, 갱신 할 수있는 행 수에 제한이 있습니다. LIMIT
절을 지정하지 않으면 제한이 없습니다.
ORDER BY
및 LIMIT
는 다중 테이블 업데이트에 사용할 수 없습니다.
ORDER BY
및 LIMIT
를 사용하는 MySQL UPDATE
구문은 다음과 같습니다.
UPDATE [ LOW_PRIORITY ] [ IGNORE ]
tableName
SET column1 = expression1,
column2 = expression2,
...
[WHERE conditions]
[ORDER BY expression [ ASC | DESC ]]
[LIMIT row_count];
---> Example
UPDATE employees SET isConfirmed=1 ORDER BY joiningDate LIMIT 10
위의 예에서 joiningDate
하는 직원의 순서에 따라 10 개의 행이 업데이트됩니다.
다중 테이블 UPDATE
다중 테이블 UPDATE
에서 조건을 충족시키는 각 지정된 테이블의 행을 갱신합니다. 일치하는 각 행은 조건이 여러 번 일치하더라도 한 번 업데이트됩니다.
다중 테이블 UPDATE
에서는 ORDER BY
및 LIMIT
사용할 수 없습니다.
다중 테이블 UPDATE
구문은 다음과 같습니다.
UPDATE [LOW_PRIORITY] [IGNORE]
table1, table2, ...
SET column1 = expression1,
column2 = expression2,
...
[WHERE conditions]
예를 들어 두 개의 테이블, products
및 salesOrders
. 경우에 따라 특정 제품의 수량을 이미 배치 된 판매 오더에서 줄입니다. 그런 다음 우리는 또한 products
테이블의 재고 열에서 그 수량을 늘려야합니다. 이 작업은 아래와 같은 단일 SQL 업데이트 문에서 수행 할 수 있습니다.
UPDATE products, salesOrders
SET salesOrders.Quantity = salesOrders.Quantity - 5,
products.availableStock = products.availableStock + 5
WHERE products.productId = salesOrders.productId
AND salesOrders.orderId = 100 AND salesOrders.productId = 20;
위의 예에서 수량 '5'는 salesOrders
테이블에서 감소하고 WHERE
조건에 따라 products
테이블에서 동일하게 증가합니다.
대량 업데이트
다른 값으로 여러 행을 업데이트 할 때 대량 업데이트를 사용하는 것이 훨씬 빠릅니다.
UPDATE people
SET name =
(CASE id WHEN 1 THEN 'Karl'
WHEN 2 THEN 'Tom'
WHEN 3 THEN 'Mary'
END)
WHERE id IN (1,2,3);
일괄 업데이트를 사용하면 업데이트 할 각 행에 대해 하나의 쿼리 대신 하나의 쿼리 만 서버로 보낼 수 있습니다. 케이스에는 WHERE
절에서 WHERE
모든 가능한 매개 변수가 포함되어야합니다.