假設(shè)有這樣兩條數(shù)據(jù):

成都創(chuàng)新互聯(lián)公司主要從事網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)阿巴嘎,十載網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220
(表名為user)
1) username=admin,password=000000
2) username=admin,password=123456
我們要實(shí)現(xiàn)的效果是可以輸入多個(gè)關(guān)鍵字查詢,多個(gè)關(guān)鍵字間以逗號(hào)分隔。
使用上述表舉例:輸入單個(gè)關(guān)鍵字“admin”可查出這兩條數(shù)據(jù),輸入“admin,000000”只查出第一條數(shù)據(jù),可實(shí)現(xiàn)的sql語句是:
select * from user where concat(username, password) like '%admin%';
select * from user where concat(username, password) like '%admin%' and concat(username, password) like '%000000%';
concat的作用是連接字符串,但這樣有一個(gè)問題:如果你輸入單個(gè)關(guān)鍵字“admin000000”也會(huì)查到第一條數(shù)據(jù),這顯然不是我們想要的結(jié)果,解決方法是:由于使用逗號(hào)分隔多個(gè)關(guān)鍵字,說明逗號(hào)永遠(yuǎn)不會(huì)成為關(guān)鍵字的一部分,所以我們?cè)谶B接字符串時(shí)把每個(gè)字段以逗號(hào)分隔即可解決此問題,下面這個(gè)sql語句不會(huì)查詢到第一條數(shù)據(jù):
select * from user where concat(username, ',', password) like '%admin000000%';
如果分隔符是空格或其他符號(hào),修改 ',' 為 '分隔符' 即可。
總結(jié):
select * from 表名 where concat(字段1, '分隔符', 字段2, '分隔符', ...字段n) like '%關(guān)鍵字1%' and concat(字段1, '分隔符', 字段2, '分隔符', ...字段n) like '%關(guān)鍵字2%' ......;
可以這樣編寫SQL語句
這里假設(shè)表結(jié)構(gòu)如下:
t1(colToChk,col2)
t2(keyword)
列出待查關(guān)鍵字、t2中"colToChk"字段中含待查關(guān)鍵字的相關(guān)記錄行。
select a.keyword,b.* from
(select distinct keyword from t2) a,
t1 b where b.colToChk
like concat('%',a.keyword,'%');
題主將上述SQL語句套上正確的表名和字段名就可以返回所需的效果。
來自MySQL的學(xué)習(xí)筆記,寫的不對(duì)的地方大家多多指教哦
SELECT、DISTINCT、FROM、JOIN、ON、WHERE、GROUP BY、HAVING、SUM、COUNT、MAX、AVG、ORDER BY、LIMIT
SELECT-DISTINCT-FROM-JOIN-ON-WHERE-GROUP BY-HAVING-ORDER BY-LIMIT
必須字段:SELECT、FROM
可選字段:DISTINCT、JOIN、ON、WHERE、GROUP BY、HAVING、SUM、COUNT、MAX、AVG、ORDER BY、LIMIT
FROM-ON-JOIN-WHERE-GROUP BY(開始使用SELECT中的別名,后面的語句中都可以使用別名)-SUM、COUNT、MAX、AVG-HAVING-SELECT-DISTINCT-ORDER BY-LIMIT
FROM:從哪個(gè)表中檢索數(shù)據(jù)
ON:關(guān)聯(lián)條件,與join一起使用
JOIN:對(duì)需要關(guān)聯(lián)的表進(jìn)行關(guān)聯(lián)
WHERE:過濾數(shù)據(jù)條件,執(zhí)行順序:自下而上、從右到左
GROUP BY:將過濾的數(shù)據(jù)進(jìn)行分組,執(zhí)行順序:從左往右
SUM:求和
COUNT:數(shù)量統(tǒng)計(jì)
MAX:最大值
AVG:求平均值
HAVING:對(duì)分組的數(shù)據(jù)過濾條件,與group by一起使用
SELECT:查看結(jié)果集
DISTINCT:結(jié)果集去重
ORDER BY:排序,升序:ASC;降序:DESC
LIMIT:截取出目標(biāo)頁數(shù)據(jù)
詳細(xì)用法會(huì)在后面進(jìn)行補(bǔ)充
首先創(chuàng)建一張表,添加字段,表名字為:goodsmaster
添加數(shù)據(jù)的語法結(jié)構(gòu)為:
添加數(shù)據(jù)可以是插入數(shù)據(jù)或插入查詢的結(jié)果
1.1 插入數(shù)據(jù)
運(yùn)行語句,查詢結(jié)果:SELECT * FROM goodsmaster
部分字段有做非空約束,那么這邊插入部分?jǐn)?shù)據(jù),驗(yàn)證下非空約束
上面的語句運(yùn)行之后會(huì)報(bào)錯(cuò),錯(cuò)誤內(nèi)容為“[Err] 1364 - Field 'barcode' doesn't have a default value”,即“barcode”這個(gè)字段有創(chuàng)建非空約束,表示這個(gè)字段不能為空,如果插入數(shù)據(jù)時(shí)不給這個(gè)字段賦值,那么就需要給它一個(gè)默認(rèn)值。
部分字段沒有默認(rèn)值,可以為空,那么現(xiàn)在驗(yàn)證一下插入數(shù)據(jù)時(shí),這些字段不進(jìn)行賦值會(huì)有什么結(jié)果
運(yùn)行語句,查詢結(jié)果:SELECT * FROM goodsmaster
仔細(xì)看會(huì)發(fā)現(xiàn),上面的語句中插入數(shù)據(jù)也沒有插入“itemnumber”字段,這個(gè)字段有添加主鍵約束,不能為空,但由于設(shè)置了自增約束,所以沒有賦值也會(huì)自動(dòng)在當(dāng)前字段最大值+1,這就是自增約束;
上面的語句顯示沒有進(jìn)行賦值的字段會(huì)默認(rèn)顯示Null。
1.2 插入查詢結(jié)果
MySQL 支持把查詢的結(jié)果插入到數(shù)據(jù)表中,我們可以指定字段,甚至是數(shù)值,插入到數(shù)據(jù)表中。
語法結(jié)構(gòu)為:
刪除語句使用DELETE刪除,語法結(jié)構(gòu)為:
刪除記錄可以使用WHERE來篩選刪除的數(shù)據(jù),下面為刪除“barcode”字段數(shù)據(jù)為006的記錄
由于部分?jǐn)?shù)據(jù)可以為空,所以再刪除的時(shí)候,WHERE的過濾條件必須用到主鍵約束或者唯一性約束的字段。MySQL 的這種安全性設(shè)置,主要就是為了防止刪除或者修改數(shù)據(jù)時(shí)出現(xiàn)誤操作,導(dǎo)致刪除或修改了不相關(guān)的數(shù)據(jù)。
刪除表中的全部數(shù)據(jù)
MySQL中用UPDATE來修改數(shù)據(jù),語法結(jié)構(gòu)為:
注意:不要修改主鍵字段的值。因?yàn)橹麈I是數(shù)據(jù)記錄的唯一標(biāo)識(shí),如果修改了主鍵的值,就有可能會(huì)破壞數(shù)據(jù)的完整性。
語法結(jié)構(gòu):
具體需要用到的關(guān)鍵字查看本文第一部分即可
有時(shí)需要將表中的記錄去掉重復(fù)后顯示出來,可以用distinct關(guān)鍵字來實(shí)現(xiàn),例如執(zhí)行語句 SELECT * FROM user; 返回結(jié)果如下:
此時(shí)看到id=2,3的記錄username字段相同,如果想查詢所有不重復(fù)的username,可以執(zhí)行如下:
SELECT distinct username FROM user;
例如執(zhí)行排序語句: SELECT * FROM user order by id asc; 得到三條升序的數(shù)據(jù),如果想限制只顯示2條,可以使用LIMIT關(guān)鍵字: SELECT * FROM user order by id asc limit 0,2; 。LIMIT后面跟著的表示起始偏移量和前N行記錄,默認(rèn)起始偏移量為0,所以這句話也可以寫為: SELECT * FROM user order by id asc limit 2; 。 LIMIT經(jīng)常和order by一起配合使用來進(jìn)行分頁顯示。
聚合操作的語法涉及下面幾個(gè)參數(shù):
示例:
表連接從大類上分為內(nèi)連接和外連接。二者區(qū)別在于內(nèi)連接只選出兩張表中互相匹配的記錄,外連接會(huì)選出其他不匹配的記錄。
示例:
創(chuàng)建一個(gè)雇員表deployee,有五個(gè)人:
再創(chuàng)建一個(gè)部門表,有4個(gè)部門:
某些情況下,查詢的條件是另外一個(gè)select語句的結(jié)果,這時(shí)用到子查詢。子查詢關(guān)鍵字有in,not in,= ,!=,exists,not exists等。
如執(zhí)行 select * from deployee where deployee.dep_id in (select dep_id from department); 也表示查詢有部門的雇員。如果子查詢記錄數(shù)唯一,可以使用=代替in:
select * from deployee where deployee.dep_id in (select dep_id from department where dep_id = 'sale'); 由于子查詢只有一條記錄,所有可以用等號(hào)
如果要求將兩個(gè)表的數(shù)據(jù)按照一定的查詢條件查詢出來后,將結(jié)果合并到一起顯示出來,需要使用union和union all關(guān)鍵字來實(shí)現(xiàn)。
union 和 union all的主要區(qū)別是union all是把結(jié)果集直接合并在一起,而union 是將union all后的結(jié)果進(jìn)行一次distinct,去除重復(fù)的記錄。
示例:
本文名稱:怎么用mysql查看關(guān)鍵字 怎么用mysql查看關(guān)鍵字?jǐn)?shù)量
網(wǎng)站路徑:http://www.chinadenli.net/article18/dodopgp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、自適應(yīng)網(wǎng)站、、用戶體驗(yàn)、微信公眾號(hào)、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)