存储过程

就是一些编译好了的SQL语句,这些SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后给这些代码块取一个名字,在用到这个功能的时候调用即可。
存储过程详解参考:
http://www.cnblogs.com/knowledgesea/archive/2013/01/02/2841588.html

优点:

  • 存储过程是一个预编译的代码块,执行效率比较高
  • 存储过程在服务器端运行,减少客户端的压力
  • 允许模块化程序设计,只需要创建一次过程,以后在程序中就可以调用该过程任意次,类似方法的复用
  • 一个存储过程替代大量T_SQL语句 ,可以降低网络通信量,提高通信速率
  • 可以一定程度上确保数据安全

缺点:

  • 调试麻烦(没有像开发程序那样容易)
  • 可移植性不灵活(因为存储过程依赖于具体的数据库)

MySQL中的存储引擎

有两个常用存储引擎:MyISAM与InnoDB(MySQL默认的)

MyISAM与InnoDB的区别:

1、事务处理方面:

MyISAM强调性能,查询速度比InnoDB快,但不提供事务支持;
InnoDB提供事务支持。

2、外键:

MyISAM不支持外键;InnoDB支持外键。

3、锁:

MyISAM只支持表级锁;InnoDB支持表级锁与行级锁,默认是行级锁。
因此InnoDB适合插入和更新比较多的情况,MyISAM适合频繁查询的情况。

4、全文索引:

MyISAM支持全文索引,InnoDB不支持全文索引(从MySQL5.6版本开始提供对全文索引的支持)

5、表主键:

MyISAM:允许没有主键的表存在
InnoDB:如果没有设定主键,就会自动生成一个6字节的主键(用户不可见)

6、表的具体行数:

MyISAM:select count(*) from table,MyISAM只需要读出保存好的行数,因为MyISAM内置了一个计数器。
InnoDB:不保存具体的行数,执行select count(*) from table时,是扫描一遍整个表来计算有多少行。

问题:如果一个表中有自增主键ID,当insert17条记录后,删除第15,16,17条记录,再重启MySQL,再insert一条记录,这条记录的ID是18还是15?
答:如果是MyISAM,ID是18.因为MyISAM会把自增主键的最大ID记录到数据文件里,重启MySQL自增主键的最大ID也不会丢失。
若果是InnoDB,ID是15.因为InnoDB只会把自增主键的最大ID记录到内存中,重启数据库会导致最大ID丢失。

数据库篇(二)——什么是存储过程?有哪些优缺点?相关推荐

  1. Python学习日记(三十四) Mysql数据库篇 二

    外键(Foreign Key) 如果今天有一张表上面有很多职务的信息 我们可以通过使用外键的方式去将两张表产生关联 这样的好处能够节省空间,比方说你今天的职务名称很长,在一张表中就要重复的去写这个职务 ...

  2. SQL2K数据库开发二十六之存储过程操作创建存储过程(一)

    1.可以使用Transact-SQL中的CREATE PROCEDURE语句创建存储过程,使用该语句的语法为: 2.在查询分析器中执行如下语句创建一个存储过程. 3.在企业管理器中创建存储过程的方法为 ...

  3. c#操作数据库(二)dataAdapter篇

    c#操作数据库(二)dataAdapter篇 2009-04-01 21:29 受够了ctrl+c加ctrl+v,忍无可忍之第二篇. 上篇博客介绍了用datareader操作数据库,dataReade ...

  4. [Qt教程] 第22篇 数据库(二)编译MySQL数据库驱动

    [Qt教程] 第22篇 数据库(二)编译MySQL数据库驱动 楼主  发表于 2013-5-13 21:28:02 | 查看: 1616| 回复: 12 编译MyQSL数据库驱动 版权声明 该文章原创 ...

  5. Java数据库篇8——索引、视图、存储过程、触发器

    Java数据库篇8--索引.视图.存储过程.触发器 1.索引 1.1.索引是什么 在数据库表中,对字段建立索引可以大大提高查询速度.通过善用这些索引,可以令MySQL的查询和 运行更加高效 如果合理的 ...

  6. MySql基础篇---004 其它数据库对象篇:视图,存储过程与函数,变量、流程控制与游标 ,触发器

    第14章_视图 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. 常见的数据库对象 对象 描述 表(TABLE) 表是存储数据的逻辑单元,以行和列的形 ...

  7. alin的学习之路(数据库篇:二)(select查询,where条件查询,order by排序,单行函数,多行函数,group by分组)

    alin的学习之路(数据库篇:二)(select查询,where条件查询,order by排序,单行函数,多行函数,group by分组) 1. SQL语句 1.1 sql语言类型 sql是一门独立的 ...

  8. 常见面试题整理--数据库篇(每位开发者必备

    常见面试题整理--数据库篇(每位开发者必备) 转载自:https://zhuanlan.zhihu.com/p/23713529        知乎专栏 继续前面有关于的Python面试的两篇内容:P ...

  9. 【再回首:数据库篇】Oracle 开发雷区

    [再回首:数据库篇]Oracle 开发雷区 前言 存储过程.函数及触发器的使用 综述 Oracle开发雷区 一.适用范围 二.版本合规 三.安全合规 四.数据字典合规 五.表设计合规 六.索引设计合规 ...

  10. 最近整理的一些常见的面试题,面试大全,黑马程序员面试宝典题库---数据库--篇

    一. Mysql 1. SQL 的 select 语句完整的执行顺序 SQL Select 语句完整的执行顺序: 1. from 子句组装来自不同数据源的数据: 2. where 子句基于指定的条件对 ...

最新文章

  1. 根据坐标如何标记图片_如何玩转FloodFill算法?
  2. 如何识别能把桥压塌的大车?快看!能救命!
  3. 服务器文件储存,文件储存服务器
  4. UI控件库分享:DWZ(j-UI)、LigerUI、Linb
  5. 阿里巴巴右侧6滑块VS雅虎右侧6滑块VS自定义6滑块
  6. sydney airport hotel recommendations
  7. python属于哪类型的编程语言_Python是什么类型的编程语言,有什么特性
  8. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第4节 方法引用_4_方法引用_通过super引用父类的...
  9. ScrollDown的基本操作
  10. 视频APP软件开发功能架构
  11. 7.8 Cound 练习
  12. elasticsearch报错:bootstrap checks failed. You must address the points described in the following [1]
  13. b标签、Strong标签、h1标签的区别以及使用
  14. Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE]
  15. 禅宗公案节选(中国禅宗概述)
  16. VB虚拟机中ubuntu Linux系统安装使用MCNP5
  17. jeecgboot初学习疑问与总结--2021-05-11
  18. ISP Tuning—高通Chromatix6
  19. matlab打开eps文件_如何在Windows上打开EPS图像文件
  20. ec20 以太网_车载以太网基础知识解析

热门文章

  1. 使用Python爬取51job招聘网的数据
  2. SQLserver 创建数据库关系图
  3. windows登录oracle
  4. 暗中的77u/,让你猝不及防
  5. java nls_Java-使用JDBC的NLS_DATE_FORMAT
  6. 用java写一个四则运算计算器
  7. 从历史中讲创业的韧性
  8. NetSuite知识会第4谈 - CSV导入串讲
  9. Windows10 CMD 命令
  10. 【数字信息化智能化管理平台系统建设】