第7章视图电子笔记

视图的定义:视图是从基本表中导出来的表,是一种虚拟存在的表,基于真实的基础 表,它的结构和数据也依赖于基本表,可以像操作基本表一样,例如查询,修改,删除。
视图的优点:
1.简化查询语句。
2.安全性。
3.逻辑数据独立性

视图的管理:

创建视图的语法格式:

   create view view_name  as select_statement

注意:视图是属于数据库的,所有在创建视图的时候要选择一个数据库,如果已经use database,则在当前数据库创建视图,如果没有use database 那么创建视图的时候我们就需要将视图名指定为databasename.view_name。
1.在单表上创建视图:
案例:基于student表创建一个名字为view_stu的视图.
*第一步:*创建一个数据库为chapter07,并选择使用该数据库。

   create database chapter07;

使用chapter07数据库。

    use chapter07;

第二步:在数据库里创建一个student基本表,并添加数据。

create table student(
    s_id int(3),
    name varchar(20),
    math float,
    chinese float
    );

向表中插入数据:

  insert into student (s_id,name,math,chinese) values (1,"tom",80,78);
  insert into student (s_id,name,math,chinese) values (2,"jack",70,80);
  insert into student (s_id,name,math,chinese) values (3,"lucy",97,95);
 

第三步:创建一个view_stu视图,显示math,Chinese,math+chinese信息。

    create view view_stu as select math,chinese,math+chinese from student;

查看视图数据:

    select * from view_stu;

案例:创建一个view_stu2的视图,自定义字段名称。

 create view view_stu2 (math,chinese,Sum)
  as 
  select math,chinese,math+chinese
  from student;

2.在多表上创建视图:
案例:在student表和stu_info表上创建一个stu_class视图,查询出s_id号,姓名,班级。
第一步:由于student表前面已创建,这里只创建stu_info表,并插入数据。

create table stu_info(
    s_id int(3),
    class varchar(50),
    addr varchar(100)
    );
   

向表中插入数据:

  insert into stu_info (s_id,class,addr) values (1,"2班","安徽");
  insert into stu_info (s_id,class,addr) values (2,"3班","重庆");
  insert into stu_info (s_id,class,addr) values (3,"1班","山东");
 

第二步:创建stu_class视图,查询出s_id号,姓名,班级。

create view stu_class (id号,姓名,班级)
    as 
    select student.s_id,student.name,stu_info.class 
    from student,stu_info
    where student.s_id=stu_info.s_id;

查看视图

1.使用describe语句查看数据。可以查看视图的字段名,字段类型等信息。
语法格式:

describe 视图名;或者desc 视图名;

案例:查看stu_class视图。

desc stu_class;

2.使用show table status 语句查看视图。
语法格式:

show table status like “视图名”;

案例:查看stu_class视图。

show table status like "stu_class"\G;

3.使用show create view 查看视图。可以查看创建过程和视图的字符编码。
语法格式:

show create view 视图名;

案例:查看stu_class视图。

show create view stu_class\G;

修改视图

1.使用 create or replace view 语句修改视图
语句格式:

create [or replace] view 视图名 as select statement

案例:修改view_stu视图。

 create or replace view  view_stu 
 as 
 select * from student;

2.使用alter 语句修改视图
语句格式:

alter view 视图名 as select_statement;

案例: 修改view_stu视图。

  alter view view_stu as select chinese from student;

更新视图:

1.使用update 语句更新视图
案例:更新视图中chinese字段的值为100.

 update view_stu set chinese=100;

2.使用insert 语句更新视图。
案例:插如name=lily的相关数据。

 insert into student values (4,"lily",100,100);

3.使用delete 语句更新视图。
案例:使用delete删除math值为70的一条数据。

 delete from view_stu2 where math=70;

注意事项:尽管更新视图有多种方式,但是并非所有情况下都能执行视图的更新操作。当视图中 包含以下内容时,视图的更新操作将不能执行。
1.视图中包含基本表中被定义为非空的列。
2.在定义视图的select语句后的字段列表中使用了数学表达式。
3.在定义视图的select语句后的字段列表中使用了聚合函数。
4.在定义视图的select语句中使用了distinct,union,top,group by 或者 having子句。

删除视图:

使用drop view 删除视图。
语法结构:

 drop view [if exists] 视图名[,视图名] [restrict|cascade]

案例:删除view_stu2视图

drop view view_stu2;
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值