MySQL 视图使用初探

<一> 视图

1.优点
  • 视点集中

  • 简化操作

  • 定制数据

  • 合并分割数据

  • 安全性

2.为什么需要视图?

  视图是存储在数据库中的查询的sql 语句,它主要出于两种原因:

  • 安全原因,视图可以隐藏一些数据,如社会保险基金表,可以用视图只显示姓名,地址,而不显示社会保险号和工资数等,

  • 可使复杂的查询易于理解和使用。

3.创建视图的语法

CREATE VIEW view_name 
    AS
        SELECT column_name(s)
        FROM table_name
        WHERE condition

[注]:视图总是显示最近的数据。每当用户查询视图时,数据库引擎通过使用 SQL 语句来重建数据。

4.更新视图的语法

CREATE OR REPLACE VIEW view_name 
    AS
        SELECT column_name(s)
        FROM table_name
        WHERE condition

5.删除视图的语法

DROP VIEW view_name


<二>例子

1.创建两张表,并插入数据

product 表

create table product  
(  
product_id int not null,  
name varchar(50) not null,  
price double not null  
);  
insert into product values(1, 'apple ', 5.5);

purchase 表

create table purchase  
(  
id int not null,  
product_id int not null,  
qty int not null default 0,  
gen_time datetime not null  
);  
insert into purchase values(1, 1, 10, now());
2.创建视图:
create view purchase_detail as 
	select product.name as name, product.price as price, purchase.qty as qty, 
	product.price * purchase.qty as total_value
	from product, purchase 
	where product.product_id = purchase.product_id;
3.创建视图后,查询:
select * from purchase_detail;
4.结果:

151250_F3eo_583145.png

<三>.创建视图的注意事项

注意事项

  • 运行创建视图的语句需要用户具有创建视图(crate view)的权限,若加了[or replace]时,还需要用户具有删除视图(drop view)的权限;

  • select语句不能包含from子句中的子查询;

  • select语句不能引用系统或用户变量;

  •  select语句不能引用预处理语句参数;

  • 在存储子程序内,定义不能引用子程序参数或局部变量;

  • 在定义中引用的表或视图必须存在。但是,创建了MySQL视图后,能够舍弃定义引用的表或视图。要想检查视图定义是否存在这类问题,可使用check table语句;

  • 在定义中不能引用temporary表,不能创建temporary视图;

  •  在视图定义中命名的表必须已存在;

  • 不能将触发程序与视图关联在一起;

  • 在视图定义中允许使用order by,但是,如果从特定视图进行了选择,而该视图使用了具有自己order by的语句,它将被忽略。

<四>.修改视图

使用 alter view

alter view purchase_detail 
	as 
		select 
			product.name as name, 
			product.price as price, 
			product.price * purchase.qty as total_value 
		from 
			product, purchase 
		where 
		        product.product_id = purchase.product_id;

参考:http://database.51cto.com/art/201005/200526.htm


转载于:https://my.oschina.net/pingjiangyetan/blog/514811

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值