>  기사  >  데이터 베이스  >  mysql에서 필드 값을 수정하는 방법

mysql에서 필드 값을 수정하는 방법

青灯夜游
青灯夜游원래의
2021-12-02 13:53:1927643검색

mysql에서는 UPDATE 문을 사용하여 필드 값을 수정할 수 있습니다. UPDATE 문은 "UPDATE 테이블 이름 SET" 구문을 사용하여 단일 행, 행 그룹 또는 모든 행의 필드 값을 수정할 수 있습니다. 필드 1 = 값 1 [, 필드 2=값2…][WHERE 조건]".

mysql에서 필드 값을 수정하는 방법

이 튜토리얼의 운영 환경: windows7 시스템, mysql8 버전, Dell G3 컴퓨터.

mysql에서는 UPDATE 문을 사용하여 필드 값을 수정할 수 있습니다.

UPDATE 문은 테이블의 기존 데이터를 업데이트할 수 있으며 단일 행, 행 그룹 또는 데이터 테이블의 모든 행의 필드 값을 수정할 수 있습니다.

MySQL UPDATE 문의 구문은 아래와 같습니다: UPDATE语句的语法:

UPDATE 表名 
SET 
  字段1=值1[,字段2=值2…] 
[WHERE 条件]

在上面UPDATE语句中:

  • 首先,在UPDATE关键字后面指定要更新数据的表名。
  • 其次,SET子句指定要修改的列和新值。要更新多个列,请使用以逗号分隔的列表。以字面值,表达式或子查询的形式在每列的赋值中来提供要设置的值。
  • 第三,使用WHERE子句中的条件指定要更新的行。WHERE子句是可选的。 如果省略WHERE子句,则UPDATE语句将更新表中的所有行。

请注意,WHERE子句非常重要,所以不应该忘记指定更新的条件。 有时,您可能只想改变一行; 但是,可能会忘记写上WHERE子句,导致意外更新表中的所有行。

MySQL在UPDATE语句中支持两个修饰符。

  • LOW_PRIORITY修饰符指示UPDATE语句延迟更新,直到没有从表中读取数据的连接。 LOW_PRIORITY对仅使用表级锁定的存储引擎(例如MyISAMMERGEMEMORY)生效。
  • 即使发生错误,IGNORE修饰符也可以使UPDATE语句继续更新行。导致错误(如重复键冲突)的行不会更新。

2. MySQL UPDATE示例

我们使用MySQL示例数据库中的一些表来练习使用UPDATE语句。

2.1 MySQL UPDATE一个单列示例

在这个例子中,我们将把 Mary Patterson 的电子邮件更新为新的电子邮件123@qq.com

首先,为了确保更新电子邮件成功,使用以下SELECT语句从employees表查询Mary的电子邮件:

SELECT 
    firstname, lastname, email
FROM
    employees
WHERE
    employeeNumber = 1056;

执行上面的查询语句,得到以下结果 -

+-----------+-----------+----------------------+
| firstname | lastname  | email                |
+-----------+-----------+----------------------+
| Mary      | Patterson | mpatterso@qq.com     |
+-----------+-----------+----------------------+
1 row in set

第二步,使用UPDATE语句将Mary的电子邮件更新为新的电子邮件:123@qq.com,如下查询所示:

UPDATE employees 
SET 
    email = '123@qq.com'
WHERE
    employeeNumber = 1056;

因为上面语句中,只想更新一行,所以使用WHERE子句来指定更新的是员工编号1056的行。SET子句将电子邮件列的值设置为新的电子邮件。

第三,再次执行SELECT语句来验证更改。

SELECT 
    firstname, lastname, email
FROM
    employees
WHERE
    employeeNumber = 1056;

再次执行上面的查询语句,得到以下结果 -

+-----------+-----------+---------------------+
| firstname | lastname  | email               |
+-----------+-----------+---------------------+
| Mary      | Patterson | 123@qq.com          |
+-----------+-----------+---------------------+
1 row in set

2.2 MySQL UPDATE多列

要更新多列中的值,需要在SET子句中指定分配。例如,以下语句更新了员工编号1056的姓氏和电子邮件列:

UPDATE employees 
SET 
    lastname = 'Hill',
    email = 'mary.hill@qq.com'
WHERE
    employeeNumber = 1056;

在执行上面语句之后,查询员工编号为:1056的记录,如下所示 -

+-----------+----------+----------------------+
| firstname | lastname | email                |
+-----------+----------+----------------------+
| Mary      | Hill     | mary.hill@qq.com     |
+-----------+----------+----------------------+
1 row in set

2.3 使用SELECT语句的MySQL UPDATE示例

可以使用SELECT语句查询来自其他表的数据来提供给SET子句的值。

例如,在customers表中,有些客户没有任何销售代表。 salesRepEmployeeNumber列的值为NULL,如下所示:

mysql> SELECT 
    customername, salesRepEmployeeNumber
FROM
    customers
WHERE
    salesRepEmployeeNumber IS NULL;
+--------------------------------+------------------------+
| customername                   | salesRepEmployeeNumber |
+--------------------------------+------------------------+
| Havel & Zbyszek Co             | NULL                   |
| Porto Imports Co.              | NULL                   |
| Asian Shopping Network, Co     | NULL                   |
| Natrlich Autos                 | NULL                   |
| ANG Resellers                  | NULL                   |
| Messner Shopping Network       | NULL                   |
| Franken Gifts, Co              | NULL                   |
| BG&E Collectables              | NULL                   |
| Schuyler Imports               | NULL                   |
| Der Hund Imports               | NULL                   |
| Cramer Spezialitten, Ltd       | NULL                   |
| Asian Treasures, Inc.          | NULL                   |
| SAR Distributors, Co           | NULL                   |
| Kommission Auto                | NULL                   |
| Lisboa Souveniers, Inc         | NULL                   |
| Stuttgart Collectable Exchange | NULL                   |
| Feuer Online Stores, Inc       | NULL                   |
| Warburg Exchange               | NULL                   |
| Anton Designs, Ltd.            | NULL                   |
| Mit Vergngen & Co.             | NULL                   |
| Kremlin Collectables, Co.      | NULL                   |
| Raanan Stores, Inc             | NULL                   |
+--------------------------------+------------------------+
22 rows in set

我们可以为这些客户提供销售代表和更新。

为此,需要从employees表中随机选择一个职位为Sales Rep的雇员,并将其更新到employees表中。
下面的查询语句是从employees表中随机选择一个其职位是Sales Rep的员工。

SELECT 
    employeeNumber
FROM
    employees
WHERE
    jobtitle = 'Sales Rep'
ORDER BY RAND()
LIMIT 1;

要更新customers表中的销售代表员工编号(employeeNumber)列,我们将上面的查询放在UPDATE语句的SET子句中,如下所示:

UPDATE customers 
SET 
    salesRepEmployeeNumber = (SELECT 
            employeeNumber
        FROM
            employees
        WHERE
            jobtitle = 'Sales Rep'
        LIMIT 1)
WHERE
    salesRepEmployeeNumber IS NULL;

如果在执行上面更新语句后,查询customers

SELECT 
     salesRepEmployeeNumber
FROM
    customers
WHERE
    salesRepEmployeeNumber IS NULL;
`

위의 UPDATE 문에서:

  • 먼저 에서 UPDATE code> 키워드 뒤에는 데이터를 업데이트할 테이블 이름을 지정합니다.
  • 두 번째로 SET 절은 수정할 열과 새 값을 지정합니다. 여러 열을 업데이트하려면 쉼표로 구분된 목록을 사용하세요. 각 열 할당에 설정할 값을 리터럴, 표현식 또는 하위 쿼리로 제공합니다.
  • 셋째, WHERE 절의 조건을 사용하여 업데이트할 행을 지정합니다. WHERE 절은 선택사항입니다. WHERE 절이 생략된 경우 UPDATE 문은 테이블의 모든 행을 업데이트합니다.
WHERE 절은 매우 중요하므로 업데이트 조건을 지정하는 것을 잊지 마세요. 때로는 하나의 행만 변경하고 싶을 수도 있지만 WHERE 절을 작성하는 것을 잊어버리면 테이블의 모든 행이 실수로 업데이트될 수 있습니다. 🎜🎜MySQL은 UPDATE 문에서 두 가지 수정자를 지원합니다. 🎜
  • LOW_PRIORITY 수정자는 테이블에서 데이터를 읽을 연결이 없을 때까지 업데이트를 지연하도록 UPDATE 문에 지시합니다. LOW_PRIORITY는 테이블 수준 잠금만 사용하는 🎜스토리지 엔진🎜(예: MyISAM, MERGE, MEMORY)에 적용됩니다. >).
  • IGNORE 수정자를 사용하면 오류가 발생하더라도 UPDATE 문이 행을 계속 업데이트할 수 있습니다. 오류(예: 중복 키 위반)를 일으키는 행은 업데이트되지 않습니다.

2. MySQL UPDATE 예제

🎜MySQL 샘플 데이터베이스의 일부 테이블을 사용하여 UPDATE 문. 🎜🎜🎜2.1 MySQL UPDATE 단일 열 예제 🎜🎜🎜이 예제에서는 <em>Mary Patterson</em>의 이메일을 새 이메일 <code>123@qq.com으로 업데이트합니다. 🎜🎜먼저 업데이트된 이메일이 성공적인지 확인하려면 다음 SELECT 문을 사용하여 employees 테이블에서 Mary의 이메일을 쿼리하세요. 🎜rrreee🎜Execute 위 쿼리 문을 사용하여 다음 결과를 얻습니다. -🎜rrreee🎜🎜두 번째 단계🎜, UPDATE 문을 사용하여 Mary의 이메일을 새 이메일로 업데이트합니다. 123@qq.com, 다음 쿼리에 표시된 대로: 🎜rrreee🎜위 명령문에서는 한 행만 업데이트하려고 하므로 WHERE 절을 사용하여 해당 행이 업데이트되도록 지정합니다. 직원 번호 1056가 업데이트되었습니다. SET 절은 email 열의 값을 새 이메일로 설정합니다. 🎜🎜🎜세 번째🎜, SELECT 문을 다시 실행하여 변경 사항을 확인하세요. 🎜rrreee🎜위 쿼리문을 다시 실행하여 다음과 같은 결과를 얻습니다. -🎜rrreee🎜🎜2.2 MySQL UPDATE 다중 열 🎜🎜🎜여러 열의 값을 업데이트하려면 SET 절. 예를 들어, 다음 문은 직원 번호 <code>1056의 성과 이메일 열을 업데이트합니다. 🎜rrreee🎜위 문을 실행한 후 직원 번호: 1056의 레코드를 쿼리합니다. 다음과 같이 표시 -🎜rrreee🎜🎜2.3 SELECT 문을 사용한 MySQL UPDATE 예🎜🎜🎜SELECT 문을 사용하여 다른 테이블의 데이터를 쿼리하여 SET에 값을 제공할 수 있습니다. > 절. 🎜🎜예를 들어 고객 테이블에서 일부 고객은 영업 담당자가 없습니다. salesRepEmployeeNumber 열의 값은 아래와 같이 NULL입니다. 🎜rrreee🎜저희는 이러한 고객에게 영업 담당자와 업데이트를 제공할 수 있습니다. 🎜🎜이 작업을 수행하려면 employees 테이블에서 직위가 Sales Rep인 직원을 무작위로 선택하고 이를 employees 테이블로 업데이트해야 합니다. .
다음 쿼리 문은 employees 테이블에서 직위가 Sales Rep인 직원을 무작위로 선택합니다. 🎜rrreee🎜 customers 테이블의 영업 담당자 직원 번호(employeeNumber) 열을 업데이트하기 위해 위 쿼리를 UPDATE 문에 배치합니다. code>SET 절은 아래와 같습니다. 🎜rrreee🎜위의 업데이트 문을 실행한 후 customers 테이블의 데이터를 쿼리하면 각 고객에게 판매 담당자가 있음을 알 수 있습니다. 즉, 다음 쿼리는 행 데이터를 반환하지 않습니다. 🎜rrreee🎜【관련 추천: 🎜mysql 비디오 튜토리얼🎜】🎜

위 내용은 mysql에서 필드 값을 수정하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.