你有沒(méi)有想過(guò)如何使用搜索功能在所有整站中實(shí)現(xiàn)!互聯(lián)網(wǎng)博客和網(wǎng)站,大多數(shù)都采用MySQL數(shù)據(jù)庫(kù)。MySQL提供了一個(gè)美妙的方式實(shí)施一個(gè)小的搜索引擎,在您的網(wǎng)站(全文檢索)。所有您需要做的是擁有的MySQL 4.x及以上。MySQL提供全文檢索功能,我們可以用它來(lái) ??實(shí)現(xiàn)搜索功能。
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),碭山企業(yè)網(wǎng)站建設(shè),碭山品牌網(wǎng)站建設(shè),網(wǎng)站定制,碭山網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,碭山網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
首先,讓我們?yōu)槲覀兊睦又性O(shè)置一個(gè)示例表。我們將創(chuàng)建一個(gè)名為第一個(gè)表。
CREATE TABLE articles (
id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
title VARCHAR(200),
body TEXT,
FULLTEXT (title,body)
);
在此表中還可以添加一些示例數(shù)據(jù)。執(zhí)行后,插入查詢。
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 ...');
一旦樣本數(shù)據(jù)是準(zhǔn)備好,我們可以開(kāi)始我們的全文檢索功能。
自然語(yǔ)言全文搜索
嘗試我們的示例表上執(zhí)行下面的SELECT查詢。
SELECT * FROM articles
WHERE MATCH (title,body) AGAINST ('database');
你就能看到結(jié)果如下:
在下面的數(shù)據(jù)庫(kù)比較5 MySQL與YourSQL的...
MySQL教程DBMS 1代表數(shù)據(jù)庫(kù)...
我們?cè)谏厦娴腟QL查詢(標(biāo)題,正文)反對(duì)(“數(shù)據(jù)庫(kù)”)的比賽,選擇所有的記錄,列標(biāo)題和正文進(jìn)行全文搜索。
您可以修改該查詢,并創(chuàng)建您自己的版本,以自己的數(shù)據(jù)庫(kù)中執(zhí)行全文搜索。
布爾全文搜索
它可能發(fā)生,你要指定某些關(guān)鍵字在您的搜索條件。此外,您可能要忽略某些關(guān)鍵字。布爾全文搜索可以用來(lái)執(zhí)行這些要求的全文檢索。
檢查下面的SELECT查詢。
SELECT * FROM articles WHERE MATCH (title,body)
AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE);
如果您發(fā)現(xiàn)上述選擇查詢,我們?cè)黾恿瞬紶朚ODE反對(duì)()。這個(gè)查詢將獲取MySQL的關(guān)鍵字,但不YourSQL關(guān)鍵字的所有記錄。請(qǐng)注意+和-我們以前指定的關(guān)鍵字!
在執(zhí)行此功能,MySQL使用什么有時(shí)也被稱(chēng)為布爾邏輯作為暗示,其中:+代表與-代表不是[無(wú)操作員]暗示或
以下是幾個(gè)例子布爾搜索條件。
“蘋(píng)果香蕉
查找行至少包含兩個(gè)詞之一。
“+蘋(píng)果+果汁”
尋找包含兩個(gè)單詞的行。
“+蘋(píng)果Macintosh
查找行包含“蘋(píng)果”,但排名的行,如果它們也包含“麥金塔”。
“+蘋(píng)果Macintosh的”
查找行包含“蘋(píng)果”這個(gè)詞,而不是“麥金塔”。
'+蘋(píng)果Macintosh的“
查找包含單詞“蘋(píng)果”的行,但如果該行也包含單詞“麥金塔”,速度比如果行不低。這是“軟”比“+蘋(píng)果Macintosh電腦”,為“麥金塔”的存在,導(dǎo)致該行不能在所有返回的搜索。
'+蘋(píng)果+(營(yíng)業(yè)額餡餅)“
行包含“蘋(píng)果”和“營(yíng)業(yè)額”,或“蘋(píng)果”和“餡餅”(任何順序)的話,但排名“蘋(píng)果的營(yíng)業(yè)額”比“蘋(píng)果餡餅“。
限制
支持全文檢索的MyISAM表只。MySQL 4.1中,使用多個(gè)字符設(shè)置一個(gè)單一的表內(nèi)的支持。然而,在一個(gè)FULLTEXT索引的所有列,必須使用相同的字符集和校對(duì)規(guī)則。MATCH()列列表必須匹配完全在一些列清單表的FULLTEXT索引定義,除非這場(chǎng)比賽()是在布爾模式。布爾模式搜索,可以做非索引列,雖然他們很可能是緩慢的。
辦法如下:
select * from table1 where concat(`字段`,`字段`,`字段` ) like '%關(guān)鍵字%' union
select * from table2 where concat(`字段`,`字段`,`字段` ) like '%關(guān)鍵字%' union
select * from table3 where concat(`字段`,`字段`,`字段` ) like '%關(guān)鍵字%' union
select * from table4 where concat(`字段`,`字段`,`字段` ) like '%關(guān)鍵字%' union
select * from table5 where concat(`字段`,`字段`,`字段` ) like '%關(guān)鍵字%'?
前提是查詢出來(lái)的字段個(gè)數(shù)要一樣,類(lèi)型要對(duì)應(yīng)好,至于如何得到正確且符合你需要的sql就要在程序類(lèi)中處理了。
在數(shù)據(jù)庫(kù)中查找某一字段的值的操作方法和步驟如下:
1、首先,在桌面上,單擊“
Management Studio”圖標(biāo),如下圖所示。
2、其次,完成上述步驟后,在該界面中,單擊左上角的“新建查詢”按鈕,如下圖所示。
3、接著,完成上述步驟后,輸入如下紅框標(biāo)注的SQL語(yǔ)句,如下圖所示。
4、然后,完成上述步驟后,在該界面中,單擊左上方的“執(zhí)行”選項(xiàng),如下圖所示。
5、最后,完成上述步驟后,在此界面中,顯示查詢數(shù)據(jù)庫(kù)有某個(gè)字段,如下圖所示。這樣,問(wèn)題就解決了。
?php
$host_name="localhost"; //服務(wù)器名
$host_user="root"; //連接服務(wù)器的用戶名
$host_pass="123456"; //連接服務(wù)器的密碼
$db_name=""; //服務(wù)器上的可用數(shù)據(jù)庫(kù)
$my_conn=mysql_connect($host_name,$host_user,$host_pass); //連接服務(wù)器
mysql_select_db($db_name,$my_conn); //選擇操作的數(shù)據(jù)庫(kù)
mysql_query("SET NAMES utf-s"); //設(shè)置編碼
$sql="select content from sheet where id=0 "http://mysql語(yǔ)句
//從sheet表中查詢id=0的content的值
$row = mysql_fetch_array(mysql_query($sql,$my_conn));//從mysql返回的結(jié)果中提取一 //行
?
mysql
like
語(yǔ)法
like
運(yùn)算符用于
where
表達(dá)式中,以搜索匹配字段中的指定內(nèi)容,語(yǔ)法如下:
where
column
like
pattern
where
column
not
like
pattern
在
like
前面加上
not
運(yùn)算符時(shí),表示與
like
相反的意思,即選擇
column
不包含
pattern
的數(shù)據(jù)記錄。
like
通常與通配符
%
一起使用,%
表示通配
pattern
中未出現(xiàn)的內(nèi)容。而不加通配符
%
的
like
語(yǔ)法,表示精確匹配,其實(shí)際效果等同于
=
等于運(yùn)算符。
mysql
like
大小寫(xiě)
mysql
like
匹配字符時(shí),默認(rèn)是不區(qū)分大小寫(xiě)的,如果需要在匹配的時(shí)候區(qū)分大小寫(xiě),可以加入
binary
操作符:
select
*
from
user
where
username
like
binary
'%azz%'select
*
from
user
where
username
like
binary
'%azz%'
binary
操作符表示按照二進(jìn)制進(jìn)行比較,因此加上該操作符后,便可以嚴(yán)格區(qū)分大小寫(xiě),因此以上兩條
sql
查詢出來(lái)的內(nèi)容是不同的。
mysql
like
中文字符匹配
由于數(shù)據(jù)存儲(chǔ)編碼問(wèn)題,在某些情況下,mysql
進(jìn)行
like
搜索返回的數(shù)據(jù)中除了符合要求的數(shù)據(jù)外,往往還會(huì)返回許多不相干的數(shù)據(jù)。這時(shí)候也需要在
like
后面加上
binary
操作符以進(jìn)行二進(jìn)制比較:
select
*
from
user
where
username
like
binary
'%小%'
提示
當(dāng)在
like
匹配時(shí)加上
binary
操作符后,則會(huì)嚴(yán)格區(qū)分英文大小寫(xiě)。因此當(dāng)檢索的內(nèi)容是中英文混合且需要忽略英文大小寫(xiě)的時(shí)候,就會(huì)遇到麻煩。為解決此問(wèn)題,需要引入
mysql
中的
upper()
與
concat()
函數(shù):
upper():將英文字符串變大寫(xiě),同ucase()
concat():將多個(gè)字符串連接成一個(gè)字符串
語(yǔ)法如下:
upper(str)
concat(str1,str2,...)
因此當(dāng)我們要進(jìn)行中英文混合匹配檢索且要忽略英文大小寫(xiě)時(shí),可以使用如下例所示的
sql
語(yǔ)句:
select
*
from
username
where
upper(username)
like
binary
concatt('%',upper('a中文b'),'%')
在該
sql
中,將搜索的字段及檢索的內(nèi)容都進(jìn)行大寫(xiě)轉(zhuǎn)換后,再進(jìn)行二進(jìn)制匹配。
like
運(yùn)算符的效率
like
運(yùn)算符要對(duì)字段數(shù)據(jù)進(jìn)行逐一掃描匹配,實(shí)際執(zhí)行的效率是較差的,哪怕該字段已經(jīng)建有索引(a%
這種方式會(huì)用到索引)。當(dāng)數(shù)據(jù)量較大時(shí),要盡可能的減少
like
運(yùn)算符的使用,也沒(méi)有太多優(yōu)化的余地。
標(biāo)題名稱(chēng):mysql怎么檢索,如何找mysql
標(biāo)題網(wǎng)址:http://www.rwnh.cn/article20/dssdico.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、網(wǎng)站導(dǎo)航、虛擬主機(jī)、電子商務(wù)、網(wǎng)站營(yíng)銷(xiāo)、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)