在牛腩新闻发布系统中在后台开发时,用于新闻数据库操作用到了存储过程。存储过程是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。
格式:
格式: -- ============================================= -- Author: 作者 -- Create date: 创建时间 -- Description: 描述 -- ============================================= CREATE PROCEDURE 存储过程名字 参数 AS BEGIN 查询语句 END GO实例: -- ============================================= -- Author: 高玮 -- Create date: 11月7日 -- Description: 取出条热点新闻(评论回复最多的十条新闻) -- ============================================= ALTER PROCEDURE [dbo].[news_selectHotNews] AS BEGIN select top 10 n.id ,n.title ,n.createTime ,c.[name],COUNT (com.id ) as comCout,c.id as caId from news n inner join category c on n.caId =c.id left join comment com on com.newsId =n.id group by n.id ,n.title ,n.createTime ,c.name,c.id order by comCout desc END
在代码中有个关键词inner join这是内连接的表示方式。inner join(等值连接) 只返回两个表中联结字段相等的行。
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录。
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录。
语法:详解http://blog.csdn.net/steryzone/article/details/4997060
用存储过程的好处
相对于直接使用SQL语句,在应用程序中直接调用存储过程有以下好处:
(1)减少网络通信量。调用一个行数不多的存储过程与直接调用SQL语句的网络通信量可能不会有很大的差别,可是如果存储过程包含上百行SQL语句,那么其性能绝对比一条一条的调用SQL语句要高得多。
(2)执行速度更快。有两个原因:首先,在存储过程创建的时候,数据库已经对其进行了一次解析和优化。其次,存储过程一旦执行,在内存中就会保留一份这个存储过程,这样下次再执行同样的存储过程时,可以从内存中直接调用。
(3)更强的适应性:由于存储过程对数据库的访问是通过存储过程来进行的,因此数据库开发人员可以在不改动存储过程接口的情况下对数据库进行任何改动,而这些改动不会对应用程序造成影响。
(4) 布式工作:应用程序和数据库的编码工作可以分别独立进行,而不会相互压制。
更多知识:
http://www.cnblogs.com/tjsquall/archive/2008/02/04/1064402.html