`
isiqi
  • 浏览: 16703897 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

MySQL 中 SQL 语句的匹配策略

阅读更多
MySQL SQL 语句的匹配策略:


1. 一般的匹配:

a. 标准SQL模式匹配

LIKENOT LIKE,以及'_' '%'

b. 正则表达式匹配

REGEXPNOT REGEXP,以及很多功能强大地构造正则表达式 <!-- D(["mb","\u003c/span\>\u003c/p\>\n\n\u003cp style\u003d\"line-height:150%\"\>\u003cspan lang\u003d\"EN-US\"\>\u003cbr\>\u003c/span\>\u003c/p\>\u003cp style\u003d\"line-height:150%\"\>\u003cspan lang\u003d\"EN-US\"\>详情参考:\u003c/span\>\u003c/p\>\u003cp style\u003d\"line-height:150%\"\>\u003cspan lang\u003d\"EN-US\"\>\n\u003ca href\u003d\"http://blog.csdn.net/omohe/archive/2007/09/28/1805631.aspx\" target\u003d\"_blank\" onclick\u003d\"return top.js.OpenExtLink(window,event,this)\"\>http://blog.csdn.net/omohe\u003cWBR\>/archive/2007/09/28/1805631\u003cWBR\>.aspx\u003c/a\>\u003c/span\>\u003c/p\>\u003cp style\u003d\"line-height:150%\"\>\u003cspan lang\u003d\"EN-US\"\>\u003cbr\>\u003c/span\>\n\u003c/p\>\n\n\u003cp style\u003d\"margin-left:18pt;text-indent:-18pt;line-height:150%\"\>\u003cfont style\u003d\"color:rgb(51, 51, 255)\" size\u003d\"4\"\>\u003cb\>\u003cspan lang\u003d\"EN-US\"\>\u003cspan\>2.\u003cspan style\u003d\"font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal\"\>\n\n\u003c/span\>\u003c/span\>\u003c/span\>\u003c/b\>\u003c/font\>\u003cb\>\u003cfont style\u003d\"color:rgb(51, 51, 255)\" size\u003d\"4\"\>\u003cspan\>全文检索:\u003c/span\>\u003c/font\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/b\>\u003c/p\>\n\n\u003cp style\u003d\"margin-left:18pt;text-indent:-18pt;line-height:150%;background-color:rgb(255, 255, 153)\"\>\u003cspan lang\u003d\"EN-US\"\>\u003cspan\>a.\u003cspan style\u003d\"font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal\"\>\n\n\u003c/span\>\u003c/span\>\u003c/span\>\u003cspan\>一般全文检索\u003c/span\>\u003c/p\>\n\n\u003cp style\u003d\"line-height:150%\"\>\u003cspan lang\u003d\"EN-US\"\>SELECT * FROM name2gid_9606\nWHERE MATCH(name) AGAINST (&quot;gname&quot;);\u003c/span\>\u003c/p\>\n\n\u003cp style\u003d\"line-height:150%\"\>\u003cspan\>优点:能够对各个单词进行索引;结果有相关值并可对结果进行排序;\u003c/span\>\u003c/p\>\n\n\u003cp style\u003d\"line-height:150%\"\>\u003cspan\>缺点\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>: \u003c/span\>\u003cspan\>存在\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>50%\u003c/span\>\u003cspan\>问题\u003c/span\>\n\u003cspan lang\u003d\"EN-US\"\>(\u003c/span\>\u003cspan\>即如果一个词出现过多将被当作停滞词忽略掉\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>)\u003c/span\>\u003cspan\>,而且单词最小长度为\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>4\u003c/span\>\u003cspan\>个字符\n\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>(\u003c/span\>\u003cspan\>即长度小于\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>4\u003c/span\>\u003cspan\>个字符的单词不被建立索引\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>)\u003c/span\>\u003cspan\>;\u003c/span\>\u003c/p\>\n\n\n\u003cp style\u003d\"line-height:150%\"\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp style\u003d\"margin-left:18pt;text-indent:-18pt;line-height:150%;background-color:rgb(255, 255, 153)\"\>\u003cspan lang\u003d\"EN-US\"\>",1] ); //-->


详情参考:

http://blog.csdn.net/omohe<wbr></wbr>/archive/2007/09/28/1805631<wbr></wbr>.aspx


2. 全文检索:

a. 一般全文检索

SELECT * FROM name2gid_9606 WHERE MATCH(name) AGAINST ("gname");

优点:能够对各个单词进行索引;结果有相关值并可对结果进行排序;

缺点: 存在50%问题 (即如果一个词出现过多将被当作停滞词忽略掉),而且单词最小长度为4个字符 (即长度小于4个字符的单词不被建立索引)

<!-- D(["mb","\u003cspan\>b.\u003cspan style\u003d\"font-style:normal;font-variant:normal;font-weight:normal;font-size:7pt;line-height:normal;font-size-adjust:none;font-stretch:normal\"\>\n\n\u003c/span\>\u003c/span\>\u003c/span\>\u003cspan\>布尔全文检索\u003c/span\>\u003c/p\>\n\n\u003cp style\u003d\"line-height:150%\"\>\u003cspan lang\u003d\"EN-US\"\>SELECT * FROM\narticles WHERE MATCH (title,body) AGAINST (&#39;+MySQL -YourSQL&#39; IN \u003c/span\>\u003c/p\>\n\n\u003cp style\u003d\"line-height:150%\"\>\u003cspan lang\u003d\"EN-US\"\>BOOLEAN MODE);\u003c/span\>\u003c/p\>\n\n\u003cp style\u003d\"line-height:150%\"\>\u003cspan\>很优秀,有一些操作符,但要求关键词必须大于\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>4\u003c/span\>\u003cspan\>个。\u003c/span\>\u003c/p\>\n\n\u003cp style\u003d\"line-height:150%\"\>\u003cspan lang\u003d\"EN-US\"\>(\u003c/span\>\u003cspan\>详细使用可参考\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>MySQL Manual)\u003c/span\>\u003c/p\>参考总结的MySQL中的全文检索\u003cbr\>\u003cbr\>------------------------------\u003cWBR\>------------------------------\u003cWBR\>------------------------------\u003cWBR\>----------------\n\u003cbr\>\u003cbr\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>MySQL\u003c/span\>\u003cspan\>的全文搜索功能\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>参看:\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>\u003ca href\u003d\"http://dev.mysql.com/doc/refman/5.1/zh/functions.html#fulltext-search\" target\u003d\"_blank\" onclick\u003d\"return top.js.OpenExtLink(window,event,this)\"\>http://dev.mysql.com/doc\u003cWBR\>/refman/5.1/zh/functions.html\u003cWBR\>#fulltext-search\n\u003c/a\>\n\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cb\>\u003cspan style\u003d\"font-size:14pt;color:red\" lang\u003d\"EN-US\"\>FullText Search\u003c/span\>\u003c/b\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>1.\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>mysql&gt; CREATE TABLE articles (\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003cspan\>\n\u003c/span\>-&gt;\u003cspan\> \u003c/span\>id INT UNSIGNED\nAUTO_INCREMENT NOT NULL PRIMARY KEY,\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003cspan\>\n\u003c/span\>-&gt;\u003cspan\> \u003c/span\>title VARCHAR(200),\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003cspan\>\n\u003c/span\>-&gt;\u003cspan\> \u003c/span\>body TEXT,\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003cspan\>\n\u003c/span\>-&gt;\u003cspan\> \u003c/span\>FULLTEXT (title,body)\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003cspan\>\n\u003c/span\>-&gt; );\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>",1] ); //--> b. 布尔全文检索

SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('+MySQL -YourSQL' IN

BOOLEAN MODE);

很优秀,有一些操作符,但要求关键词必须大于4个。

(详细使用可参考MySQL Manual)

参考总结的MySQL中的全文检索

------------------------------
<wbr></wbr>------------------------------<wbr></wbr>------------------------------<wbr></wbr>----------------

MySQL的全文搜索功能

参看:http://dev.mysql.com/doc<wbr></wbr>/refman/5.1/zh/functions.html<wbr></wbr>#fulltext-search

FullText Search

1.

mysql> CREATE TABLE articles (

-> id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,

-> title VARCHAR(200),

-> body TEXT,

-> FULLTEXT (title,body)

-> );

<!-- D(["mb","\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>Query OK, 0 rows affected (0.00 sec)\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>2.\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>mysql&gt; INSERT INTO articles (title,body)\nVALUES\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003cspan\>\n\u003c/span\>-&gt; (&#39;MySQL Tutorial&#39;,&#39;DBMS stands for DataBase ...&#39;),\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003cspan\>\n\u003c/span\>-&gt; (&#39;How To Use MySQL Well&#39;,&#39;After you went through a ...&#39;),\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003cspan\>\n\u003c/span\>-&gt; (&#39;Optimizing MySQL&#39;,&#39;In this tutorial we will show ...&#39;),\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003cspan\>\n\u003c/span\>-&gt; (&#39;1001 MySQL Tricks&#39;,&#39;1. Never run mysqld as root. 2. ...&#39;),\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003cspan\>\n\u003c/span\>-&gt; (&#39;MySQL vs. YourSQL&#39;,&#39;In the following database comparison ...&#39;),\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003cspan\>\n\u003c/span\>-&gt; (&#39;MySQL Security&#39;,&#39;When configured properly, MySQL ...&#39;);\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>Query OK, 6 rows affected (0.00 sec)\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>Records: 6\u003cspan\>\n\u003c/span\>Duplicates: 0\u003cspan\> \u003c/span\>Warnings: 0\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>3.\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>mysql&gt; SELECT * FROM articles\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003cspan\>\n\u003c/span\>-&gt; WHERE MATCH (title,body) AGAINST (&#39;database&#39;);\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>+----+-------------------+----\u003cWBR\>------------------------------\u003cWBR\>--------+\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>| id | title\u003cspan\> \u003c/span\>| body\u003cspan\>\u003cWBR\> \u003c/span\>|\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>",1] ); //-->

Query OK, 0 rows affected (0.00 sec)

2.

mysql> INSERT INTO articles (title,body) VALUES

-> ('MySQL Tutorial','DBMS stands for DataBase ...'),

-> ('How To Use MySQL Well','After you went through a ...'),

-> ('Optimizing MySQL','In this tutorial we will show ...'),

-> ('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),

-> ('MySQL vs. YourSQL','In the following database comparison ...'),

-> ('MySQL Security','When configured properly, MySQL ...');

Query OK, 6 rows affected (0.00 sec)

Records: 6 Duplicates: 0 Warnings: 0

3.

mysql> SELECT * FROM articles

-> WHERE MATCH (title,body) AGAINST ('database');

+----+-------------------+----<wbr></wbr>------------------------------<wbr></wbr>--------+

| id | title | body<wbr></wbr>|

<!-- D(["mb","\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>+----+-------------------+----\u003cWBR\>------------------------------\u003cWBR\>--------+\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>|\u003cspan\> \u003c/span\>5\n| MySQL vs. YourSQL | In the following database comparison ... |\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>|\u003cspan\> \u003c/span\>1\n| MySQL Tutorial\u003cspan\> \u003c/span\>| DBMS stands for\nDataBase ...\u003cspan\> \u003c/span\>|\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>+----+-------------------+----\u003cWBR\>------------------------------\u003cWBR\>--------+\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>2 rows in set (0.00 sec)\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>4.\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cb\>\u003cspan style\u003d\"color:blue\" lang\u003d\"EN-US\"\>Match\u003c/span\>\u003c/b\>\u003cb\>\u003cspan style\u003d\"color:blue\"\>函数会对\u003c/span\>\u003cspan style\u003d\"color:blue\" lang\u003d\"EN-US\"\>against\u003c/span\>\u003c/b\>\u003cb\>\n\u003cspan style\u003d\"color:blue\"\>中的参数到\u003c/span\>\u003cspan style\u003d\"color:blue\" lang\u003d\"EN-US\"\>Match\u003c/span\>\u003c/b\>\u003cb\>\u003cspan style\u003d\"color:blue\"\>参数的列的资料库中做自然语言搜索,\u003c/span\>\u003cspan style\u003d\"color:blue\" lang\u003d\"EN-US\"\>\nMatch\u003c/span\>\u003c/b\>\u003cb\>\u003cspan style\u003d\"color:blue\"\>函数会返回一个相关值即搜索字符串和要\u003c/span\>\u003cspan style\u003d\"color:blue\" lang\u003d\"EN-US\"\>Match\u003c/span\>\u003c/b\>\u003cb\>\u003cspan style\u003d\"color:blue\"\>的列中的文字的一个相似性度量\n\u003c/span\>\u003cspan style\u003d\"color:blue\" lang\u003d\"EN-US\"\>\u003c/span\>\u003c/b\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>mysql&gt; SELECT id, MATCH (title,body)\nAGAINST (&#39;Tutorial&#39;) AS score\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003cspan\>\n\u003c/span\>-&gt; FROM articles ORDER BY MATCH (title,body) AGAINST (&#39;Tutorial&#39;)\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>5.\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>Match\u003c/span\>\u003cspan\>函数的搜索策略以及返回结果的相关性计算:\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>a.\nMySQL FullText\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>将任何单字字符原形(字母、数字和下划线)的序列视为一个单词\u003cWBR\>。因此单引号\n\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>",1] ); //-->

+----+-------------------+----<wbr></wbr>------------------------------<wbr></wbr>--------+

| 5 | MySQL vs. YourSQL | In the following database comparison ... |

| 1 | MySQL Tutorial | DBMS stands for DataBase ... |

+----+-------------------+----<wbr></wbr>------------------------------<wbr></wbr>--------+

2 rows in set (0.00 sec)

4.

Match函数会对against 中的参数到Match参数的列的资料库中做自然语言搜索, Match函数会返回一个相关值即搜索字符串和要Match的列中的文字的一个相似性度量

mysql> SELECT id, MATCH (title,body) AGAINST ('Tutorial') AS score

-> FROM articles ORDER BY MATCH (title,body) AGAINST ('Tutorial')

5.

Match函数的搜索策略以及返回结果的相关性计算:

a. MySQL FullText将任何单字字符原形(字母、数字和下划线)的序列视为一个单词<wbr></wbr>。因此单引号 <!-- D(["mb","&#39;\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>\n连接的词都被视为一个单词。\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>FullText\u003c/span\>\n\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>分析程序寻找分隔符(空格,逗号以及句号等)确定单词的起始位置和\u003cWBR\>结束位置。因此,在中文里由于没有分割,因此使用\n\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>FullText\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>\n进行全文检索前需要对文本进行预处理,如添加诸如\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>&quot;\n\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>之类的分隔符。\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>\n\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>b.\u003c/span\>\u003c/p\>\n\n\n\u003cp\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>一些单词在全文搜索中会被忽略:\n\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>过于短的词,全文搜索所能找到的词的默认最小长度为\n\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>4\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>\n个字符;\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>停滞词\u003c/span\>\n\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>(\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>\n可以通过微调\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>MySQL\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>\n全文搜索来调节默认的最小单词长度和停滞词\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>)\u003c/span\>\n\u003c/p\>\n\n\u003cp\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>c.\u003c/span\>\u003c/p\>\n\n\n\u003cp\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>另外,搜索策略会对搜索的关键词的重要性进行衡量\u003cWBR\>,如果这个单词出现在许多文件中,则具有较低的重要性:\n\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>(\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>",1] ); //--> ' 连接的词都被视为一个单词。FullText 分析程序寻找分隔符(空格,逗号以及句号等)确定单词的起始位置和<wbr></wbr>结束位置。因此,在中文里由于没有分割,因此使用 FullText 进行全文检索前需要对文本进行预处理,如添加诸如" 之类的分隔符。

b.

一些单词在全文搜索中会被忽略:

过于短的词,全文搜索所能找到的词的默认最小长度为 4 个字符;

停滞词

( 可以通过微调MySQL 全文搜索来调节默认的最小单词长度和停滞词)

c.

另外,搜索策略会对搜索的关键词的重要性进行衡量<wbr></wbr>,如果这个单词出现在许多文件中,则具有较低的重要性: ( <!-- D(["mb","\n通常如果单词出现在至少全文的\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>50%\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>\n的行中,则将被视作停滞词\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>)\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>这样的话有时候使用全文搜索会很奇怪,即\n\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>例如\u003c/span\>\n\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>, \u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>\n虽然单词\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\> \u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>\n&quot;\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\" lang\u003d\"EN-US\"\>MySQL\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>\n&quot;\u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\> \u003c/span\>\u003cspan style\u003d\"background:aqua none repeat scroll 0%\"\>\n出现在文章表中的每一行,但对这个词的搜索可能得不到任何结果:\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>mysql&gt; SELECT * FROM articles\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003cspan\>\n\u003c/span\>-&gt; WHERE MATCH (title,body) AGAINST (&#39;MySQL&#39;);\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>找不到搜索的词\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>(0.00 \u003c/span\>\u003cspan\>秒\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>)\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>这个搜索的结果为空,原因是单词\u003c/span\> \u003cspan\>&quot;\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>MySQL\u003c/span\>\u003cspan\>&quot;\u003c/span\>\n\u003cspan\>出现在至少全文的\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>50%\u003c/span\>\u003cspan\>的行中。\u003c/span\> \u003cspan\>因此\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>, \u003c/span\>\u003cspan\>它被列入停止字。\n\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cb\>\u003cspan style\u003d\"font-size:14pt;color:red\" lang\u003d\"EN-US\"\>Boolean\u003c/span\>\u003c/b\>\u003cb\>\u003cspan style\u003d\"font-size:14pt;color:red\"\>全文搜索\u003c/span\>\u003c/b\>\u003cb\>\u003cspan style\u003d\"font-size:14pt;color:red\" lang\u003d\"EN-US\"\>",1] ); //--> 通常如果单词出现在至少全文的50% 的行中,则将被视作停滞词)

这样的话有时候使用全文搜索会很奇怪,即

例如 , 虽然单词 "MySQL " 出现在文章表中的每一行,但对这个词的搜索可能得不到任何结果:

mysql> SELECT * FROM articles

-> WHERE MATCH (title,body) AGAINST ('MySQL');

找不到搜索的词(0.00 )

这个搜索的结果为空,原因是单词 "MySQL" 出现在至少全文的50%的行中。 因此, 它被列入停止字。

Boolean全文搜索 <!-- D(["mb","\n\u003c/span\>\u003c/b\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>d.\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>需要绕过该\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>50% \u003c/span\>\u003cspan\>限制的用户可使用布尔搜索代码\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>&lt;\u003c/span\>\u003cspan\>布尔全文搜索\u003c/span\>\n\u003cspan lang\u003d\"EN-US\"\>&gt;\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>1\u003c/span\>\u003cspan\>)语法:\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>SELECT * FROM articles WHERE MATCH\n(title,body) AGAINST (&#39;+MySQL -YourSQL&#39; IN BOOLEAN MODE);\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>2\u003c/span\>\u003cspan\>)布尔搜索的一般特点:\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>#\u003cspan\> \u003c/span\>\u003c/span\>\u003cspan\>它们不使用\u003c/span\>\u003cspan lang\u003d\"EN-US\"\> 50% \u003c/span\>\u003cspan\>域值。\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>(\u003c/span\>\u003cspan\>\n不会出现一般全文检索的那样子,如果出现次数过多反而找不到的情况\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>)\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\># \u003c/span\>\u003cspan\>它们不会按照相关性渐弱的顺序将行进行分类。\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>#\u003cspan\> \u003c/span\>\u003c/span\>\u003cspan\>即使没有\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>FULLTEXT\u003c/span\>\u003cspan\>,它们仍然可以工作,尽管这种方式的搜索执行的速度非常之慢。\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\># \u003c/span\>\u003cspan\>最小单词长度全文参数和最大单词长度全文参数均适用。\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>(\u003c/span\>\u003cspan\>依然有最小单词长度限制,默认为\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>4\u003c/span\>\u003cspan\>\n个字符\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>)\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\># \u003c/span\>\u003cspan\>停止字适用。\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>3\u003c/span\>\u003cspan\>)布尔搜索的强大之处在于其可定制性,主要定制\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>AGAINST\u003c/span\>\u003cspan\>中的搜索关键词模式:\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>+\u003c/span\>\u003cspan\>必须包含\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>,-\u003c/span\>\u003cspan\>不能出现\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>,\u003c/span\>\u003cspan\>无操作符\n\u003c/span\> \u003cspan\>可有可无\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>,&gt; ,&lt;,()\u003c/span\>\u003cspan\>组合表达式\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>,~,*\u003c/span\>\u003cspan\>通配符\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>\n,&quot;\u003c/span\>\u003cspan\>构造词组\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>(\u003c/span\>\u003cspan\>注意非单词字符不算\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>)\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>4\u003c/span\>\u003cspan\>)\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>一些实例:\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>包含至少两个单词中的一个的行,\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>&#39;apple banana&#39;;\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>两个单词都包含的行\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>,&#39;+apple\n+juice&#39;;\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>包含单词\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>",1] ); //-->

d.

需要绕过该50% 限制的用户可使用布尔搜索代码<布尔全文搜索 >

1)语法:

SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE);

2)布尔搜索的一般特点:

# 它们不使用 50% 域值。( 不会出现一般全文检索的那样子,如果出现次数过多反而找不到的情况)

# 它们不会按照相关性渐弱的顺序将行进行分类。

# 即使没有FULLTEXT,它们仍然可以工作,尽管这种方式的搜索执行的速度非常之慢。

# 最小单词长度全文参数和最大单词长度全文参数均适用。(依然有最小单词长度限制,默认为4 个字符)

# 停止字适用。

3)布尔搜索的强大之处在于其可定制性,主要定制AGAINST中的搜索关键词模式:

+必须包含,-不能出现,无操作符 可有可无,> ,<,()组合表达式,~,*通配符 ,"构造词组(注意非单词字符不算)

4

一些实例:

包含至少两个单词中的一个的行,'apple banana';

两个单词都包含的行,'+apple +juice';

包含单词 <!-- D(["mb","&quot;apple&quot;\u003c/span\>\u003cspan\>的行,若这些行也包含单词&quot;\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>macintosh\u003c/span\>\u003cspan\>\n&quot;,则列为更高等级,\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>&#39;+apple macintosh&#39;;\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>包含\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>&quot;apple&quot;\u003c/span\>\u003cspan\>,不包含\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>&quot;macintosh&quot;\u003c/span\>\u003cspan\>\n的行,\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>&#39;+apple -macintosh&#39;;\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>&#39;+apple +(&gt;turnover &lt;strudel)&#39;\u003c/span\>\u003cspan\>,包含\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>apple\u003c/span\>\u003cspan\>和\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>\ntunover\u003c/span\>\u003cspan\>或者包含\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>apple\u003c/span\>\u003cspan\>和\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>strudel\u003c/span\>\u003cspan\>的行,而且包含\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>\napple turnover\u003c/span\>\u003cspan\>的行比包含\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>apple strudel\u003c/span\>\u003cspan\>的行排列等级更高;\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>&#39;apple*&#39;,\u003c/span\>\u003cspan\>匹配\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>apple,apples\u003c/span\>\u003cspan\>等通配符;\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>&#39;&quot;some words&quot;&#39;\u003c/span\>\u003cspan\>寻找包含短语\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>&quot;some words&quot;\u003c/span\>\u003cspan\>的行\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>\n(\u003c/span\>\u003cspan\>会找到\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>&quot;some words of wisdom&quot;\u003c/span\>\u003cspan\>的行,而不会找到\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>&quot;some noise words&quot;\u003c/span\>\u003cspan\>\n的行\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>)\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>5\u003c/span\>\u003cspan\>)我的这里可能使用\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>第一个\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>,\u003c/span\>\u003cspan\>以及通配符的情况较多等。\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>e.\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>全文搜索带查询扩展:\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>带有查询扩展功能的全文检索,\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>WITH\nQUERY EXPANSION\u003c/span\>\u003cspan\>;\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>注意优点和缺点;\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>注意:盲查询扩展功能很容易返回非相关文件而增加无用信息\u003cWBR\>,因此只有在查询一个长度很短的短语时才有必要使用这项功能。\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>f.\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>全文停滞词\u003c/span\>\u003c/p\>\n\n\u003cp\>",1] ); //--> "apple"的行,若这些行也包含单词"macintosh ",则列为更高等级,'+apple macintosh';

包含"apple",不包含"macintosh" 的行,'+apple -macintosh';

'+apple +(>turnover <strudel)',包含apple tunover或者包含applestrudel的行,而且包含 apple turnover的行比包含apple strudel的行排列等级更高;

'apple*',匹配apple,apples等通配符;

'"some words"'寻找包含短语"some words"的行 (会找到"some words of wisdom"的行,而不会找到"some noise words" 的行)

5)我的这里可能使用

第一个,以及通配符的情况较多等。

e.

全文搜索带查询扩展:

带有查询扩展功能的全文检索,WITH QUERY EXPANSION

注意优点和缺点;

注意:盲查询扩展功能很容易返回非相关文件而增加无用信息<wbr></wbr>,因此只有在查询一个长度很短的短语时才有必要使用这项功能。

f.

全文停滞词

<!-- D(["mb","\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>g.\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>全文限定条件\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>h.\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>微调\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>MySQL\u003c/span\>\u003cspan\>全文搜索\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>(MySQL\u003c/span\>\u003cspan\>是\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>\nopen source\u003c/span\>\u003cspan\>的,可以修改源代码来订制和安装\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>MySQL)\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>1)\u003c/span\>\u003cspan\>调节全文搜索参数的时候需要慎重,因为大多数情况只能降低其性能\u003cWBR\>,除非非常了解自己在做什么。\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>2)\u003c/span\>\u003cspan\>另外,一些变量的改变需要重建表中的\u003c/span\>\u003cspan lang\u003d\"EN-US\"\>FULLTEXT\u003c/span\>\u003cspan\>索引;\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan lang\u003d\"EN-US\"\>3)\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>可以修改编入索引单词的最小长度和最大长度;\u003c/span\>\u003c/p\>\n\n\u003cp\>\u003cspan\>等等。。。\u003c/span\>\u003c/p\>\n\n\u003cbr\>\n",0] ); D(["ce"]); //-->

g.

全文限定条件

h.

微调MySQL全文搜索(MySQL open source的,可以修改源代码来订制和安装MySQL)

1)调节全文搜索参数的时候需要慎重,因为大多数情况只能降低其性能<wbr></wbr>,除非非常了解自己在做什么。

2)另外,一些变量的改变需要重建表中的FULLTEXT索引;

3)

可以修改编入索引单词的最小长度和最大长度;

等等。。。

分享到:
评论

相关推荐

    Mysql运行SQL语句中文乱码问题的解决方法

    在MySQL数据库中运行包含中文字符的SQL语句时,经常会遇到中文显示为乱码的问题。这一现象不仅降低了开发效率,还可能导致数据错误。本文将详细介绍如何彻底解决MySQL运行SQL语句中文乱码的问题。 #### 一、理解...

    小度写范文【mysql,sql语句大全】mysql数据库sql语句大全模板.pdf

    【MySQL SQL 语句大全】MySQL数据库SQL语句模板 MySQL是一种广泛使用的开源关系型数据库管理系统,由MySQL AB公司开发,现在归Oracle公司所有。它以其高效、稳定和易用的特点,深受开发者喜爱。在MySQL中,SQL...

    MySQL SQL经典语句

    - **说明**: 这些基本的SQL语句涵盖了常见的数据操作需求,如查询、插入、更新等。 #### 二、高级查询运算词 **1. UNION 运算符** - **语法**: `SELECT * FROM table1 UNION SELECT * FROM table2;` - **说明**:...

    mysql 常用sql语句整理

    在这个主题中,我们将深入探讨MySQL中的一些常用SQL语句,特别是与数据库连接有关的概念,包括左连接、右连接和全连接。 首先,SQL(Structured Query Language)是用于管理和处理关系数据库的标准语言。在MySQL中...

    MySQL数据库sql语句增删改查笔记

    ### MySQL数据库SQL语句增删改查笔记 #### 一、插入数据(Insert) 在MySQL中,`INSERT INTO`语句用于向表中插入新记录。语法格式为: ```sql INSERT INTO 表名 (列1, 列2, ..., 列n) VALUES (值1, 值2, ..., 值n...

    mysql 经典sql语句

    本篇文章将深入探讨一些MySQL中的经典SQL语句,这些语句对于优化数据库性能和提升开发效率至关重要。 1. **创建数据库**: 使用`CREATE DATABASE`语句可以创建新的数据库。例如,`CREATE DATABASE database-name`...

    关于MySQL的SQL语句实验2

    1. **子查询**:在SQL语句1中,我们看到了查询订单金额最高的订单的方法。这里使用了嵌套查询(子查询),即在主查询中嵌入了一个查询来获取最大订单金额,然后在外部查询中匹配这个最大值。 2. **聚合函数与GROUP ...

    解析excel,生成mysql的sql语句devin-python-master.zip

    本项目"解析excel,生成mysql的sql语句"的目标是通过Python编程实现从Excel表格数据到MySQL数据库SQL语句的自动化转换,这在数据导入、数据分析和报告生成等场景中非常有用。项目文件名为"devin-python-master.zip...

    Mysql高级sql语句使用7.3.pdf

    本文件主要讲解了MySQL高级SQL语句在实际应用中的使用方法和技巧,包括分组统计、模糊匹配、字段长度计算、存储过程等。 首先,分组统计是数据库中常用的操作,可以通过GROUP BY语句对数据进行分组统计。在本文件中...

    MySql常用 SQL语句汇总,共 25 条

    在后端开发中,熟练掌握SQL语句是必不可少的技能。以下是一些常用的MySQL SQL语句,供学习、复习和查阅。 1. **创建数据库** 使用`CREATE DATABASE`语句来创建新的数据库,例如:`CREATE DATABASE my_database;` ...

    经典的SQL语句大全,access_SqlServer_MySQL通用

    在Access、MySQL和MSSQL等数据库管理系统中,SQL语句有着广泛的应用。以下是一些基本的SQL语句及其说明: 1. **创建数据库**: 使用`CREATE DATABASE`语句创建一个新的数据库,例如:`CREATE DATABASE database-...

    MySQL DBA最需要掌握的SQL语句详细教程

    下面将详细介绍DBA在日常工作中可能需要使用的一些关键SQL语句及其应用场景。 1. 数据库连接与断开操作 DBA在进行数据库操作之前,首先需要建立与数据库服务器的连接。在Windows环境下,可以使用mysql命令并结合-h...

    springboot多数据源切换mysql+sql server事例

    本示例“springboot多数据源切换mysql+sql server”是关于如何在Spring Boot项目中配置和使用多个数据库的数据源切换。下面将详细阐述这个主题的知识点。 首先,**多数据源**是指在一个应用中同时连接并操作多个...

    SQL语句基础教程。SQL语句基础教程

    10. 存储过程:存储过程是一组预编译的SQL语句,可以封装在单个数据库对象中。它们允许你创建可重用的代码,提高性能,并可以接受参数以实现更灵活的调用。 通过这个“SQL语句基础教程”,初学者将逐步了解和掌握...

    基础常用SQL语句.pdf

    本文档总结了基础常用的SQL语句,涵盖了MYSQL基础语句、数据库创建、数据表创建、数据插入、查询、更新、删除、子句、连接、NULL值处理、正则表达式、ALTER命令、服务器元数据、MYSQL及SQL注入、MYSQL导出数据等多个...

    SQL语句基础PPT

    4. **查询数据**: SELECT语句是最常用的SQL语句,用于从表中检索数据。可以指定列、使用WHERE子句过滤数据,使用GROUP BY进行分组,HAVING用于在分组后过滤,ORDER BY进行排序。 5. **更新与删除数据**: UPDATE语句...

    SQL语句大全

    以上是MySQL环境下SQL语句的基本使用方法及示例,通过这些基础的SQL语句,你可以实现对数据库的基本操作,包括数据的查询、插入、更新和删除等功能。这些操作对于日常开发和维护数据库系统至关重要。希望这些内容能...

    MySQL DELETE 删除语句加锁分析1

    在MySQL中,DELETE语句的加锁行为是数据库...理解这些策略对于优化SQL语句,减少死锁,以及提升数据库性能至关重要。在实际应用中,应根据业务需求选择合适的隔离级别和索引设计,以达到最佳的并发性能和数据一致性。

    java实体转mysql建表语句

    这些工具能够解析Java源代码,从中提取实体类信息并生成相应的SQL语句。 4. **MyBatis Generator**: MyBatis Generator是一个强大的工具,可以自动生成Java实体类、Mapper接口、Mapper XML文件以及建表语句。只需...

    MySQL优化SQL语句的技巧

    MySQL优化SQL语句的技巧是数据库管理员和开发人员提高系统性能的关键技能。本文主要探讨了四种常见的SQL优化策略,旨在帮助开发者更好地理解和改进SQL查询性能。 1. **分解SQL**: 在面对复杂的SQL查询时,一个...

Global site tag (gtag.js) - Google Analytics