存储过程入门概念

存储过程

概念

  存储过程(Stored Procedure) 是一组预先编译好的Transact-SQL语句。将其放在服务器上,由用户通过指定存储过程的名字来执行它。存储过程可以作为一个独立的数据库对象,也可以作为一个单元被用户的应用程序调用。存储过程可以接收输出参数,返回执行存储过程的状态值,还可以嵌套调用

  不支持的数据库:Acess数据库SQLite数据库不支持存储过程,Mysql数据库是从5.1版本才开始支持存储过程。

 

知识点:

Transact-SQL:又称T-SQL,为SQL server数据库特有的语言,Transact-SQL具有sql的主要特点(DDL 和 DML 功能),还具有变量、运算符、函数、流程控制等功能。

DDL:全称Data Definition Language(数据定义语言),即create,drop, alter等。

DML:全称Data Manipulation Language(数据操作语言),即insert,delete,update等。

 

 存储过程的支持功能:

 [1]条件执行

 可以使用If 、Then 、 Else等等。

基础用法:用来判断数据是否要进行处理。

 

[2]循环控制结构

可以使用While、For来进行循环 

基础用法:用来循环某个表或临时表数据。

 

[3]命名变量

可以在存储过程中使用命名的内存位置(即变量)来保存通过参数传向过程的值、查询返回的值等。

基础用法:在存储过程中可以用一些名字去命名原来的临时表名、字段名,可以增加代码的可读性。

 

[4]命名过程

 在存储过程中放入一条或多条Transact-SQL语句并添加了条件执行和循环控制结构之后,可以为存储过程起一个名称并通过正式的输入和输出参数把数据传入或从过程中传出来。

基础用法:其实就是可以给存储过程取个名字,方便你在数据库或者程序中调用这个存储过程,输入参数是可以为空的。

 

[5]语句块

  通过调用存储过程可以让DBMS(数据库管理系统)执行一系列的SQL语句。

基础用法:就是指存储过程执行时,可以做到多个不同表的查询、删除、增加、更新语句,一步一步有序执行。

 

总结:

[1] 存储过程可以这样来理解:他实际就是把代码中的业务逻辑转移到了数据库中来处理。

[2] 举一个在工作中遇到的例子:当时的需求是做一个考勤报表,要求用存储过程来实现,java程序直接调用该存储过程得到该部门的考勤数据。实际上这里在java程序也可以做到,但是存储过程起到的作用就是把java程序中的业务逻辑转移到了存储过程当中,java程序就只需要去调用存储过程就可以得到考勤数据,再做一些前端的界面处理即可。

[3] 存储过程的优点

1.预编译:因为存储过程在数据库中会先预编译。在创造时进行编译,以后每次执行存储过程都不需再重新编译,在业务逻辑复杂的情况下,相对来说存储过程运行速度会比普通sql快一点。

2.修改逻辑简便:修改存储过程比起修改程序来说还是方便不少,而且可以实时更新,无需更新代码。

3.安全性:参数化的存储过程可以防止SQL注入式攻击。

[4] 存储过程的缺点

1.调试起来较为复杂。需求变动时,修改逻辑也会更加复杂。

2.可维护性不高,因为存储过程中涉及到很多数据库表的字段,如果哪个字段的类型要改变或者增长/缩短字段长度,而且这个改动的字段还是在存储过程中用到的,就可能需要改动很多地方或者改动逻辑。

你可能感兴趣的:(sql)