Loading...
MySQL 9.5 Reference Manual 9.5의 28.3.53 The INFORMATION_SCHEMA VIEWS Table의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
VIEWS 테이블은 데이터베이스 내 뷰에 대한 정보를 제공합니다. 이 테이블에 접근하려면 SHOW VIEW 권한이 필요합니다.
VIEWS 테이블에는 다음과 같은 컬럼이 있습니다:
TABLE_CATALOG뷰가 속한 카탈로그의 이름입니다. 이 값은 항상 def입니다.
TABLE_SCHEMA뷰가 속한 스키마(데이터베이스)의 이름입니다.
TABLE_NAME뷰의 이름입니다.
VIEW_DEFINITION뷰 정의를 제공하는 SELECT 문입니다. 이 컬럼에는 SHOW CREATE VIEW가 생성하는 Create Table 컬럼에서 볼 수 있는 대부분의 내용이 포함됩니다. SELECT 앞의 단어들과 WITH CHECK OPTION이라는 단어들은 건너뜁니다. 다음과 같은 원래 문장이 있다고 가정해 봅시다:
1CREATE VIEW v AS 2 SELECT s2,s1 FROM t 3 WHERE s1 > 5 4 ORDER BY s1 5 WITH CHECK OPTION;
그러면 뷰 정의는 다음과 같이 보입니다:
1SELECT s2,s1 FROM t WHERE s1 > 5 ORDER BY s1
CHECK_OPTIONCHECK_OPTION 속성의 값입니다. 값은 NONE, CASCADE, LOCAL 중 하나입니다.
IS_UPDATABLEMySQL은 CREATE VIEW 시점에 뷰 업데이트 가능 플래그라는 플래그를 설정합니다. 이 플래그는 UPDATE 및 DELETE (및 이와 유사한 작업)이 해당 뷰에 대해 합법적인 경우 YES(true)로 설정됩니다. 그렇지 않으면 플래그는 NO(false)로 설정됩니다. VIEWS 테이블의 IS_UPDATABLE 컬럼은 이 플래그의 상태를 표시합니다. 이는 서버가 뷰가 업데이트 가능한지 여부를 항상 알고 있음을 의미합니다.
뷰가 업데이트 가능하지 않으면 UPDATE, DELETE, INSERT와 같은 문은 합법적이지 않으며 거부됩니다. (뷰가 업데이트 가능하더라도, 그 뷰에 insert하는 것이 불가능할 수 있습니다. 자세한 내용은 Section 27.6.3, “Updatable and Insertable Views”를 참조하십시오.)
DEFINER뷰를 생성한 사용자의 계정으로, 'user_name'@'host_name' 형식입니다.
SECURITY_TYPE뷰의 SQL SECURITY 특성입니다. 값은 DEFINER 또는 INVOKER 중 하나입니다.
CHARACTER_SET_CLIENT뷰가 생성될 때의 character_set_client 시스템 변수의 세션 값입니다.
COLLATION_CONNECTION뷰가 생성될 때의 collation_connection 시스템 변수의 세션 값입니다.
MySQL은 서로 다른 sql_mode 설정을 허용하여 서버가 지원해야 할 SQL 구문의 유형을 지정할 수 있게 합니다. 예를 들어, 표준 SQL 연결 연산자인 이중 바(||)를 쿼리에서 MySQL이 올바르게 해석하도록 하기 위해 ANSI SQL 모드를 사용할 수 있습니다. 그런 다음 항목을 연결하는 뷰를 생성하는 경우, sql_mode 설정을 ANSI와 다른 값으로 변경하면 그 뷰가 무효해질 수 있다고 걱정할 수 있습니다.
그러나 이는 사실이 아닙니다. 뷰 정의를 어떻게 작성하든지 간에 MySQL은 항상 동일한 방식, 즉 정규형(canonical form)으로 이를 저장합니다. 다음 예는 서버가 이중 바 연결 연산자를 CONCAT() 함수로 어떻게 변경하는지 보여줍니다:
1mysql> SET sql_mode = 'ANSI'; 2Query OK, 0 rows affected (0.00 sec) 3 4mysql> CREATE VIEW test.v AS SELECT 'a' || 'b' as col1; 5Query OK, 0 rows affected (0.00 sec) 6 7mysql> SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS 8 WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 'v'; 9+----------------------------------+ 10| VIEW_DEFINITION | 11+----------------------------------+ 12| select concat('a','b') AS `col1` | 13+----------------------------------+ 141 row in set (0.00 sec)
뷰 정의를 정규형으로 저장하는 장점은 나중에 sql_mode 값을 변경하더라도 뷰의 결과에는 영향을 미치지 않는다는 점입니다. 그러나 추가적인 결과로, SELECT 이전의 주석은 서버에 의해 정의에서 제거됩니다.
28.3.52 The INFORMATION_SCHEMA USER_PRIVILEGES Table
28.3.54 The INFORMATION_SCHEMA VIEW_ROUTINE_USAGE Table