概念:视图是存储的sql脚本,并没有存储具体的数据,具体数据还是存储在脚本所引用的表中了(例如你提到的表1和表2)。视图只是从表1和表2中提取数据,所以,当表中的内容更改了,实体中的内容也就更改了(因为数据是来源表)。
其实就是相当于我们带着眼镜(视图)看世界(表),世界(表)内容变了,眼镜(视图)中看到的自然也就变了。
例子:
表A:
+----+--------+-----+--------+------------+
| id | name | age | sex | intime |
+----+--------+-----+--------+------------+
| 1 | 张三 | 16 | 男 | 1366691577 |
| 2 | 刘能 | 26 | 男 | 1366691693 |
| 3 | 王洁 | 15 | 女 | 1366691726 |
| 4 | 张玉 | 19 | 保密 | 1366691753 |
| 5 | 李莉 | 16 | 保密 | 1366698715 |
+----+--------+-----+--------+------------+
表B:
+-----+-----------+-------+------------+------------+
| gid | goodsname | price | codeinfo | intime |
+-----+-----------+-------+------------+------------+
| 1 | 铅笔 | 3.69 | 1254632126 | 1366698374 |
+-----+-----------+-------+------------+------------+
创建视图:
mysql> create view `shitu` as select * from user union select * from goods;
查看视图:
mysql> select * from shitu;
+----+--------+-------+------------+------------+
| id | name | age | sex | intime |
+----+--------+-------+------------+------------+
| 1 | 张三 | 16.00 | 男 | 1366691577 |
| 2 | 刘能 | 26.00 | 男 | 1366691693 |
| 3 | 王洁 | 15.00 | 女 | 1366691726 |
| 4 | 张玉 | 19.00 | 保密 | 1366691753 |
| 5 | 李莉 | 16.00 | 保密 | 1366698715 |
| 1 | 铅笔 | 3.69 | 1254632126 | 1366698374 |
+----+--------+-------+------------+------------+
疑问: 那么 ,我现在已经创建了视图 ,现在多了一个表3,怎么修改视图、添加表三呢?要是去掉表二呢?
添加表三
DROP VIEW 视图名字;
CREATE VIEW 视图名字 AS
SELECT id, name FROM table1
UNION ALL
SELECT id, name FROM table2
UNION ALL
SELECT id, name FROM table3;
要是去掉表二
DROP VIEW 视图名字;
CREATE VIEW 视图名字 AS
SELECT id, name FROM table1
UNION ALL
SELECT id, name FROM table3;
因为 视图本身不包含数据, 因此可以采用 先删除, 再创建的方式来处理.
(注意: 这里删除的是 视图. 不要删除错了. 不是 删除表 )