一、什么是视图?
视图时一个虚拟表(逻辑表),它不在数据库种以存储的形式保存(本身不包含数据),是在使用视图的时候动态生成。
二、视图作用?
1、查询数据库中的非常复杂的数据;
例如:多表,子查询 是,编写预计较多,并且查询通常被重复使用,那么我们就可以创建视图,避免每次写sql语句出现错误,也提高了查询的效率;
2、为了安全,在公司中有些字段为保密,那么可以创建视图,限制对某些字段的操作;
三、视图的优缺点?
优点:
1、提高查询效率
在数据库中非常复杂的数据,可以通过创建视图避免多次编写sql语句出现的错误
2、安全
有些是保密字段,通过创建视图来现在用户对某些字段进行操作
3、简单
不需要关心后面对应的表结构
缺点:
1、性能差
把视图查询结果转换成对表的查询
2、修改限制
修改视图数据,必须把它转化为对基础表的修改
======================================================
二、视图的使用
1、show tables 显示所有表
2、创建视图
格式:create view 视图名 as( sql)
案例:create view shitu as( select * from emp ,dept where dept1=dept2)
3、查看视图
格式:select * from 视图名;
案例:select * from shitu
4、查看创建的视图:(包含:视图名称,编码格式,创建语句)
格式:show create view 视图名
案例:show create view shitu ;
5、删除视图
格式:drop view 视图名;
格式:drop view 视图名;
案例:drop view shitu ;
=========================================
特点:
1、视图是由基础表产生的虚拟表
2、视图的创建和删除不影响基础表
3、视图的数据更新和删除直接影响基础表
案例1:UPDATE shitu set name=‘zs’ where sid=1789 ;(视图更新,基础表也更新)
案例2:”DELETE from shitu6 where name=‘zs’ ; (单表数据可以删除,多表数据无法删除)
4、视图不能修改表字段
报错:alter table shitu6 change name nm char(20) ; # ‘dcs.shitu6’ is not BASE TABLE无法修改表字段
5、基础表修改数据,视图也改
案例: 删除基础表 DELETE from emp where sid=1674
查看视图:select * from shitu6 ;
面试题:
1、数据库你会吗?会哪些?
会,数据库的增删改查,单表多表,视图,索引,外键,存储
2、讲下什么是视图?
3、视图的作用?
(1)安全作用
(2)简化sql语句
4、如何创建一个是视图?
5、如何删除是视图?
6、视图和基础表之间的关系?
=============================
解决多表中重复列问题:
第一种方法:添加需要的字段
select a.stu_no,a.stu_name,a.sex ,b.sc_no,b.c_no,b.score from student a ,sc b where a.stu_no=b.stu_no
第二种:表名.z* 显示一个表或两个表,在和另一个由重复字段的表根据字段编写;
select a.,c.,b.sc_no,b.score from student a ,sc b ,course c where a.stu_no=b.stu_no and c.c_no=b.c_no ;