ALTER VIEW 키워드를 통하여 VIEW의 컬럼 구조를 변경할 수 있습니다. ALTER VIEW는 CREATE VIEW 를 통하여 새로 생성하는 것과 거의 유사합니다.

| 쿼리 문법 |

ALTER VIEW  이름 AS SELECT 컬럼명 FROM 테이블명; 

21.6.1 쿼리 실습

기존 가상 테이블의 데이터를 출력해 봅니다.

| 콘솔 실습 화면 |

mysql> select * from viewtest;
+----+----------+-----------+----------+-------+---------+-----------+-------------------+
| Id | LastName | FirstName | Address  | City  | Country | manager   | email             |
+----+----------+-----------+----------+-------+---------+-----------+-------------------+
|  1 | hojin    | lee       | shinchon | seoul | Korea   | infohojin | hojin@jinyphp.com |
+----+----------+-----------+----------+-------+---------+-----------+-------------------+
1 row in set (0.00 sec)

가상 테이블의 컬럼을 새롭게 지정합니다. 뷰의 출력 컬럼 필드를 수를 변경해 보겠습니다.

| 예제 쿼리 |

alter view viewtest as select FirstName, Lastname from members where Id = 1; 

| 콘솔 실습 화면 |

mysql> alter view viewtest as select FirstName, Lastname from members where Id = 1;
Query OK, 0 rows affected (0.01 sec)

정상적으로 뷰가 변경이 되었습니다. 다시 한번 가상 테이블의 목록을 출력해 봅니다.

| 콘솔 실습 화면 |

mysql> select * from viewtest;
+-----------+----------+
| FirstName | Lastname |
+-----------+----------+
| lee       | hojin    |
+-----------+----------+
1 row in set (0.00 sec)

2개의 컬럼만 출력되는 것을 확인할 수 있습니다.

21.6.2 PHP 실습

PHP 코드를 통하여 실습해 봅니다.

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

public function alterView($view, $selectQuery)
{
            if ($view) {
                if ($selectQuery) {
                    $queryString = "ALTER VIEW $view AS $selectQuery";
                    // 쿼리를 전송합니다.
                    if (mysqli_query($this->dbcon, $queryString)=== TRUE) {
                        $this->msgEcho("쿼리성공] ".$queryString);
                        $this->msgEcho(" 뷰 생성!");

                        return true;

                    } else {
                        $this->msgEcho("Error] ".$queryString);
                        return false;
                    }
                    
                } else {
                    $this->msgEcho("Error] 조건 select 쿼리를 입력해 주세요..");
                    return false;
                }

            } else {
                $this->msgEcho("Error] 뷰 이름을 적어주세요.");
                return false;
            }
}

예제 파일 | view-05.php

<?php
 
	include "dbinfo.php";
	include "mysql.class.php";
 
	// ++ Mysqli DB 연결.
	$db = new JinyMysql();
 
	// 뷰를 업데이트 합니다.
	$db->alterView("viewtest", "select FirstName, LastName from members where Id=1");
 
?>

화면 출력

mysql connected!
쿼리성공] ALTER VIEW viewtest AS select FirstName, LastName from members where Id=1
뷰 생성!