MySQL 뷰: 예제가 포함된 테이블에서 뷰를 생성하는 방법

MySQL의 뷰란 무엇입니까?

VIEWS 자신의 데이터를 저장하지 않고 다른 테이블에 저장된 데이터를 표시하는 가상 테이블입니다. 즉, VIEWS는 SQL 쿼리일 뿐입니다. 뷰에는 테이블의 행 전체 또는 일부가 포함될 수 있습니다. MySQL 보기는 하나의 테이블 또는 여러 테이블의 데이터를 표시할 수 있습니다.

MySQL 뷰 구문

이제 MySQL에서 뷰를 생성하는 데 사용되는 기본 구문을 살펴보겠습니다.

CREATE VIEW `view_name` AS SELECT statement;

WHERE

  • “CREATE VIEW `view_name`" MySQL 서버에 'view_name'이라는 데이터베이스에 뷰 객체를 생성하라고 지시합니다.
  • "AS SELECT 문" MySQL 뷰에 압축될 SQL 문입니다. SELECT 문은 하나의 테이블 또는 여러 테이블의 데이터를 포함할 수 있습니다.

MySQL에서 뷰를 생성하는 방법

FOLLOwing MySQL에서 뷰를 생성하는 단계별 프로세스는 다음과 같습니다.

단계 1) "myflixdb"를 사용하여 첫 번째 뷰를 만듭니다.

이제 “myflixdb”를 사용하여 첫 번째 뷰를 생성해 보겠습니다. 멤버 테이블에 표시되는 열을 제한하는 간단한 뷰를 생성하겠습니다.

권한 부여 요구 사항에 따르면 계정 부서는 구성원 테이블에서 구성원의 번호, 이름 및 성별만 볼 수 있다고 가정합니다. 이를 달성하기 위해 VIEW를 생성할 수 있습니다.

CREATE VIEW `accounts_v_members` AS SELECT `membership_number`,`full_names`,`gender` FROM `members`;

단계 2) 뷰 노드 확장

myflixdb에 대해 MySQL 워크벤치에서 위 스크립트를 실행하고 데이터베이스 탐색기에서 보기 노드를 확장하면 다음과 같은 결과가 제공됩니다.wing 결과.

MySQL에서 뷰 생성

이제 account_v_members 개체가 데이터베이스 보기 개체에 표시됩니다.

단계 3) SELECT 문 실행

이제 다음을 실행해 보겠습니다. SELECT 문 아래 MySQL 생성 뷰 예제와 같이 뷰에서 모든 필드를 선택합니다.

SELECT * FROM `accounts_v_members`;

단계 4) 스크립트 실행

myflixdb에 대해 MySQL 워크벤치에서 위 스크립트를 실행하면 다음과 같은 결과가 나옵니다.wing 아래에 표시된 결과.

membership_number full_names gender
1 Janet Jones Female
2 Janet Smith Jones Female
3 Robert Phil Male
4 Gloria Williams Female
5 Leonard Hofstadter Male
6 Sheldon Cooper Male
7 Rajesh Koothrappali Male
8 Leslie Winkle Male
9 Howard Wolowitz Male

회계 부서에 대해 승인된 열만 반환되었습니다. 기타 드tails 회원 테이블에서 발견된 항목은 숨겨져 있습니다.

특정 뷰를 구성하는 SQL 문을 보려면 아래에 표시된 스크립트를 사용하면 됩니다.

SHOW CREATE VIEW `accounts_v_members`;

위 스크립트를 실행하면 뷰 이름과 뷰를 생성하는 데 사용된 SQL SELECT 문이 제공됩니다.

MySQL의 조인 및 뷰

이제 상당히 com을 살펴보겠습니다.plex 여러 테이블을 포함하고 사용하는 예 조인.

멤버, 영화, 영화 대여라는 3개의 테이블에서 정보를 가져오는 생성된 JOIN을 패키지화합니다. 다음은 이를 달성하는 데 도움이 되는 스크립트입니다.

CREATE VIEW `general_v_movie_rentals` AS SELECT mb.`membership_number`,mb.`full_names`,mo.`title`,mr.`transaction_date`,mr.`return_date` FROM `movierentals` AS mr INNER JOIN `members` AS mb ON mr.`membership_number` = mb.`membership_number` INNER JOIN `movies` AS mo ON mr.`movie_id` = mo.`movie_id`;

위 스크립트를 실행하면 myflixdb에 General_v_movie_rentals라는 뷰가 생성됩니다.

이제 General_v_movie_rentals라는 테이블에서 모든 필드를 선택해 보겠습니다.

SELECT * FROM `general_v_movie_rentals`;

위 스크립트를 실행하면 MySQL 워크벤치 myflixdb에 대한 다음 내용을 제공합니다.wing 아래에 표시된 결과.

membership_number full_names title transaction_date return_date
1 Janet Jones Pirates of the Caribean 4 20-06-2012 28-06-2012
1 Janet Jones Forgetting Sarah Marshal 22-06-2012 25-06-2012
3 Robert Phil Forgetting Sarah Marshal 22-06-2012 25-06-2012
2 Janet Smith Jones Forgetting Sarah Marshal 21-06-2012 24-06-2012
3 Robert Phil X-Men 23-06-2012 28-06-2012

참고로 우리는 com을 작성할 필요가 없었습니다.plex 회원정보, 영화, 영화대여 정보를 얻기 위한 JOIN 쿼리tails. 우리는 일반 SELECT 문의 뷰를 다른 일반 테이블처럼 사용했습니다. 이 뷰는 myflixdb 위에서 실행되는 애플리케이션 시스템의 어느 곳에서나 호출할 수 있습니다.

MySQL에서 뷰 삭제

DROP 명령을 사용하여 뷰에서 뷰를 삭제할 수 있습니다. 데이터베이스 그것은 더 이상 필요하지 않습니다. 뷰를 삭제하는 기본 구문은 다음과 같습니다.

DROP VIEW ` general_v_movie_rentals `;

뷰를 사용하는 이유는 무엇입니까?

주로 팔로우를 위해 뷰를 사용하고 싶을 수도 있습니다.wing 3 이유

  • 궁극적으로, 당신은 SQL 지식, 데이터 요구사항에 맞게 데이터베이스를 사용하는 애플리케이션을 생성합니다. 테이블 자체를 사용하는 대신 애플리케이션에서 원래 테이블 구조의 VIEWS를 사용하는 것이 좋습니다. 이렇게 하면 DB를 리팩터링할 때 레거시 코드가 애플리케이션을 중단하지 않고 뷰를 통해 원래 스키마를 볼 수 있습니다.
  • VIEWS는 재사용성을 높입니다. com을 만들 필요가 없습니다.plex 반복적으로 조인을 포함하는 쿼리입니다. 모든 complexity는 VIEWS를 사용하여 한 줄의 쿼리로 변환됩니다. 이러한 압축 코드는 애플리케이션에 통합하기가 더 쉽습니다. 이렇게 하면 오타가 발생할 가능성이 줄어들고 코드를 더 쉽게 읽을 수 있습니다.
  • VIEWS는 데이터 보안에 도움이 됩니다. 보기를 사용하면 승인된 정보만 사용자에게 표시하고 신용카드 번호와 같은 민감한 데이터를 숨길 수 있습니다.

요약

  • 뷰는 가상 테이블입니다. 반환된 데이터는 포함되어 있지 않습니다. 데이터는 SELECT 문에서 참조되는 테이블에 저장됩니다.
  • 뷰는 sho에 의해 데이터베이스 보안을 향상시킵니다.wing 승인된 사용자에게만 의도된 데이터를 제공합니다. 민감한 데이터를 숨깁니다.
  • 글쓰기가 없기 때문에 뷰를 사용하면 생활이 쉬워집니다.plex 몇 번이고 질문합니다.
  • VIEW에서 INSERT, UPDATE 및 DELETE를 사용할 수 있습니다. 이러한 작업은 VIEW의 기본 테이블을 변경합니다. 유일한 고려 사항은 VIEW가 참조하는 테이블의 모든 NOT NULL 열을 포함해야 한다는 것입니다. 이상적으로는 업데이트에 VIEWS를 사용하면 안 됩니다.