1.为什么使用视图:
所谓视图就是一种虚拟表
不在数据库中以存储的数据值形式
在具体引用视图时动态生成
程序员只能看到视图中所定义的数据,而不是视图所引用表中的数据,提高了数据库中数据的安全性
1.1视图特点:
视图的列可以来自不同的表,是表的抽象和逻辑意义上建立的新关系
视图是由基本表(实表)产生的表(虚表)
视图的建立和删除不影响基本表
对视图内容的更新(添加、删除和修改)直接影响基本表
当视图来自多个基本表时,不允许添加和删除数据
2.创建视图:
在创建视图时,首先要确保拥有CREATE VIEW的权限,并且同时确保对创建视图所引用的表也具有相应的权限
2.1创建视图的语法形式:
create view view_name
AS 查询语句;
例如:
CREATE VIEW view_selectproduct
AS
SELECT id,name
FROM t_product;
2.2使用视图:
SELECT * FROM view_selectproduct;
2.3创建各种视图:
2.3.1常量视图:
CREATE VIEW view_test1
AS
SELECT 3.1415926;
2.3.2实现聚合函数:
CREATE VIEW view_test2
AS
SELECT COUNT(name) FROM t_student;
2.3.3实现排序功能:
CREATE VIEW view_test3
AS
SELECT name FROM t_student ORDER BY id DESC;
2.3.4实现表内连接查询语句:
CREATE VIEW view_test4
AS
SELECT s.name FROM t_student as s, t_group as g WHERE s.group_id=g.id AND g.id=2;
2.3.5实现表外连接:
CREATE VIEW view_test5
AS
SELECT s.name FROM t_student as s LEFT JOIN t_group as g ON s.group_id=g.id WHERE g.id=2;
2.3.6实现子查询相关查询语句:
CREATE VIEW view_test6
AS
SELECT s.name FROM t_student AS s WHERE s.group_id IN (SELECT id FROM t_group);
2.3.7实现记录联合:
CREATE VIEW view_test7
AS
SELECT id,name FROM t_student UNION ALL SELECT id,name FROM t_group;
3.查看视图:
3.1SHOW TABLES语句查看视图名:
SHOW TABLES;
3.2SHOW TABLE STATUS语句查看视图详细信息:
SHOW TABLE STATUS [FROM db_NAME] [LIKE 'pattern'];
3.3SHOW CREATE VIEW语句查看视图定义信息:
SHOW CREATE VIEW viewname;
3.4DESCRIBE|DESC语句查看视图设计信息:
DESCRIBE|DESC viewname;
3.5通过系统表查看视图信息:
当MySQL数据库安装成功后,会自动创建系统数据库information_schema。在该数据库中存在一个包含视图信息的表格views,可以通过查看表格view来查看所有视图的信息
USE information_schema;
SELECT * FROM views WHERE table_name='view_selectproduct' \G
4.删除视图:
DROP VIEW view_name [,view_name]... ...
5.修改视图:
5.1CREATE OR REPLACE VIEW语句修改视图:
CREATE OR REPLACE VIEW view_selectproduct as 查询语句;
5.2ALTER语句修改视图:
ALTER VIEW viewname as 查询语句;
6.利用视图操作基本表:
视图来自多个基本表时,不允许添加和删除数据
视图view_product查询所有字段
6.1添加数据:
INSERT INTO view_product (id,name,price,order_id) VALUES (11,'PEAR4',12.3,2);
6.2删除数据:
DELETE FROM view_product WHERE name='apple1';
6.3更新数据:
UPDATE view_product SET price=3.5 WHERE name='pear1';