MySQL视图例题

学生表: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语句来列出数据库中的视图信息。

  1. 使用SHOW CREATE VIEW语句查看视图的定义

    SHOW CREATE VIEW view_name;
    

    view_name替换为要查看的视图名称。执行此语句后,将显示包含视图定义的结果集。在结果中,可以找到视图的名称、列名和查询语句。

  2. 使用SHOW FULL TABLES语句查看数据库中的视图:

    SHOW FULL TABLES WHERE Table_type = 'VIEW';
    

        这条语句将列出数据库中的所有视图。它返回一个结果集,其中包含视图的名称和类型(在这种情况下,类型为"VIEW")。

        请注意,在执行上述语句之前,请确保已经连接到正确的MySQL数据库,并具有足够的权限来执行这些操作。

另外,还可以使用SELECT语句查询视图的数据,就像查询表一样。例如:

 

SELECT * FROM view_name;

当涉及到数据库中的视图时,它是一个虚拟的表,是由一个或多个基本表的结果集构成的。视图并不实际存储数据,而是根据定义的查询语句动态生成结果。通过视图,可以以一种简化的方式检索、更新或操作数据。

以下是关于MySQL视图的一些详细信息:

  1. 视图的创建:

    视图是使用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.视图的更新:

        在某些情况下,可以对视图进行更新操作。可以使用带有适当限制的UPDATEINSERTDELETE语句来更新视图。这些更新操作实际上会反映在底层表中。

需要注意的是,并非所有的视图都可以进行更新操作。更新视图的条件包括视图必须基于单个表、视图必须具有唯一的行标识、视图不能包含聚合函数或DISTINCT关键字等。

     4.视图的优点:

  1. 简化复杂的查询:通过创建视图,可以将复杂的查询逻辑封装起来,使得查询更易读、易维护。
  2. 数据安全性:可以通过视图限制用户对底层表的访问权限,只暴露部分数据给用户,提高数据安全性。
  3. 逻辑独立性:当底层表结构发生变化时,视图可以保持不变,提供了一种逻辑独立性。

    5.视图的限制:

  1. 视图不能包含ORDER BY子句,除非在查询视图时明确指定ORDER BY
  2. 视图不能直接修改,必须使用适当的UPDATEINSERTDELETE语句修改基本表。
  3. 视图不能索引,因为视图本身不存储数据。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dlluo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值