视图
一张虚表,和真实的表一样。视图包含一系列带有名称的行和列数据。视图是从一个或多个表中导出来的,我们可以通过insert,update,delete来操作视图。当通过视图看到的数据被修改时,相应的原表的数据也会变化。同时原表发生变化,则这种变化也可以自动反映到视图中。
视图的优点:
1.简单化:看到的就是需要的。视图不仅可以简化用户对数据的理解,也可以简化操作。经常被使用的查询可以制作成一个视图
2.安全性:通过视图用户只能查询和修改所能见到的数据,数据库中其他的数据既看不见也取不到。数据库授权命令可以让每个用户对数据库的检索限制到特定的数据库对象上,但不能授权到数据库特定的行,列上
3.逻辑数据独立性:视图可帮助用户屏蔽真实表结构变化带来的影响一张虚表,和真实的表一样。视图包含一系列带有名称的行和列数据。视图是从一个或多个表中导出来的,我
们可以通过insert,update,delete来操作视图。当通过视图看到的数据被修改时,相应的原表的数据也会变化。同时原表发生变化,则这种变化也可以自动反映到视图中。
创建视图
Create [or replace替换] [algroithm视图选择的算法={
undefined|merge |temptable}] view 视图名[(column_list)] as select_statement [with[cascaded|local]check option]
[algroithm视图选择的算法={
undefined|merge |temptable}] Undefined:不常用。 merge :表示将使用的视图语句与视图定义合并起来,使视图定义的某一部分取代语句对应的部分 temptable :表示将视图的结果存入临时表,然后用临时表来执行语句
with[cascaded|local] Cascaded :默认为cascaded,表示更新视图时,满足所有相关视图和表的条件Local :表示更新视图时,满足该视图本身定义的条件即可
创建单表视图
mysql> CREATE TABLE t(quantity INT, price INT);
Query OK, 0 rows affected (0.04 sec)
mysql> INSERT INTO t VALUES(3,50);
Query OK, 1 row affected (0.03 sec)
mysql> CREATE VIEW view_t AS SELECT quantity,price,quantity*price FROM t;
Query OK, 0 rows affected (0.11 sec)
查看
mysql> SELECT * FROM view_t;
+----------+-------+----------------+
| quantity | price | quantity*price |
+----------+-------+----------------+
| 3 | 50 | 150 |
+----------+-------+----------------+
1 row in set (0.00 sec)
mysql> CREATE VIEW view_t2(qty,price,total) AS SELECT
quantity,price,quantity*price FROM t;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT * FROM view_t2;
+------+-------+-------+
| qty | price | total |
+------+-------+-------+
| 3 | 50 | 150 |
+------+-------+-------+
1 row in set (0.00 sec)
创建多表视图abc
MariaDB [mytest]> create table student
-> (
-> s_id int(3) primary key,
-> s_name varchar(30),
-> s_age int(3),
-> s_sex varchar(8)
-> );
Query OK, 0 rows affected (0.00 sec)
MariaDB [mytest]> create table stu_info
-> (
-> s_id int(3),
-> class varchar(50),
-> addr varchar(100)
-> );
Query OK, 0 rows affected (0.00 sec)
MariaDB [mytest]