MySQL的一点浅显知识

#MySQL必知必会

本人最近看了一本有关于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的人来说很重要,还有一些我们所不知道的。也会继续了解深入。等待着我的后续数据库知识。

posted @ 2017-09-22 21:12  软工小盆友  阅读(196)  评论(0编辑  收藏  举报