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.结果:

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

注意事项

  • 运行创建视图的语句需要用户具有创建视图(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

时间: 2024-07-28 17:20:28

MySQL 视图使用初探的相关文章

7Python全站之路系列之MySQL视图

Python全栈之路系列之MySQL视图 视图是一个虚拟表(非真实存在),其本质是根据SQL语句获取动态的数据集,并为其命名,用户使用时只需使用名称即可获取结果集,并可以将其当作表来使用. 创建视图 创建一个名称为v1的视图,其功能就是查询color表中的所有数据 CREATE VIEW v1 AS SELECT * FROM color; 查看视图 使用视图时,将其当作表进行操作即可,由于视图是虚拟表,所以无法使用其对真实表进行创建.更新和删除操作,仅能做查询用. select * from 

第11章 mysql 视图

2015-10-24 目录 参考资料 [1] 唐汉明.深入浅出MySQL 数据库开发.优化与管理维护(第2版)[M].北京:人民邮电出版社,2014 [2] Schwartz.高性能MySQL(第3版)[M].北京:电子工业出版社,2013 [3] 范德兰斯.MySQL开发者SQL权威指南 [M].北京:机械工业出版社,2008 [4] Forta.MySQL必知必会 [M].北京:人民邮电出版社,2009 [5] mysql视图学习总结 [6] mysql之视图 [7] mysql之视图详解

八、mysql视图、存储过程、函数以及时间调度器

1.create or replace view emp_view as select * from t4 ;给t4表创建一个名为emp_view的视图 2.drop view emp_view 删除视图 ======================================= 1.创建一个存储过程(查询所有数据) create procedure p1 () READS SQL DATA BEGIN select * from t4; END 2.创建一个存储过程(查询传参数据) cre

MySQL视图view/存储过程和函数的使用

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px ".PingFang SC Semibold"; color: #454545 } p.p3 { margin: 0.0px 0.0px 2.0px 0.0px; font: 14.0px

深入解析MySQL视图view

阅读目录---深入解析MySQL视图 创建视图 查看视图 视图的更改 create or replace view alter DML drop 使用with check option约束 嵌套视图 定义视图时的其他选项:algorithm.definer.SQL security 视图查询语句的处理 替代方法 具体化方法 Q:什么是视图?视图是干什么用的? A: 视图(view)是一种虚拟存在的表,是一个逻辑表,本身并不包含数据.作为一个select语句保存在数据字典中的. 通过视图,可以展现

MySQL视图概述

1.介绍 在传统关系型数据库里,视图有时也被称作虚表,是基于特定SQL结果集的虚拟数据表.在有些场合会变得很方便,例如:原有系统重构,旧的数据表A和B已经被拆分和合并到数据表C.D.F里面,为了实现平滑迁移不影响对外数据业务,可以分别创建和原有数据表A和B一致的视图G和H,再实现数据层升级,不影响现有业务. 2.创建 创建MySQL视图语法如下 CREATE [ALGORITHM=[UNDEFINED | MERGE | TEMPTABLE] ] [DEFINER=用户名] [SQL SECUR

Mysql视图的作用及其性能分析

定义:视图是从一个或几个基本表导出的表,它与基本表不同,是一个虚表. 作用: 1.简化操作,不用进行多表查询. 2.当不同种类的用用户共享同一个数据库时,非常灵活,(用户以不同的 方式看待同一数据. 3.视图对重构数据库提供了一定程度的逻辑独立性. 数据的逻辑独立性是指:如增加新的关系或对原有的关系增加新的 字段,用户的应用程序不受影响. 例如:原有一个Student(Sno,Sname,Ssex,Sage,Sdept)这样一个表. 后来变动为:Sx(Sno,Sname,Sage)和SY(Sno

MySQL 视图知识点小结

视图本身是一个虚拟表,不存放任何数据.在使用SQL语句访问视图的时候,它返回的数据是MySQL从其他表中生成的.视图和表在同一个命名空间, MySQL在很多地方对于视图和表是同样对待的.不过视图和表也有不同.例如,不能在视图上创建触发器,也不能用DROP TABLE命令删除视图. 视图的实现算法: 合并算法:merge 临时表算法:tmptable 可更新视图(updatable view):可以通过更新视图来更新视图涉及的相关表. 如果视图定义中包含了group by .union.聚合函数.

mysql Partition(分区)初探

mysql Partition(分区)初探 表数据量大的时候一般都考虑水平拆分,即所谓的sharding.不过mysql本身具有分区功能,可以实现一定程度 的水平切分. mysql是具有MERGE这种引擎的,就是把一些结构相同的MyIASM表作为一个表使用,但是我觉得 MERGE不如partition实用, www.2cto.com 因为MERGE会在所有的底层表上查询,而partition只在相应的分区上查询. 建立了两个表,分别为分区和未分区的,分区表按年进行分区. Sql代码 CREATE