mysql之视图

1.视图不是真正存在的表, 数据库存储视图的定义, 在实际使用时及时生成结果

2.其属性名可以显示的给出:

create view v_name(c1, c2, c3) as <query statment>

给定属性的数量要和查询语句输出的数量一致

3.视图可以用来再次定义下一个视图

4.视图的数据能根据原始表中的数据的更改而自动更新

5.通常来说不能向视图删除插入数据, 除非视图中的所有数据都来自同一个表, 不然出以下错

    ERROR 1393 (HY000): Can not modify more than one base table through a join view 'test.salary_view'

对于来自多个表的视图进行删除同样也是不行的, 这是错误提示

    ERROR 1395 (HY000): Can not delete from join view 'test.salary_view'

创建视图的语法:

create view v_name as <any ligal query statment>

修改视图中的数据是允许, 并且会写入到原始表中

查看视图

select * from information_schema.VIEWS;

单是对视图更新将会更新实表中的数据

这是一个连接person和salary的视图

mysql> select * from salary_view;
+------+-------+--------+
| pid  | pname | salary |
+------+-------+--------+
| 888  | tom   |   6742 |
| 666  | jerry |   4231 |
+------+-------+--------+
2 rows in set (0.00 sec)

我们对视图进行更新

mysql> update salary_view set pname = 'xxxxxx' where pname="tom";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

再次查看视图的结果, 可以看出视图的数据发生了改变

mysql> select * from salary_view;
+------+--------+--------+
| pid  | pname  | salary |
+------+--------+--------+
| 888  | xxxxxx |   6742 |
| 666  | jerry  |   4231 |
+------+--------+--------+
2 rows in set (0.00 sec)

那么原始表person呢, 很明显出现的xxxxxx那一个值

mysql> select * from person;
+------+---------+
| id   | name    |
+------+---------+
| 111  | xanarry |
| 111  | xanarry |
| 222  | marry   |
| 333  | bob     |
| 444  | carly   |
| 888  | xxxxxx  |
| 666  | jerry   |
+------+---------+
7 rows in set (0.00 sec)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值