MySQL必知必会个人笔记
第1-20章
https://blog.csdn.net/EPFL_Panda/article/details/100579485
第21章 创建和操纵表
第22章 视图
1、定义:视图是虚构的表,把查询语句包装成一个视图,实际并不包含数据
2、使用场景:
- 重用SQL语句并且不需要知道细节
- 选择性的使用表的几列而不是全部
- 保护数据,权限限制
- 更改数据的表示格式
3、重要的使用限制
- 视图中的ORDER BY会被使用时的覆盖
- 试图不能有索引、触发器和默认值
- 视图可以和表链接
4、视图的使用
- 隐藏复杂SQL语句
CREATE VIEW productcustomer as
SELECT cust_name,cust_contact,prod_id
FROM customers,orders,orderitems
WHERE customers.cust_id = orders.cust_id
AND orderitems.prod_id = orders.prod_id
- 重新格式化检索出的数据
CREATE VIEW vendorlocations AS
SELECT Concat(RTrim(vend_name),' (',RTrim(vend_country), ")') As vend_title
FROM vendors
ORDER BY vend_name
- 用视图过滤掉不需要的数据
CREATE VIEw customeremaillist AS
SELECT cust_id, cust_name,cust_email
FROM customers
wHERE cust_email IS NOT NULL
- 使用视图计算字段
CREATE VIEW orderitemsexpanded AS
SELECT order_num,prod_id,quantity,item_price,
quantity*item_price As expanded_price
FROM orderitems
5、视图更新的限制
视图一般可以使用UPDATE和INSERT语句进行更新,更新会体现在基表中。但若有以下情况则会无法更新:
- 分组(包含GROUP BY和HAVING语句)
- 链接
- 子查询
- 并
- 聚集函数
- DISTINCT
- 导出(计算列)
第23章 存储过程
1、定义:多条SQL语句组成的一整个过程。(类似函数)
2、使用存储过程
CALL productpricing(@pricelow,@pricehigh,@priceaverage)
CALL + 【 存储过程名 】(参数)
3、创建存储过程
CREATE PROCEDURE productpricingo()
BEGIN
SELECT Avg(prod_price) As priceaverageFROM products ;
END;
CREATE PROCEDURE + 【存储过程名】(参数列表)
BEGIN
要执行的SQL语句
END
4、删除存储过程
DROP PROCEDURE productpricing;