21.28 INFORMATION_SCHEMA VIEWS Table
VIEWS
테이블은 데이터베이스의 뷰에 대한 정보를 제공합니다. 이 테이블에 액세스하려면 SHOW VIEW
권한이 있어야합니다.
INFORMATION_SCHEMA Name | SHOW Name | Remarks |
---|---|---|
TABLE_CATALOG | | def |
TABLE_SCHEMA | | |
TABLE_NAME | | |
VIEW_DEFINITION | | |
CHECK_OPTION | | |
IS_UPDATABLE | | |
DEFINER | | |
SECURITY_TYPE | | |
CHARACTER_SET_CLIENT | | MySQL extension |
COLLATION_CONNECTION | | MySQL extension |
참고 :
VIEW_DEFINITION
컬럼은SHOW CREATE VIEW
를 생성하는Create Table
필드에 표시되는 대부분의 것이 존재합니다.SELECT
이전 단어를 생략하고WITH CHECK OPTION
단어를 건너 뜁니다. 원래 문이 다음과 같았다고합니다.CREATE VIEW v AS SELECT s2,s1 FROM t WHERE s1 > 5 ORDER BY s1 WITH CHECK OPTION;
이 경우 뷰 정의는 다음과 같습니다.
SELECT s2,s1 FROM t WHERE s1 > 5 ORDER BY s1
CHECK_OPTION
컬럼은NONE
,CASCADE
또는LOCAL
값입니다.MySQL은
CREATE VIEW
시 뷰의 갱신 가능성 플래그 플래그를 설정합니다.UPDATE
및DELETE
(및 이와 유사한 작업)이 뷰에 사용하는 경우 플래그는YES
(true)로 설정됩니다. 그렇지 않으면 플래그는NO
(false)로 설정됩니다.VIEWS
테이블IS_UPDATABLE
열이 플래그의 상태를 표시합니다. 이것은 뷰가 갱신 가능한지 여부를 서버가 항상 파악하고있는 것을 의미합니다. 뷰가 업데이트 가능하지 않은 경우,UPDATE
,DELETE
,INSERT
등의 문은 무효이며, 거부됩니다. (뷰가 업데이트 가능한 경우에도 삽입 할 수없는 경우가 있습니다. 자세한 내용은 섹션 13.1.20 "CREATE VIEW 구문" 을 참조하십시오.)DEFINER
:'
형식으로 나타낸 뷰를 생성 한 사용자 계정입니다.user_name
'@'host_name
'SECURITY_TYPE
에는DEFINER
또는INVOKER
값이 있습니다.CHARACTER_SET_CLIENT
: 뷰가 생성되었을 때의character_set_client
시스템 변수 세션 값입니다.COLLATION_CONNECTION
: 뷰가 생성되었을 때의collation_connection
시스템 변수 세션 값입니다.
MySQL은 다른 sql_mode
설정을 사용하면 지원하는 SQL 구문의 유형을 서버에 지시 할 수 있습니다. 예를 들어, ANSI
SQL 모드를 사용하면 쿼리에서 MySQL에서 표준 SQL 연결 연산자의 이중 바 ( ||
)가 올바르게 해석됩니다. 그 항목을 연결하는 뷰를 작성한 경우 sql_mode
설정을 ANSI
와 다른 값으로 변경하면 뷰가 해제 될 것이라는 우려가있을 수 있습니다. 그러나 그런 것은 아닙니다. MySQL은 기술 방법에 관계없이 항상 뷰 정의를 정규 형식으로 같은 방법으로 저장합니다. 서버가 이중 모음의 연결 연산자를 CONCAT()
함수에 어떻게 변화 하는지를 나타내는 예를 보여줍니다.
mysql>SET sql_mode = 'ANSI';
Query OK, 0 rows affected (0.00 sec) mysql>CREATE VIEW test.v AS SELECT 'a' || 'b' as col1;
Query OK, 0 rows affected (0.00 sec) mysql>SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS
->WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 'v';
+----------------------------------+ | VIEW_DEFINITION | +----------------------------------+ | select concat('a','b') AS `col1` | +----------------------------------+ 1 row in set (0.00 sec)
뷰 정의를 정규 형식으로 저장하는 이점은 나중에 sql_mode
값을 변경해도 뷰의 결과에 영향을 미치지 않을 것입니다. 그러나 SELECT
의 앞에있는 주석이 서버에 의해 정의에서 제거된다는 다른 영향이 있습니다.