一、
成都創(chuàng)新互聯(lián)公司于2013年成立,先為邵原等服務(wù)建站,邵原等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為邵原企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
1)針對(duì)author這個(gè)字段中含有POST內(nèi)容的所有列:select * from bookSystem where author LIKE '%".$_POST['search']."%'
2)針對(duì)bookName??這個(gè)字段中含有POST內(nèi)容的所有列:
select * from bookSystem?where bookName??LIKE '%".$_POST['search']."%'
3)針對(duì)press?這個(gè)字段中含有POST內(nèi)容的所有列:
select * from bookSystem?where press?LIKE '%".$_POST['search']."%'
二、WHERE 子句
1)如需有條件地從表中選取數(shù)據(jù),可將 WHERE 子句添加到 SELECT 語句。
2)語法SELECT 列名稱 FROM 表名稱 WHERE 列 運(yùn)算符 值
1、where型子查詢
(把內(nèi)層查詢結(jié)果當(dāng)作外層查詢的比較條件)
#不用order by 來查詢最新的商品
select goods_id,goods_name from goods where goods_id = (select max(goods_id) from goods);
#取出每個(gè)欄目下最新的產(chǎn)品(goods_id唯一)
select cat_id,goods_id,goods_name from goods where goods_id in(select max(goods_id) from goods group by cat_id);
2、from型子查詢
(把內(nèi)層的查詢結(jié)果供外層再次查詢)
#用子查詢查出掛科兩門及以上的同學(xué)的平均成績
思路:
#先查出哪些同學(xué)掛科兩門以上
select name,count(*) as gk from stu where score 60 having gk =2;
#以上查詢結(jié)果,我們只要名字就可以了,所以再取一次名字
select name from (select name,count(*) as gk from stu having gk =2) as t;
#找出這些同學(xué)了,那么再計(jì)算他們的平均分
select name,avg(score) from stu where name in (select name from (select name,count(*) as gk from stu having gk =2) as t) group by name;
3、exists型子查詢
(把外層查詢結(jié)果拿到內(nèi)層,看內(nèi)層的查詢是否成立)
#查詢哪些欄目下有商品,欄目表category,商品表goods
select cat_id,cat_name from category where exists(select * from goods where goods.cat_id = category.cat_id);
前面介紹了如何對(duì)表數(shù)查詢、更新、刪除,本小節(jié)介紹如何在查詢、更新、刪除操作加上 WHERE 條件約束,使這些語句的操作更加準(zhǔn)確,滿足業(yè)務(wù)需求。WHERE 條件的操作符類型有如下:
以 teacher 表為例,查詢年齡大于 18 的教師信息:
執(zhí)行結(jié)果如下圖:
再比如使用 LIKE 模糊查詢身份證號(hào)以 020X 結(jié)尾的教師信息:
執(zhí)行結(jié)果如下圖:
[圖片上傳失敗...(image-f53914-1648379120315)]
以 teacher 表為例,查詢年齡大于 18 和 教師姓氏 王 的教師信息:
執(zhí)行結(jié)果如下圖:
[圖片上傳失敗...(image-7dbeda-1648379120315)]
以 teacher 表為例,查詢年齡大于 25 或 教師姓氏 王 的教師信息:
執(zhí)行結(jié)果如下圖:
以 teacher 表為例,將 age 在 20 和 30 之間的教師身份證設(shè)置為 無 :
為了演示方便,我們先給 teacher 表增加一個(gè)字段 email :
執(zhí)行結(jié)果如下圖:
清空表數(shù)據(jù):
然后往 teacher 表插入幾條測試數(shù)據(jù):
然后查詢 email 為 NULL 的教師信息結(jié)果集:
執(zhí)行結(jié)果如下圖:
本小節(jié)介紹了如果在查詢、更新語句后面加上 WHERE 條件約束,需要注意的是當(dāng)使用 、 、這樣的操作符和空值比較的時(shí)候,NULL值與任何其它值的比較(即使是NULL)永遠(yuǎn)不會(huì)為 TRUE ,例如要查詢 name 為 NULL 的結(jié)果集要寫成 name IS NULL ,而不能使用 name=NULL 。
一使用SELECT子句進(jìn)行多表查詢
SELECT 字段名 FROM 表1,表2 … WHERE 表1.字段 = 表2.字段 AND 其它查詢條件
SELECT a.id,a.name,a.address,a.date,b.math,b.english,b.chinese FROM tb_demo065_tel AS b,tb_demo065 AS a WHERE a.id=b.id
注:在上面的的代碼中,以兩張表的id字段信息相同作為條件建立兩表關(guān)聯(lián),但在實(shí)際開發(fā)中不應(yīng)該這樣使用,最好用主外鍵約束來實(shí)現(xiàn)
二使用表的別名進(jìn)行多表查詢
如:SELECT a.id,a.name,a.address,b.math,b.english,b.chinese FROM tb_demo065 a,tb_demo065_tel b WHERE a.id=b.id AND b.id='$_POST[textid]'
SQL語言中,可以通過兩種方式為表指定別名
MySQL是一個(gè)關(guān)系型數(shù)據(jù)庫管理系統(tǒng),由瑞典MySQL AB 公司開發(fā),目前屬于 Oracle 旗下產(chǎn)品。MySQL 是最流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一,在 WEB 應(yīng)用方面,MySQL是最好的 RDBMS (Relational Database Management System,關(guān)系數(shù)據(jù)庫管理系統(tǒng)) 應(yīng)用軟件。
MySQL是一種關(guān)系數(shù)據(jù)庫管理系統(tǒng),關(guān)系數(shù)據(jù)庫將數(shù)據(jù)保存在不同的表中,而不是將所有數(shù)據(jù)放在一個(gè)大倉庫內(nèi),這樣就增加了速度并提高了靈活性。
MySQL所使用的 SQL 語言是用于訪問數(shù)據(jù)庫的最常用標(biāo)準(zhǔn)化語言。MySQL 軟件采用了雙授權(quán)政策,分為社區(qū)版和商業(yè)版,由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),一般中小型網(wǎng)站的開發(fā)都選擇 MySQL 作為網(wǎng)站數(shù)據(jù)庫。
例子:
select * from user where id=1
查詢id為一的用戶
select * from user where name like '章%'
查詢姓張的用戶
select * from user where age in (12,13,14) and sex='男'
查詢年齡是12,13,14的男生用戶
。。。。