总结一些关于操作数据库是sql语句还是存储过程问题
总结一些关于操作数据库是sql语句还是存储过程问题
程序中,你跟数据的交互,需要向数据库拿数据、更改数据库的数据等,这些操作,本身不是程序完成的,而是程序发命令给数据库去做的,不管是通过sql语句方式,还是存储过程方式,都是让数据库去做。
在程序中,你如果将数据库操作那块封装成存储过程调用,以后即使换了数据库,如果存储过程不变,你的程序就不需要修改,实现的相对的隔离。
用不用存储过程还是要看具体场合。把常用的SQL封装成存储过程中提高重用性是好,但问题是不同项目需要重用的情况本来就少,而且很多时候多个项目访问同一数据库并不合适。
效率是另一方面,有多少复杂而且使用频率很高的sql语句?
总的来说存储过程适合那些对性能要求高,以数据为中心,业务复杂但固定,标准化做的比较好的场合,比如银行之类的。
对于新开发的项目,尤其是需求变化可能较大的项目,还是尽量少用存储过程。即使对性能要求高,也可以在系统稳定之后统计分析出关键、耗时的数据库操作,然后封装在存储过程中。
使用存储过程优点
1. 直接在程序中构造SQL的话后期维护, 比如表字段的增减, 有可能会影响到你SQL语句的可执行性, 那个时候你就必须要修改程序源码, 可能的结果是牵一发而动全身, 如果用存储过程, 那么只要更新存储过程就可以了, 便于维护!
2. 如果不法分子破解你的程序, 存储过程是放在你的数据库服务器上的!那么光得到你的存储过程名称, 没有实际的实现代码~~所以使用存储过程的安全性相对较高!
3. 为了防止sql注入,使用存储过程。
4. 存储过程的执行效率较高, 速度快!复杂的查询, 对速度的要求还是有讲究的!
总结一些关于操作数据库是sql语句还是存储过程问题的更多相关文章
- 操作数据库结构Sql语句
新建表: create table [表名] ( ,) PRIMARY KEY , ) default '默认值' null , [字段2] ntext null , [字段3] datetime, ...
- Python操作Mysql数据库时SQL语句的格式问题
一.概述 近日使用Python对Mysql数据库进行操作,遇到SQL语句死活出问题的情况.由于最初没有将异常打印出来,一直不知道原因.随后,将异常打印出来之后,通过异常信息,对代码进行修改.最终,成功 ...
- Python3:sqlalchemy对sybase数据库操作,非sql语句
Python3:sqlalchemy对sybase数据库操作,非sql语句 # python3 # author lizm # datetime 2018-02-01 10:00:00 # -*- c ...
- Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句 # python3 # author lizm # datetime 2018-02-01 10:00:00 # -*- co ...
- 【mybatis】service层中一个方法中使用mybatis进行数据库的 多个修改操作,可能是update也可能是delete操作,但是sql语句命名执行并且在控制台打印出来了,但是数据库中未更新到数据【事务的问题】
问题描述: service层中一个方法中使用mybatis进行数据库的 多个修改操作,可能是update也可能是delete操作,但是sql语句命名执行并且在控制台打印出来了,但是数据库中未更新到数据 ...
- SQL Server 【附】创建"商品管理数据库"、"学生选课数据库"的SQL语句
附:(创建“商品管理数据库”的SQL语句) --建立"商品管理数据库"数据库-- create database 商品管理数据库 on(name='商品管理数据库_m', file ...
- 数据库之sql语句汇总20180616
/*******************************************************************************************/ 一.SQL简 ...
- 数据库-转换sql语句
文章描述:主要说明转换成SQL语句的过程.----必要信息(数据库名,表名,条件)转换成SQL语句 一些界面上数据增删改查的操作往往只需要输入一数据库名,表名,加条件就可以进行数据查询了,在这背后是怎 ...
- Oracle,SQL Server 数据库较MySql数据库,Sql语句差异
原文:Oracle,SQL Server 数据库较MySql数据库,Sql语句差异 Oracle,SQL Server 数据库较MySql数据库,Sql语句差异 1.关系型数据库 百度百科 关系数据库 ...
随机推荐
- ORA-00907: 缺失右括号 整理解决
ORA-00907: 缺失右括号 前言 最近在开发过程中使用oracle数据库,在程序中进行查询数据时遇到了“ORA-00907: 缺失右括号”的问题,但是如果直接把sql语句直接在数据库或PL/SQ ...
- ArcGis 字段计算表达式写法注意事项
在ArcGis中,经常用到字段的计算.对于复杂的字段计算,需要写代码来实现,在使用ESRI.ArcGIS.DataManagementTools.CalculateField 类时,Python代码中 ...
- .NET批量删除代码前的行号
1 EmEditor Pro.EditPlus .visual studio ,把有行号的代码粘贴进去,按住键盘的Alt键,然后用鼠标拖出选择框列选行号,最后按Delete删除行号; 2 使用正则 ...
- Eclipse调试时附加匹配版本的JAR包源码:Edit Source Loopup
- 数据挖掘之KNN算法(C#实现)
在十大经典数据挖掘算法中,KNN算法算得上是最为简单的一种.该算法是一种惰性学习法(lazy learner),与决策树.朴素贝叶斯这些急切学习法(eager learner)有所区别.惰性学习法仅仅 ...
- CE程序
注:开发工具用VS2008 安装Windows mobile设备中心进行调试. 项目平台 1.窗体属性设置,然后将size改成238, 320 2.效果 3.调试过程选择“部署” 4.配置文件的简单读 ...
- Redis内存使用优化与存储
抄自http://www.infoq.com/cn/articles/tq-redis-memory-usage-optimization-storage 本文将对Redis的常见数据类型的使用场景以 ...
- mint安装相关数据库lib
sudo apt-get install libmysqlclient-dev sudo apt-get install sqlite3 libsqlite3-dev
- Windows下Apache配置域名
1.打开httpd.conf 找到“Include conf/extra/httpd-vhosts.conf”这一行,取消前面的#号注释并保存 2.修改httpd-vhosts.conf文件 进入ap ...
- jquery mobile button样式设置
<a href="#" class="ui-btn">提交</a> ui-btn表示按钮样式 ui-btn-a,ui-btn-b:the ...