学生表:Student (Sno, Sname, Ssex , Sage, Sdept)
学号,姓名,性别,年龄,所在系 Sno为主键
课程表:Course (Cno, Cname,)
课程号,课程名 Cno为主键
学生选课表:SC (Sno, Cno, Score)
学号,课程号,成绩 Sno,Cno为主键
1、创建一视图 stu_info,查询全体学生的姓名,性别,课程名,成绩。
2、删除视图 stu_info。
Ⅰ创建视图
CREATE VIEW stu_info AS
SELECT Student.Sno, Student.Sname, Student.Ssex, Course.Cname, SC.Score
FROM Student
JOIN SC ON Student.Sno = SC.Sno
JOIN Course ON SC.Cno = Course.Cno;
查看视图:
要查看已经创建的视图,可以使用SHOW CREATE VIEW
语句或SHOW FULL TABLES
语句来列出数据库中的视图信息。
-
使用
SHOW CREATE VIEW
语句查看视图的定义SHOW CREATE VIEW view_name;
将
view_name
替换为要查看的视图名称。执行此语句后,将显示包含视图定义的结果集。在结果中,可以找到视图的名称、列名和查询语句。 -
使用
SHOW FULL TABLES
语句查看数据库中的视图:SHOW FULL TABLES WHERE Table_type = 'VIEW';
这条语句将列出数据库中的所有视图。它返回一个结果集,其中包含视图的名称和类型(在这种情况下,类型为"VIEW")。
请注意,在执行上述语句之前,请确保已经连接到正确的MySQL数据库,并具有足够的权限来执行这些操作。
另外,还可以使用SELECT
语句查询视图的数据,就像查询表一样。例如:
SELECT * FROM view_name;
当涉及到数据库中的视图时,它是一个虚拟的表,是由一个或多个基本表的结果集构成的。视图并不实际存储数据,而是根据定义的查询语句动态生成结果。通过视图,可以以一种简化的方式检索、更新或操作数据。
以下是关于MySQL视图的一些详细信息:
-
视图的创建:
视图是使用
CREATE VIEW
语句创建的。视图的定义由一个SELECT语句构成,该SELECT语句指定了视图的列和数据来源。创建视图的语法如下:CREATE VIEW view_name AS SELECT column1, column2, ... FROM table_name WHERE condition;
这里的view_name
是视图的名称,column1, column2, ...
是要在视图中包含的列,table_name
是用于构建视图的基本表,WHERE condition
是可选的,用于筛选基本表的数据。
2.视图的使用:
创建视图后,可以像查询表一样使用视图。可以通过在查询中引用视图名称来检索、过滤或操作视图的数据。视图提供了一个抽象层,隐藏了底层表的复杂性,并提供了更简洁、易于理解的查询接口。
3.视图的更新:
在某些情况下,可以对视图进行更新操作。可以使用带有适当限制的UPDATE
、INSERT
和DELETE
语句来更新视图。这些更新操作实际上会反映在底层表中。
需要注意的是,并非所有的视图都可以进行更新操作。更新视图的条件包括视图必须基于单个表、视图必须具有唯一的行标识、视图不能包含聚合函数或DISTINCT
关键字等。
4.视图的优点:
- 简化复杂的查询:通过创建视图,可以将复杂的查询逻辑封装起来,使得查询更易读、易维护。
- 数据安全性:可以通过视图限制用户对底层表的访问权限,只暴露部分数据给用户,提高数据安全性。
- 逻辑独立性:当底层表结构发生变化时,视图可以保持不变,提供了一种逻辑独立性。
5.视图的限制:
- 视图不能包含
ORDER BY
子句,除非在查询视图时明确指定ORDER BY
。 - 视图不能直接修改,必须使用适当的
UPDATE
、INSERT
和DELETE
语句修改基本表。 - 视图不能索引,因为视图本身不存储数据。