--------------------------------------------------------- 小路原创 ------------------------------------------------
视图简介:
视图的本质是一个
虚拟的表,其内容和真实的表相似,包含一系列带有名称的列和行数据。但是,视图
并不在数据库中以存储的数据值形式存在。行和列数据来自定义视图的查询所引用基本表,并且在具体
引用视图时
动态生成。视图使程序员只关心感兴趣的某些特定数据和他们负责的特定任务。这样程序员
只能看到数据表中的部分数据,从而提高了数据库中数据的安全性。
视图的特点:
1、视图的列可以来自不同的表,是表的抽象和在逻辑意义上建立的新关系。
2、视图是由基表(实表)产生的表(虚表)。
3、视图的建立和删除不会影响到实表。
4、对视图内容的更新直接影响基表。
5、视图来自多个表时,不允许添加和删除数据。
一、创建视图
create view view_name
as 查询语句;
example:
create view view_buildings
as select * from buildings;
--查看视图内容
select * from view_buildings;
二、查看视图
--查看指定数据库中的所有表和视图
use db_name;
show tables;
example:
use school;
show tables;
--查看指定数据库中所有表和视图的详细信息
show table status [from db_name] [like 'pattern']
example:
show table status from school;
--查看指定数据库中视图对象的详细信息
show table status from db_name lile 'pattern';
example:
show table status from school like 'view_buildings';
--查看指定视图定义信息
show create view view_name;
example:
show create view view_buildings;
--查看指定视图的设计信息
describe|desc view_name;
example:
desc view_buildings;
describe view_buildings;
--使用系统表查看视图信息
--information_schema数据库中的views表中保存着所有视图的信息,views表中有一列叫table_name指向视图的名字。
use information_schema;
select * from table_name where table_name = 'view_name';
example:
use information_schema;
select * from views where table_name = 'view_buildings';
三、删除视图
drop view view_name1 [,view_name2]……;
example:
use school;
drop view view_buildings;
四、修改视图
1、使用create or replace view语句修改视图
use db_name;
create or replace view view_name
as 查询语句;
example:
use school;
create or replace view view_buildings
as
select Id,Name from buildings;
select * from view_buildings;
2、使用alter语句修改视图
alter view view_name
as 查询语句;
example:
alter view view_buildings
as
select * from buildings;
select * from view_buildings;
五、利用视图操作基表
通过视图查询数据和通过表查询数据完全一样,但是通过视图查询更安全、简单和实用。
通过对视图数据的修改实际是对基表中数据的修改。
注意:如果视图来自几个不同的表,不允许添加和删除数据。
1、查询视图中的数据
select * from view_name;
2、添加
视图中的
数据
insert into view_name(属性1,……属性n)
values(数据1,……数据n);
example:
insert into view_buildings
values(4,'4号教学楼','物理学院');
--下面可看到视图中的数据的更新会直接影响基表的数据。
select * from view_buildings;
select * from buildings;
3、删除
视图中的
数据
delete from view_name where conditions
example:
delete from view_buildings where Id = 4;
select * from view_buildings;
select * from buildings;
4、更新
视图中的
数据
update view_name set 属性名 = 新数据 where conditions;
example:
update view_buildings set Dept = '物理学院' where Id = 3;
select * from view_buildings;
select * from buildings;
--------------------------------------------------------- 小路原创 ------------------------------------------------