새로운 쿼리 명령 UPDATE는 테이블의 데이터를 수정할 수 있습니다. 다음은 UPDATE 의 기본 문법입니다.

| 쿼리 문법 |

UPDATE 테이블명 SET 컬럼명=, 컬럼명=, 컬럼명=, . ; 

테이블의 데이터를 수정하는 쿼리는 기존의 작성 방식과 약간 다른 점이 있습니다. 변경 하고자 하는 컬럼을 ‘컬럼명 = 값’ 형태로 한 쌍씩 작성합니다. 각각의 컬럼은 콤마 (,)로 분 리하면 됩니다.

위와 같이 쿼리 명령을 작성하게 되면 테이블의 모든 데이터가 지정한 값으로 변경됩니다. 테이블의 전체 데이터를 변경하는 것은 매우 흔하지 않은 일입니다. 또한 이러한 명 령은 실수로 데이터를 모두 잃어버릴 수 있는 매우 위험한 쿼리 명령입니다.

17.1.1 쿼리 실습

전체 수정 실습을 위해서 기존 테이블에 새로운 컬럼을 하나 추가해 봅니다.

| 콘솔 실습 화면 |

// 새로운 컬럼을 추가합니다.
mysql> alter table members add manager varchar(100);
Query OK, 0 rows affected (0.06 sec)
Records: 0  Duplicates: 0  Warnings: 0

컬럼을 새롭게 추가하게 되면 데이터는 기본적으로 NULL로 설정됩니다.

| 콘솔 실습 화면 |

// 새롭게 등록된 컬럼은 모두 NULL 입니다.
mysql> select * from members;
+----+----------+-----------+-------------+-------+---------+---------+
| Id | LastName | FirstName | Address     | City  | Country | manager |
+----+----------+-----------+-------------+-------+---------+---------+
|  1 | hojin    | lee       | shinchon    | seoul | korea   | NULL    |
|  2 | jiny     | NULL      | NULL        | NULL  | korea   | NULL    |
|  3 | james    | kim       | youngdun-po | seoul | korea   | NULL    |
|  4 | eric     | jung      | seocho-gu   | busan | korea   | NULL    |
+----+----------+-----------+-------------+-------+---------+---------+
4 rows in set (0.00 sec)

NULL로 설정되어 있는 컬럼에 새로운 값을 모두 변경해 보도록 하겠습니다.

| 예제 쿼리 |

update members set manager = 'infohojin'; 

| 콘솔 실습 화면 |

// 전체 manager 컬럼필드의 값을 수정합니다.
mysql> update members set manager = 'infohojin';
Query OK, 4 rows affected (0.01 sec)
Rows matched: 4  Changed: 4  Warnings: 0

수정 쿼리가 정상적으로 처리되었습니다. 수정한 내용을 확인 하기 위해서 select 명령으로 테이블을 확인해 봅니다.

| 콘솔 실습 화면 |

// 수정한 값을 확인할 수 있습니다.
mysql> select * from members;
+----+----------+-----------+-------------+-------+---------+-----------+
| Id | LastName | FirstName | Address     | City  | Country | manager   |
+----+----------+-----------+-------------+-------+---------+-----------+
|  1 | hojin    | lee       | shinchon    | seoul | korea   | infohojin |
|  2 | jiny     | NULL      | NULL        | NULL  | korea   | infohojin |
|  3 | james    | kim       | youngdun-po | seoul | korea   | infohojin |
|  4 | eric     | jung      | seocho-gu   | busan | korea   | infohojin |
+----+----------+-----------+-------------+-------+---------+-----------+
4 rows in set (0.00 sec)

새롭게 추가한 manager 컬럼에 설정한 값이 모두 변경되었습니다.

17.1.2 PHP 실습

PHP 코드를 통하여 전체 수정을 실습해 봅니다. 사실상 수정 쿼리의 작업은 유용하면서 도 매우 위험한 명령입니다. 실수로 전체 데이터를 삭제하기는 것을 방지하기 위해서 이렇게 별도의 메서드 형태로 만들어 호출하게 되면 오류를 사전에 방지할 수 있습니다.

| PHP 예제 | mysql.class.php 파일에 메서드 예제를 추가합니다.

// arr배열 데이터를 기분으로 테이블 전체 컬럼필드를 업데이트 합니다.
public function updateAll($tbname,$arr)
{
            if ($tbname) {
                $queryString = $this->arrQueryUpdate($tbname, $arr);
               
                // 쿼리를 전송합니다.
                if (mysqli_query($this->dbcon, $queryString)=== TRUE) {
                    $this->msgEcho("쿼리성공] ".$queryString);
                    $this->msgEcho(" 데이터 업데이트!");

                    // 객체 반환, 매서드체인
                    return $this; 

                } else {
                    $this->msgEcho("Error] ".$queryString);
                }


            } else {
                $this->msgEcho("Error] 테이블 이름이 없습니다."); 
            }

}

예제 파일 | update-01.php

<?php

	include "dbinfo.php";
	include "mysql.class.php";
 
	// ++ Mysqli DB 연결.
	$db = new JinyMysql();

	$tbname = "members";
	$arr = array('Country' => 'Korea');
	$db->updateAll($tbname, $arr);

?>

화면 출력

mysql connected!
Country
쿼리성공] UPDATE members SET `Country`='Korea'
데이터 업데이트!