>  기사  >  데이터 베이스  >  mysql 뷰가 뭐야?

mysql 뷰가 뭐야?

藏色散人
藏色散人원래의
2023-04-04 10:39:044103검색

MySQL 뷰는 쿼리에 의해 내용이 정의되는 가상 테이블입니다. 뷰에는 일련의 명명된 열과 행 데이터가 포함되어 있으며, 행과 열 데이터는 뷰를 사용자 정의하는 쿼리에 의해 참조되는 테이블에서 나오며 동적으로 생성됩니다. 뷰를 참조할 때 생성되는 뷰는 간단히 말해서 선택된 결과들로 구성된 테이블입니다.

mysql 뷰가 뭐야?

이 튜토리얼의 운영 환경: Windows 10 시스템, MySQL 버전 5.7, Dell G3 컴퓨터.

MySQL 뷰란 무엇입니까? 뷰 의미 및 사용법 분석

뷰란 무엇입니까

  • 뷰는 쿼리에 의해 내용이 정의되는 가상 테이블입니다.
  • 실제 테이블과 마찬가지로 뷰에는 일련의 명명된 열과 행 데이터가 포함되어 있습니다.
  • 행 및 열 데이터는 사용자 정의 보기의 쿼리에서 참조하는 테이블에서 나오며 보기가 참조될 때 동적으로 생성됩니다.
  • 간단히 말하면 뷰는 선택된 결과로 구성된 테이블입니다.

예를 들어
테이블 쿼리 명령어

SELECT * FROM 表名 ;
를 사용하세요.

테이블을 볼 수 있으며, 보이는 것을 뷰라고 합니다.

뷰의 특징

  • 뷰는 여러 기본 테이블, 가상 테이블, 쿼리문 실행 결과에 대한 참조입니다.
  • 특정 데이터를 저장하지 않습니다(기본 테이블 데이터가 변경되면 뷰도 변경됩니다).
  • 기본 테이블과 동일하게 추가, 삭제, 수정, 쿼리 작업을 수행할 수 있습니다. (추가, 삭제, 수정 작업에는 조건부 제한이 있습니다.)

뷰의 역할

  • 보안 강화: 뷰를 생성하고 해당 뷰에서 작동하는 데이터를 정의합니다. 그런 다음 사용자 권한을 보기에 바인딩합니다. 이 방법은 기능을 사용합니다. Grant 문은 뷰에 권한을 부여할 수 있습니다.
    예: 관리자가 쿼리한 데이터에는 각 사용자의 비밀번호가 포함되어 있으며 관리자는 사용자가 비밀번호를 보는 것을 원하지 않을 경우 관리자가 원하는 내용만 사용자에게 표시하도록 보기를 만들 수 있습니다. . Data
  • 쿼리 성능이 향상되었습니다.
  • 데이터 독립성이 향상되었습니다.

뷰 만들기

다음과 같은 학생 테이블이 있다고 가정합니다
mysql 뷰가 뭐야?

요구 사항: 뷰를 만들고 20세 이상의 학생을 쿼리

CREATE VIEW stu_age_view 
AS(SELECT * FROM stu WHERE age>20);

뷰를 클릭하면 열리는 테이블을 볼 수 있습니다. 방금 생성되었습니다mysql 뷰가 뭐야?
테이블에 있는 내용이 필수 내용입니다mysql 뷰가 뭐야?
뷰를 기반으로 원하는 내용을 계속해서 쿼리할 수 있습니다. 예를 들어 21세 이상의 ls라는 사람을 쿼리하면 효율성이 향상되고 운영 비용을 절감합니다.

보기 수정

CREATE OR REPLACE VIEW 视图名  AS(SELECT  [...]  FROM [...] );

예: 위에서 생성한 "stu_age_view" 보기는 20세 이상의 학생을 대상으로 했으나 이제는 모든 학생을 대상으로 수정되었습니다.

CREATE OR REPLACE VIEW stu_age_view 
AS(SELECT * FROM stu );

Delete view

DROP VIEW 视图名称;

View 메커니즘

Replacement

view 운영 시, view 이름은 view 정의로 직접 대체

수정

mysq | 뷰 실행 결과를 먼저 얻고, 그 결과가 중간 결과가 되어 메모리에 임시 저장됩니다.
외부 select 문은 이러한 중간 결과(임시 테이블)를 호출합니다.

교체와 구체화의 차이점

  • Replacement : 교체 방법, 뷰 수식을 교체한 후 전체 sq|로 처리합니다.
  • 사양 : 구체적인 방법으로 먼저 보기 결과를 처리한 다음 외부 쿼리 요구 사항을 처리합니다.

이해를 돕기 위해 예를 들어보겠습니다
위의 뷰를 생성할 때 20세 이상의 학생이 필요한 뷰를 생성했습니다
mysql 뷰가 뭐야?
그럼 이 뷰를 확인해 보겠습니다

SELECT * FROM stu_age_view ;

만약 그렇다면 대체 이면 내부 운영 논리는

SELECT * FROM (SELECT *FROM stu WHERE age >20) tihuan;

直接将stu_age_view的代码替换出来;
如果是具化式,那么它就是先把符合条件的查询出来放在一张表(内存)里,然后直接查询这张表。

(SELECT * FROM stu WHERE age >20) AS TEMPTABLE;SELECT * FROM TEMPTABLE;

上面这两条语句无法运行,只是为了方便举例提出

那么我们再说回创建视图

ALGORITHM参数(三个)

merge TEMPTABLE UNDEFINED
处理方式替换式,可以进行更新真实表中的数据 具化式,由于数据存储在临时表中,所以不可以进行更新操作 没有定义ALGORITHM参数,mysq更倾向于选择替换方式,因为它更加有效。

用参数创建视图

CREATE ALGORITHM = MERGE VIEW stu_age_viewAS(SELECT * FROM stu WHERE age >20);

还有两个需要注意的东西是

  • WITH CHECK OPTION

更新数据时不能插入或更新不符合视图限制条件的记录。
比如上面我们查询了一张年龄大于20的视图,那么在这张视图里面更新数据时如果年龄小于20则会报错。

  • LOCAL和CASCADED

为可选参数,决定了检查测试的范围,默认值为CASCADED

视图不可更新部分

  • 聚合函数
  • DISTINCT关键字
  • GROUP BY子句
  • HAVING子句
  • UNION运算符
  • FROM子句中包含多个表
  • SELECT语句中引用了不可更新视图
  • 只要视图当中的数据不是来自于基表,就不能够直接修改

【相关推荐:mysql视频教程

위 내용은 mysql 뷰가 뭐야?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.