새로운 쿼리 명령 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'
데이터 업데이트!