一、视图
视图是虚拟的数据表,本身不存储数据,而是提供数据的逻辑 展示。
1、创建视图
create view stu_view as
select s1.id, s1.name, s2.room, s2.stay_time
from student s1, stay s2
where s1.id = s2.id;
创建视图后,就可以像查询数据表一样查询视图。 视图的字段就是我们从数据表中查询而来的字段。
select id from stu_view desc stu_view
2、修改视图
alter view stu_view as
select s1.id, s1.name, s2.room, s2.stay_time
from student s1 left outer join stay s2
on s1.id = s2.id;
select * from stu_view
3、删除视图
drop view stu_view;
4、 在修改视图时,我们可以不使用alter,而是or replace。 在视图不存在时,创建视图,当视图存在时,替换视图。
create or replace view stu_view as
select s1.id, s1.name, s2.room, s2.stay_time
from student s1 left outer join stay s2
on s1.id = s2.id;
5、视图只是一个预存储的查询语句。(as后面的查询语句) 当我们查询视图时,视图的查询语句就会展开。(就是从 视图存储的查询语句(结果集)中查询。
select * from stu_view
select * from (
select s1.id, s1.name, s2.room, s2.stay_time
from student s1 left outer join stay s2
on s1.id = s2.id) x;
视图的特征:
1 视图作为预存储的查询语句,不能提高性能。
2 视图可以简化我们的输入操作。
3 视图可以提供相同数据表的不同逻辑展示。
二、
视图默认情况下,是以我们查询的字段命名。
#当视图的查询字段出现同名时(命名冲突)时,我们可以:
#1 使用别名 当使用别名时,视图字段会以别名来命名。
#2 自定义视图字段的名称
1、别名
create or replace view stu_view as
select s1.id stu_id, s2.id stay_id, s1.name, s2.room, s2.stay_time
from student s1 left outer join stay s2
on s1.id = s2.id;
desc stu_view;
2、自定义视图字段的名称,指定的字段数量与查询的字段数量必须一致。
create or replace view stu_view(field1, field2) as
select s1.id, s2.stay_time
from student s1 left outer join stay s2
on s1.id = s2.id;
desc stu_view;
三、索引
索引是数据表中一个特殊的对象。
优点:索引可以加快记录的查询速度。
缺点