Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL 보기는 어떻게 생성할 수 있습니까?


MySQL 보기는 CREATE VIEW 문을 사용하여 생성됩니다. 보기는 단일 테이블, 여러 테이블 또는 다른 보기에서 만들 수 있습니다. 보기를 생성하려면 사용자가 특정 구현에 따라 적절한 시스템 권한이 있어야 한다는 것을 알고 있습니다.

기본 보기 만들기 구문은 다음과 같습니다 -

구문

CREATE
   [OR REPLACE]
   [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]
   [DEFINER = { user | CURRENT_USER }]
   [SQL SECURITY { DEFINER | INVOKER }]
   VIEW view_name [(column_list)]
   AS select_statement
   [WITH [CASCADED | LOCAL] CHECK OPTION]

여기,

  • 보기 만들기 - 이 문은 새로운 보기를 생성합니다.

  • View_name - view_name은 보기의 이름입니다. 보기는 항상 데이터베이스에 속합니다. 기본적으로 현재 사용 중인 데이터베이스에 새 보기가 생성됩니다.

  • Select_statement - select_statement는 SELECT 문이며 보기의 정의를 제공합니다. Select_statement는 기본 테이블이나 다른 보기에서 데이터를 선택할 수 있습니다.

  • Column_list - column_list 부분은 선택 사항입니다. 이름이 고유해야 하는 보기 이름 바로 뒤에 보기의 열에 대한 이름 목록을 제공합니다. column_list의 이름 수는 SELECT 문에서 검색한 열 수와 같아야 합니다. 뷰 열에 다른 이름을 지정하려면 선택 목록에 [AS 이름] 절을 추가하면 됩니다.

  • 또는 교체 - CREATE VIEW 문과 함께 선택적 OR REPLACE 절이 추가되면 CREATE VIEW 문은 기존 뷰를 대체하고 새 뷰를 생성합니다. 뷰가 존재하지 않는 경우 CREATE VIEW는 CREATE OR REPLACE VIEW와 동일합니다.

  • 알고리즘 - ALGORITHM 절은 선택 사항이며 MySQL이 보기를 처리하는 방법에 영향을 줍니다. ALGORITHM은 MERGE, TEMPTABLE 또는 UNDEFINED의 세 가지 값을 사용합니다. 기본 알고리즘은 UNDEFINED입니다.

  • [DEFINER ={ 사용자 | CURRENT_USER }] [SQL 보안 { DEFINER | 호출자 } ] - DEFINER 및 SQL SECURITY 절은 보기 호출 시 액세스 권한을 확인할 때 사용할 보안 컨텍스트를 지정합니다. DEFINER 절을 지정하면 다음 규칙에 따라 유효한 DEFINER 사용자 값이 결정됩니다. -

    • SUPER 권한이 없는 경우 유효한 유일한 사용자 값은 자신의 계정이며 정의자를 다른 계정으로 설정할 수 없습니다.

    • SUPER 권한이 있는 경우 구문상 법적 계정 이름을 지정할 수 있습니다.

SQL SECURITY DEFINER 특성으로 정의된 저장 루틴 내에서 CURRENT_USER는 루틴의 DEFINER 값을 반환합니다. 이는 뷰 정의에 CURRENT_USER의 DEFINER 값이 포함된 경우 이러한 루틴 내에 정의된 뷰에도 영향을 줍니다.

  • 8. [와 [캐스케이드 | 로컬] 확인 옵션] − WITH CHECK OPTION 절은 select_statement의 WHERE 절이 true인 행을 제외하고 행에 대한 삽입 또는 업데이트를 방지하기 위해 업데이트 가능한 보기에 제공될 수 있습니다. 업데이트 가능한 뷰에 대한 WITH CHECK OPTION 절에서 LOCAL 및 CASCADED 키워드는 뷰가 다른 뷰 측면에서 정의될 때 검사 테스트 범위를 결정합니다. LOCAL 키워드는 CHECK OPTION을 정의 중인 보기로만 제한합니다. CASCADED를 사용하면 기본 뷰에 대한 검사도 평가됩니다. 두 키워드가 모두 지정되지 않은 경우 기본값은 CASCADED입니다.

이 예에서는 다음과 같은 데이터가 있는 'Customers' 테이블에 First_View라는 뷰를 생성합니다. -

mysql> Select * from Customers;
+-------------+----------+
| Customer_Id | Name     |
+-------------+----------+
| 1           | Rahul    |
| 2           | Yashpal  |
| 3           | Gaurav   |
| 4           | Virender |
+-------------+----------+
4 rows in set (1.30 sec)

mysql> Create view first_view AS SELECT * FROM Customers;
Query OK, 0 rows affected (0.36 sec)

이제 뷰 이름을 사용하여 쿼리를 실행하면 뷰가 생성된 테이블에서 세부 정보를 가져옵니다.

mysql> Select * from first_view;
+-------------+----------+
| Customer_Id | Name     |
+-------------+----------+
| 1           | Rahul    |
| 2           | Yashpal  |
| 3           | Gaurav   |
| 4           | Virender |
+-------------+----------+
4 rows in set (0.13 sec)