数据库笔记 day04
2019/8/23 周五
学习内容:视图,触发器,存储过程,变量,if else语句,范式
关键字:create view;describe;select;drop;delimiter ; create trigger;before;after;new ;old ;create procedure;in;out;call;set @;if then else;
视图
- What:试图(view)是一个虚拟表,可以从数据库中的一个或者多个表中导出来(也可以在已经存在的视图的基础上定义)。视图本身并不包含任何数据,只是一种映射,其本质是封装了一条查询语句。
- Why:视图可以用来封装复杂的sql语句,也可以对机密数据提供安全保护。
- How:如何使用视图?
1. 创建视图:create view
语法:CREATE VIEW 视图名 AS 查询语句
下段代码为制作一个给销售人员看的商品视图,连接了商品类型表和商品表,包含商品名称,出售价格,商品的类型,产地信息
create view view_sellset as
select c.c_name as 商品名称, c.c_madein as 商品产地, ct.ct_name as 商品类型, c.c_outprice as 商品售价
from commodity as c inner join commoditytype as ct on c.c_type=ct.ct_id
where c.c_outprice is not null; # 过滤掉没有售价的商品
创建视图时,可以给原来数据表中的字段设置显示新的名称,用as关键字
2. 查看视图信息
(1)DESCRIBE 视图名;
查看视图的基本信息
describe view_sellset;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| 商品名称 | varchar(50) | NO | | NULL | |
| 商品产地 | varchar(50) | NO | | NULL | |
| 商品类型 | varchar(50) | NO | | NULL | |
| 商品售价 | int(11) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.12 sec)
(2)SHOW TABLE STATUS LIKE ‘视图名’;
查看视图基本信息,但在这个案例中尝试,显示出来的信息除了视图名之外,其他属性全是null
(3)SHOW CREATE VIEW 视图名;
查看视图的详细信息,可以显示出创建视图时写的语句
3. 查看视图里的详细数据:select
查看视图信息与查看数据表中的信息一样,使用select关键字
select * from view_sellset;
输入上面的查询命令,得到的结果为MySQL拼接好的视图(后面省略)
+-----------------------+---------+----------+---------+
| 商品名称 | 商品产地 | 商品类型 | 商品售价 |
+-----------------------+---------+----------+---------+
| 变形金刚-擎天柱 | 中国 | 玩具 | 50 |
| 变形金刚-霸天虎 | 中国 | 玩具 | 45 |
·······
4. 更新视图
视图像表一样有插入、修改、删除表中数据的操作,用法与表的操作一样,使用insert into、update和delete关键字。下面试一下修改数据
update view_sellSet set 商品售价=20 where 商品名称='变形金刚-擎天柱';
因为视图是一个虚拟表,对视图的增删改操作,实际上是对其基本表的增删改,重新查