MySQL数据库--视图

一.视图的概述

        视图是一个虚拟表,是从数据库中一个或多个表中导出来的表。视图还可以从已经存在的视图的基础上定义。

        对视图的操作与对表的操作一样,可以对其进行查询、修改和删除。

二.视图的优点

①简单化

        视图可以简化用户对数据的理解和操作,那些被经常使用的查询可以被定义为视图

②安全性

        通过视图用户只能查询和修改他们所能见到的数据。数据库中的其他数据既看不见也取不到

③逻辑数据独立性

        视图可帮助用户屏蔽真实表结构变化带来的影响

三.语法结构

MySQL数据库--视图_第1张图片

五.案例实战

# 1.在student表和score表上创建一个名为stu_score的视图。视图中保留18级的女生的学号、姓名、电话、课程号和结业成绩。
-- 删除stu_score视图
drop
    view if exists stu_score;

-- 创建stu_score视图
create
    view stu_score(学号, 姓名, 电话, 课程号, 结业成绩) as
select
    s1.S_no,
    s1.S_name,
    s1.phone,
    s2.C_no,
    s2.final
from
    student s1
    join score s2 on s1.S_no = s2.S_no
where
    s1.S_no like '18%' and s1.S_sex = '女';

-- 查看stu_score视图
select
    *
from
    stu_score;

# 2.创建视图v_teach,统计软件学院的教师中不是教授或副教授的教师号、教师名和专业。
-- 删除v_teach视图
drop
    view if exists v_teach;

-- 创建v_teach视图
create
    view v_teach(教师号, 教师名, 专业) as
select
    t_no,
    T_name,
    major
from
    teacher
where
    prof not in ('教授', '副教授') and Department = '软件学院';

-- 查看v_teach视图
select
    *
from
    v_teach;

# 3.查看视图stu_score定义情况。
show
create
    view stu_score;

# 4.修改视图v_teach,统计软件学院的教师中的教授或副教授的教师号、教师名和专业,并在视图名后指明视图列名称。
-- 修改v_teach视图
alter
    view v_teach(教师号, 教师名, 专业) as
select
    t_no,
    T_name,
    major
from
    teacher
where
    Department = '软件学院'
    and prof in ('教授', '副教授');

-- 查看v_teach视图
select
    *
from
    v_teach;

# 5.删除视图v_teach。
drop
    view if exists v_teach;

# 6.通过视图v_teacher,插入一条纪录(‘t07027’,‘谢天’,‘教育学’,‘副教授’,‘计算机学院’)
-- 创建v_teacher视图
create
    view v_teacher as
select
    *
from
    teacher;

-- 向v_teacher视图插入一条纪录
insert into
    v_teacher
values
    ('t07027', '谢天', '教育学', '副教授', '计算机学院');

-- 查看v_teacher视图
select
    *
from
    v_teacher;

# 7.通过视图v_teacher,修改‘t07019’的职称为副教授。
-- 通过v_teacher视图更新数据
update
    v_teacher
set
    prof = '副教授'
where
    t_no = 't07019';

-- 查看v_teacher视图
select
    *
from
    teacher;

# 8.通过视图v_teacher,删除教师号为‘t07027’的纪录。
-- 通过v_teacher视图删除数据
delete from
    v_teacher
where
    t_no = 't07027';

-- 查看v_teacher视图
select
    *
from
    teacher;

你可能感兴趣的:(MySQL数据库,数据库,mysql)