存储过程和视图

一、存储过程
SQL语句要先编译,然后再被执行。在大型数据库系统中,为了提高效率,将为了完成特定功能的SQL语句集进行编译优化后,存储在数据库服务器中,用户通过指定存储过程的名字来调用执行。

使用存储过程可以增强SQL语句的功能和灵活性,并且可以保证数据的安全性和完整性,同时存储过程可以使没有权限的用户在控制之下间接地存取数据库,也保证了数据的安全。
但存储过程不等同于函数,两者虽然本质上没有区别,但还是有以下几方面的区别:
(1)存储过程一般是作为独立的部分来执行的,而函数可以作为查询语句的一个部分来调用
(2)一般存储过程实现的功能较为复杂,函数实现的功能针对性较强
(3)存储过程可以返回多个参数,而函数只能返回一个参数
(4)函数可以嵌入在SQL中使用,可以在select中调用,但存储过程不能
(5)函数不能直接操作实体表,只能操作内建表
(6)存储过程在创建时即在服务器上进行了编译,执行速度更快
————————————————

二、视图
视图是从数据库的基本表中选取出来的数据组成的逻辑窗口,它是一个虚表,它包含的不是数据而是根据需要检索数据的查询。视图定义了一种封装SELECT语句的层次,可用来简化数据处理,重新格式化或保护基础数据。在数据库中,存放的只是视图的定义而已,不存放视图包含的数据,这些视图仍存放在原来的基本表结构中

通过引入视图机制,用户可以将注意力集中在其关心的数据上而非全部数据,提高了用户效率和用户满意度。定义视图可以将表与表之间复杂的操作连接和搜索条件对用户不可见,用户只需简单的对一个视图进行查询即可,所以增加了数据的安全性,但是不能提高查询的效率。

CREATE VIEW ProductCustomers AS --视图必须唯一命名,创建视图
SELECT cust_name,cust_contact,prod_id
FROM Customers,Orders,OrderItems
WHERE Customers.cust_id=Orders.cust_id AND OrderItems.order_num=Orders.order_num;  

#可以这样使用视图
SELECT*
FROM ProductCustomers
WHERE prod_id="RGAN01";

 

原文链接:https://blog.csdn.net/nawuyao/article/details/50370724

你可能感兴趣的:(数据库MySQL)