이 글에서는 뷰의 소개와 역할, 뷰 생성, 뷰 수정, 뷰 업데이트, 뷰 강조, 뷰 연습 등 데이터베이스 뷰와 관련된 문제를 주로 정리하는 mysql에 대한 관련 지식을 제공합니다. ., 아래에서 살펴보겠습니다. 모두에게 도움이 되기를 바랍니다.
추천 학습: mysql 동영상 튜토리얼
뷰 소개:
create [or replace] [algorithm = {undefined | merge | temptable}] view view_name [(column_list)] as select_statement [with [cascaded | local] check option]
algorithm: 은 뷰 선택을 위한 알고리즘을 나타내며 선택 사항입니다.
alter view 视图名 as select语句;
4 보기 업데이트모든 보기를 업데이트할 수 있는 것은 아닙니다. UPDATE, DELETE 또는 INSERT 문에서 뷰를 사용하여 기본 테이블의 내용을 업데이트할 수 있습니다. 뷰를 업데이트할 수 있으려면 뷰의 행과 기본 테이블의 행 사이에 일대일 관계가 있어야 합니다. 뷰에 다음 구조 중 하나라도 포함되어 있으면 뷰를 업데이트할 수 없습니다.
HAVING;
UNION 또는 UNION ALL; 리 ;일반적으로 뷰를 통해 데이터를 업데이트하는 것보다 데이터 쿼리를 위한 가상 테이블로 뷰를 사용하는 것이 좋습니다.
rename table 视图名 to 新视图名;
drop view if exists 视图名;
뷰 삭제 시 뷰 정의만 삭제되고 실제 뷰는 삭제됩니다. 테이블의 데이터는 삭제되지 않습니다
여러 뷰를 동시에 삭제하려면 다음 구문 형식을 사용하세요.drop view if exists 视图名1, 视图名2, 视图名3...;
6.1 데이터 준비연습을 할 때 먼저 연습을 위한 두 개의 기본 테이블을 만듭니다.
create table college( cno int null, cname varchar(20) null);
create table student( sid int null, name varchar(20) null, gender varchar(20) null, age int null, birth date null, address varchar(20) null, score double null);
两表的基本数据如下图所示:
结合之前学过的知识可以 尝试使用子查询和连接查询 来实现,参考代码如下:
SELECT cname FROM (SELECT cname, rank() over (order by avg_score desc ) item FROM (SELECT cname, avg(score) avg_score FROM student JOIN college ON sid = cno GROUP BY cname) t) tt WHERE item = 1;
在上述代码中,先将student 与 college两表关联,将关联的查询作为子表,并根据子表进行平均数的排序,平均数序号为1的平均分数最高,再以此为子表进行子查询,查询出了平均分最高的学校。具体结果如下:
这种方式虽然能够解决问题,但是相对复杂,不容易看懂,为了简化代码,我们可以将每一个子查询创建为一个视图
视图解决方式代码:
-- 1 视图一,连接两表并计算平均数 CREATE VIEW t_view AS SELECT cname, avg(score) avg_score FROM student JOIN college ON sid = cno GROUP BY cname; -- 2 视图二,利用视图一对平均分数进行排序标号 CREATE VIEW tt_view AS SELECT cname, rank() over (order by avg_score desc ) item FROM (t_view); -- 3 利用视图查询 SELECT cname FROM (tt_view) WHERE item = 1;
在创建完视图后,如果想要查询平均分前三名学校,则方便很多,创建好的视图可以直接使用!
参考代码及结果:
SELECT cnameFROM (tt_view)WHERE item = 1 OR item = 2 OR item = 3;
推荐学习:mysql视频教程
위 내용은 MySQL 데이터베이스 뷰의 상세 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!