渣渣小本求职复习之路每天一博客系列——数据库基础(MySQL)(5)
前情回顾:昨天学习了MySQL中索引的设计与使用,还了解了一些常见的SQL注入攻击的手段以及防范方法,一般来说,在面试的时候如果不是要求比较高,基本就够用了。
今天碰见一个拿了TP-LINK的offer的同学从图书馆回来,一边走一边聊了几句。我笑着说:拿了offer还去图书馆干嘛?他说没打算去。我问干嘛不去,他回答说准备专心考公务员。其实我前段时间,大概是半年前吧,也有考虑过考公务员。那时候主要是觉得自己技术渣,而且又不想去学,所以就经朋友介绍想考回深圳去工作。后来因为自己兴趣培养得还不错,而且也感觉自己的性格不太适合进体制,也就作罢了。
听说做了公务员或者进了国企技术就废了,不知道是不是真的,大家比较有社会经验和见识的不妨给楼主说说啊。
至于我自己嘛,专注复习基础知识,专注提高自己的水平,找工作要紧。
————————————————————————————闲聊结束————————————————————————————————————————
今天的任务,主要是复习存储过程、函数、触发器,以及了解学习部分数据库优化的东西。现在,开始。
第九章:存储过程、函数、触发器
第一节:什么是存储过程、函数、触发器
存储过程和函数是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程和函数可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。而触发器则是特殊的存储过程,触发器与存储过程的唯一区别是触发器不能执行EXECUTE语句调用,而是在用户执行Transact-SQL语句时自动触发执行。
存储过程和函数的区别在于函数必须有返回值,而存储过程没有,存储过程的参数可以使用IN、OUT、INOUT类型,而函数的参数只能是IN类型。
其中,MySQL提供了多种内建函数帮助开发人员编写简单高效的SQL语句,其中常用的函数有字符串函数、日期函数和数值函数。有用到或者有兴趣了解的童鞋可以查询MySQL文档等相关资料。
第二节:存储过程和函数的注意事项
在资料中,有对存储过程和函数的相关操作进行讲解,介绍了变量、条件、光标、流程控制的定义和使用,这些就不一一说明了。
存储过程和函数的优势是可以将数据的处理放在数据库服务器上进行,避免将大量的结果集传输给客户端,减少数据的传输,但是在数据库服务器上进行大量的复杂运算也会过度占用服务器的CPU,造成数据库服务器的压力。所以,不要在存储过程和函数中进行大量的复杂运算,应尽量将这些运算操作分摊到应用服务器上执行。
第三节:触发器
触发器可以查询其他表,而且可以包含复杂的SQL语句。它们主要用于强制服从复杂的业务规则或要求。例如:您可以根据客户当前的帐户状态,控制是否允许插入新订单。
触发器也可用于强制引用完整性,以便在多个表中添加、更新或删除行时,保留在这些表之间所定义的关系。然而,强制引用完整性的最好方法是在相关表中定义主键和外键约束。如果使用数据库关系图,则可以在表之间创建关系以自动创建外键约束。
需要注意的是触发器是行触发的。每次增加、修改或者删除记录都会触发进行处理,编写过于复杂的触发器或者增加过多的触发器对记录的插入、更新、删除操作肯定也是会有比较严重的影响。因此数据库设计的时候应该有所考虑,不要将应用的处理逻辑过多的依赖于触发器来处理。
接下来,会讲一些关于数据库性能优化的内容,今天先讲一部分。
第十章:SQL技巧与优化
第一节:SQL小技巧
1.在SELECT等查询语句中使用正则表达式
什么是正则表达式就不多说了,相信大家都知道。举个例子,如果要实现以下包含正则表达式的SELECT语句
SELECT name , email from table where email REGEXP "@163[.,]com$";
使用普通的LIKE语句,就要写成下面这样,明显是比较长而且繁琐的
SELECT name , email from table where email like"@163%.com" or like"@163%,com"
2.RAND()函数与ORDER BY子句配合使用,能够实现随机抽取样本的功能,举例就免了,这个技巧在进行数据统计的时候很方便。
3.BIT函数与GROUP BY子句的联合使用在某些应用场合可以大大降低存储量,提高统计查询效率
像这样的小技巧有很多,知道一些,在面试中讲出来能加点分。
第二节:SQL优化
首先,我们来讲讲当面对一个有SQL性能问题的数据库时,是怎样一步步进行系统分析,定位问题SQL并尽快解决问题的。
第一步:通过show status命令了解各种SQL的执行频率
第二步:定位执行效率较低的SQL语句
第三步:通过EXPLAIN分析低效SQL的执行计划
第四步:确定问题并采取相应的优化措施
接下来,介绍两个简单实用的优化方法:
1.定期分析表和检查表,语法如下:
ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [,tbl_name]...
2.定期优化表(只对MyISAM、BDB和InnoDB表起作用),语法如下:
OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...
需要注意的是,执行期间将对表进行锁定,因此一定注意要在数据库不繁忙的时候执行相关的操作。
—————————————————————————————第十一天——————————————————————————————
今天去了一场笔试,完了赶回来把今天的博客搞定。
1.随着复习的推进,好多之前没什么印象的、没怎么学过的内容都出来了,要多花点时间才行。由于进度原因,数据库(Mysql)系列就暂告一个段落了,明天开始下一个系列。
2.我打算明天写一篇内容多点的,认真点的博客,还是发首页吧。
3.我打算,如果关注我的人多了,就在写一些“文章”(不是现在所写的“随笔”),说一些我想说的话。
渣渣小本求职复习之路每天一博客系列——数据库基础(MySQL)(5)的更多相关文章
- 渣渣小本求职复习之路每天一博客系列——Java基础(9)
———————————————————————今天不闲聊————————————————————————————— 第十一章:线程 第四节:synchronized与同步 首先,我们来看一段代码: p ...
- 渣渣小本求职复习之路每天一博客系列——TCP/IP协议栈(5)
前情回顾:一篇短短的博客明显不能满足TCP和UDP这两个饥渴的汉子,而且还被应用协议占了一小半的篇幅.在昨天结束之后,相信大家都基本对TCP/IP协议栈的轮廓有一个大概的印象了,能够对整体有所把握. ...
- 渣渣小本求职复习之路每天一博客系列——Unix&Linux入门(5)
前情回顾:昨天简单地介绍了一下如何使用vi编辑器,例如命令模式和插入模式的切换,以及一些简单命令的讲解. —————————————————————————直接就开始吧———————————————— ...
- 用RecyclerView做一个小清新的Gallery效果 - Ryan Lee的博客
一.简介 RecyclerView现在已经是越来越强大,且不说已经被大家用到滚瓜烂熟的代替ListView的基础功能,现在RecyclerView还可以取代ViewPager实现Banner效果,当然 ...
- 鸿蒙内核源码分析(静态链接篇) | 完整小项目看透静态链接过程 | 百篇博客分析OpenHarmony源码 | v54.01
百篇博客系列篇.本篇为: v54.xx 鸿蒙内核源码分析(静态链接篇) | 完整小项目看透静态链接过程 | 51.c.h.o 下图是一个可执行文件编译,链接的过程. 本篇将通过一个完整的小工程来阐述E ...
- Python之路【第二十三篇】:数据库基础
数据库的简介 数据库 数据库(database,DB)是指长期存储在计算机内的,有组织,可共享的数据的集合.数据库中的数据按一定的数学模型组织.描述和存储,具有较小的冗余,较高的数据独立性和易扩展性, ...
- 重回程序员之路。重写博客。我的ecshop小京东二开问题汇总与解决方案。
问题1:混合支付(余额支付+在线支付)不跟更新订单状态问题. 解决方案:http://bbs.ecshop.com/viewthread.php?tid=156761&highlight= i ...
- 博客与微信小程序的同步
在此之前,先说说自己最近的打算,才购买了阿里云的服务器,想做一个网站和图床网盘之类的方便自己使用. 考虑到小程序,又打算将自己的博客内容放到小程序中.从零开发实属困难,应该还要一段时间才能完成. 目前 ...
- 使用小书匠及markdown here编辑博客和微信公众号
1. 使用小书匠连接Evernote并发布笔记到博客园 1.1 小书匠初探 我平时的信息收集的主要方法是采用Pocket+Evernote. 简单来说: 如果访问到非常有用,而且是必须要立刻记录的内容 ...
随机推荐
- 一点一滴学shell-Shell expr的用法 (转)
原文链接:http://desheng666.blog.163.com/blog/static/4908408220121643953425/ expr命令一般用于整数值,但也可用于字符串.一般格式为 ...
- asp.net 跨域服务器 上传文件
最近一个项目遇到问题,公司局域网中,在F域下有个服务器Fa,我们的项目就部署在Fa.项目里面有个功能,需要把生成的文件(.doc,.xls,.pdf)保存到O域的一台文件共享服务器Ob.在原有的网络环 ...
- H5前端性能测试快速入门
前言 说到H5测试,对于做WEB测试的同学来说再熟悉不过了,它包括页H5功能测试,前端性能测试,浏览器兼容性能测试,以及服务端性能测试.那本文谈到的则是H5前端性能测试,并希望通过阅读本文后,能够知道 ...
- 【温故Delphi】GAEA用到Win32 API目录
Delphi是Windows平台下著名的快速应用程序开发工具,它在VCL中封装并使用了大量的Win32 API. GAEA基于VCL开发的工具类产品,在程序中使用了大量的Win32 API,将经常用到 ...
- java excle导出合计字段值
效果图: 代码实现: 解释: // 四个参数分别是:起始行,起始列,结束行,结束列 sheet.addMergedRegion(new Region(0, (short) (celln + 1), 0 ...
- 【13_263】Ugly Number
简单题 Ugly Number My Submissions Question Total Accepted: 32635 Total Submissions: 94009 Difficulty: E ...
- iOS后台定位时授权提示一闪而过的解决办法
今天做后台定位时,授权提示"允许 XXX 在您并未使用该应用时范文您的位置吗?"总是一闪而过,点不到,或者压根就不弹出.后来找到了解决问题的方法,那就是:将CLLocationMa ...
- vb---输入模式之文本输入与二进制输入区别
使用 VB6 MSCOMM 控件 进行二进制收发 发布时间:2012-01-10 12:12:01 技术类别:嵌入式 MSCOMM 控件是用于串口通信的,使用方便.在VB中,这个串口控件缺省是 ...
- C2第十次解题报告
看过题解后如果觉得还算有用,请帮忙加点我所在团队博客访问量 http://www.cnblogs.com/newbe/ http://www.cnblogs.com/ne走迷宫wbe/p/406983 ...
- windows编程:画线,简单的碰撞检测,简单的帧率锁定
#define WIN32_LEAN_AND_MEAN #include <windows.h> #include <windowsx.h> #include <mmsy ...