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