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 의 앞에있는 주석이 서버에 의해 정의에서 제거된다는 다른 영향이 있습니다.