总结一些关于操作数据库是sql语句还是存储过程问题

程序中,你跟数据的交互,需要向数据库拿数据、更改数据库的数据等,这些操作,本身不是程序完成的,而是程序发命令给数据库去做的,不管是通过sql语句方式,还是存储过程方式,都是让数据库去做。
在程序中,你如果将数据库操作那块封装成存储过程调用,以后即使换了数据库,如果存储过程不变,你的程序就不需要修改,实现的相对的隔离。

用不用存储过程还是要看具体场合。把常用的SQL封装成存储过程中提高重用性是好,但问题是不同项目需要重用的情况本来就少,而且很多时候多个项目访问同一数据库并不合适。

效率是另一方面,有多少复杂而且使用频率很高的sql语句?
总的来说存储过程适合那些对性能要求高,以数据为中心,业务复杂但固定,标准化做的比较好的场合,比如银行之类的。
对于新开发的项目,尤其是需求变化可能较大的项目,还是尽量少用存储过程。即使对性能要求高,也可以在系统稳定之后统计分析出关键、耗时的数据库操作,然后封装在存储过程中。

使用存储过程优点

1. 直接在程序中构造SQL的话后期维护, 比如表字段的增减, 有可能会影响到你SQL语句的可执行性, 那个时候你就必须要修改程序源码, 可能的结果是牵一发而动全身, 如果用存储过程, 那么只要更新存储过程就可以了, 便于维护!
2. 如果不法分子破解你的程序, 存储过程是放在你的数据库服务器上的!那么光得到你的存储过程名称, 没有实际的实现代码~~所以使用存储过程的安全性相对较高!
3. 为了防止sql注入,使用存储过程。
4. 存储过程的执行效率较高, 速度快!复杂的查询, 对速度的要求还是有讲究的!

总结一些关于操作数据库是sql语句还是存储过程问题的更多相关文章

  1. 操作数据库结构Sql语句

    新建表: create table [表名] ( ,) PRIMARY KEY , ) default '默认值' null , [字段2] ntext null , [字段3] datetime, ...

  2. Python操作Mysql数据库时SQL语句的格式问题

    一.概述 近日使用Python对Mysql数据库进行操作,遇到SQL语句死活出问题的情况.由于最初没有将异常打印出来,一直不知道原因.随后,将异常打印出来之后,通过异常信息,对代码进行修改.最终,成功 ...

  3. Python3:sqlalchemy对sybase数据库操作,非sql语句

    Python3:sqlalchemy对sybase数据库操作,非sql语句 # python3 # author lizm # datetime 2018-02-01 10:00:00 # -*- c ...

  4. Python3:sqlalchemy对mysql数据库操作,非sql语句

    Python3:sqlalchemy对mysql数据库操作,非sql语句 # python3 # author lizm # datetime 2018-02-01 10:00:00 # -*- co ...

  5. 【mybatis】service层中一个方法中使用mybatis进行数据库的 多个修改操作,可能是update也可能是delete操作,但是sql语句命名执行并且在控制台打印出来了,但是数据库中未更新到数据【事务的问题】

    问题描述: service层中一个方法中使用mybatis进行数据库的 多个修改操作,可能是update也可能是delete操作,但是sql语句命名执行并且在控制台打印出来了,但是数据库中未更新到数据 ...

  6. SQL Server 【附】创建"商品管理数据库"、"学生选课数据库"的SQL语句

    附:(创建“商品管理数据库”的SQL语句) --建立"商品管理数据库"数据库-- create database 商品管理数据库 on(name='商品管理数据库_m', file ...

  7. 数据库之sql语句汇总20180616

    /*******************************************************************************************/ 一.SQL简 ...

  8. 数据库-转换sql语句

    文章描述:主要说明转换成SQL语句的过程.----必要信息(数据库名,表名,条件)转换成SQL语句 一些界面上数据增删改查的操作往往只需要输入一数据库名,表名,加条件就可以进行数据查询了,在这背后是怎 ...

  9. Oracle,SQL Server 数据库较MySql数据库,Sql语句差异

    原文:Oracle,SQL Server 数据库较MySql数据库,Sql语句差异 Oracle,SQL Server 数据库较MySql数据库,Sql语句差异 1.关系型数据库 百度百科 关系数据库 ...

随机推荐

  1. fedora wine qq

    http://blog.lilydjwg.me/2015/10/26/run-tencent-qq-lite-with-wine.186640.html

  2. 自动化运维:flask-bootstrap + highstock整合

    1.在flask-bootstrap的base.html模板中加载highstock.js      以下是base.html的源码中,调用js文件的例子. 文件路径:python2.7/site-p ...

  3. 将 ASP.NET MVC3 Razor 项目部署到虚拟主机中

    国内很多网站空间都只支持.NET 2.0 和 .NET 3.0 3.5,很少有空间商支持.NET 4的,即使有个别支持.NET 4,但是不支持MVC的默认路由访问形式. Go Daddy 的主机支持, ...

  4. 学习SQL的点点滴滴(四)-UPDATE小计

    1.更新tb_card中c_customer字段的值等于tb_customer表中c_no的值 update tb_card set c_customer=ct.c_no from tb_custom ...

  5. .NET文件跨服务器上传下载

    环境说明:两台服务器服务器为A,服务器为B,服务器B为文件服务器 1.在A和B上创建用户docshareuser,用户名和密码保持一致 2.B服务器上设置附件文件夹Attachments共享,添加用户 ...

  6. Files 的值“ < < < < < < < .mine”无效。路径中具有非法字符。

    出现这个问题的原因是,用svn时,发生了冲突.解决方法:先解决代码冲突,然后在你的工程OBJ/DEBUG目录下,找到 工程名.csproj.FileListAbsolute.txt的文件打开并删除含有 ...

  7. 手机平板等移动端适配跳转URL的js代码

    <script type="text/javascript"> if(/AppleWebKit.*mobile/i.test(navigator.userAgent) ...

  8. 无法进入adb shell,提示unknown host service的解决办法

    今天monkey的简易环境配置好后,准备开始monkey的压测工作,可是在命令控制窗口中输入无法进入adb shell,提示了错误 "unknown host service"

  9. android-8~23 View.java - dispatchTouchEvent源码

    android-8 /** * Pass the touch screen motion event down to the target view, or this * view if it is ...

  10. 新安装loadrunner无法录制脚本的原因之一及解决方案

    eg:IE浏览器 1.新安装的loadrunner录制脚本,一直是加载中的状态: 2.苦思冥想终于找到解决方案: 3.IE浏览器-->设置-->Internet选项 4."安全& ...