标签:处理 高级 之间 exp mode 正则 比较 程序 sele
本人最近看了一本有关于MySQL的书籍《MySQL必知必会》,书中只写了一些基本知识,但是也基本涵盖了所有的MySQL的知识点。其余的比较高级的也只是在基础上进行扩展或者是优化,看完这本书之后,本人也有一点疑惑,所以知道的朋友帮忙解决一下
1、MySQL的引擎分类
InnoDB,MyISAM以及MEMORY等3个引擎。
InnoDB是一个可靠的事务处理引擎,但是其不支持全文本搜索。
MEMORY在功能上等同于MyISAM,但由于数据存储在内存中,速度很快。
MyISAM是一个性能极高的引擎,它支持全文本搜索,但是不支持事务处理。
2、谈谈MyISAM的全文本搜索。
MyISAM的全文本搜索不像InnoDB中使用的like语法,搜索某一列,而是搜索全文本,只要有符合的都可以显示出来。它的基本格式如下:
Match(匹配的列名) Against(搜索的表达式)
(1)、基本语法:
SELECT columnName
FROM TABLENAME
WHERE MATCH(查询列) Against (‘anvils’ WITH QUERY EXPANSION)(这就是查询扩展)
由于搜索全文本,只要其中一个词符合所要求的都会被显示的,所以一般结果不是唯一的。他们会按照一定的顺序进行排列,主要是根据查询的优先级,以及你搜索 的关键词之间的位置。位置越近,优先级越高。
(2)布尔类型文本搜索
举例:
select note_text
from product
where Match(note_text) Against(‘heavy ‘ IN BOOLEAN MODE)
其中的 heavy为搜索的关键字。IN BOOLEAN MODE即为布尔文本类型的标志。
Against(‘heavy - rope*‘ IN BOOLEAN MODE)表示搜索出来行的结果去除含有rope的行
Against(‘ +rabbit + bait‘ IN BOOLEAN MODE)显示包含rabbit和bait的行
Against(‘rabbit + bait‘ IN BOOLEAN MODE) 显示包含rabbit和bait中任意一个的行
Against(‘rabbit bait‘ IN BOOLEAN MODE) 显示rabbit bait短语的行。
这里我提出一个问题:为什么InnoDB不支持全文本搜索,这就涉及到引擎内部的问题,希望大家给我答复。
3、正则表达式REGXEP
本人在看这本书之前,学过SQL SERVER数据库。但是当时没有学到正则表达式。后来在生活中遇到过几次,才有所了解。
regexp的英文意思就是正则表达式的意思。所以学习英语对于一个程序员来说,是必不可少的。我们有时候通过一个简称便能知道这个是什么,我自己就有亲身体会。
这里我要说的是正则表达式匹配特殊字符。当正则表达式匹配特殊字符时,必须要加上转义字符“\\”作为前导。
?是匹配当前的前面的任何字符的0次或1次出现。
4、视图
视图为虚拟表。主要用来数据的检索,其对select 语句进行封装,保护一些用户的基本数据。但是本人还是不够了解视图的使用。
5、游标(CURSOR)
游标的使用步骤:
定义——声明——使用——关闭
CREATE PROCEDURE C()
BEGIN
DECLARE 游标名 CURSOR
FOR
SELECT _ FROM _;
END
上面就是创建游标的过程
OPEN CURSOR ,CLOSE CURSOR 也就是打开和关闭游标的操作。
以上最近所学的就是这些,希望上面的红色标注的问题,希望有人回答下。这些基本的知识对于我们想要了解MySQL的人来说很重要,还有一些我们所不知道的。也会继续了解深入。等待着我的后续数据库知识,让我们一起成长。
标签:处理 高级 之间 exp mode 正则 比较 程序 sele
原文地址:http://www.cnblogs.com/1234zb/p/7577031.html