MySQL數(shù)據(jù)庫(kù)應(yīng)用實(shí)戰(zhàn)教程-第4章--MySQL查詢(xún)課件_第1頁(yè)
MySQL數(shù)據(jù)庫(kù)應(yīng)用實(shí)戰(zhàn)教程-第4章--MySQL查詢(xún)課件_第2頁(yè)
MySQL數(shù)據(jù)庫(kù)應(yīng)用實(shí)戰(zhàn)教程-第4章--MySQL查詢(xún)課件_第3頁(yè)
MySQL數(shù)據(jù)庫(kù)應(yīng)用實(shí)戰(zhàn)教程-第4章--MySQL查詢(xún)課件_第4頁(yè)
MySQL數(shù)據(jù)庫(kù)應(yīng)用實(shí)戰(zhàn)教程-第4章--MySQL查詢(xún)課件_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、MySQL程序設(shè)計(jì)第4章 MySQL查詢(xún)4.1 基本查詢(xún)語(yǔ)法4.2 數(shù)據(jù)過(guò)濾4.3 子查詢(xún)4.4 聚合函數(shù)MySQL程序設(shè)計(jì)第4章 MySQL查詢(xún)4.5 高級(jí)查詢(xún)MySQL程序設(shè)計(jì) 查詢(xún)語(yǔ)法 MySQL查詢(xún)使用關(guān)鍵字SELECT來(lái)進(jìn)行查詢(xún),SELECT語(yǔ)句基本語(yǔ)法格式: SELECT 查詢(xún)內(nèi)容 FROM 表名 WHERE 表達(dá)式 GROUP BY 字段名 HAVING 表達(dá)式 ORDEY BY 字段名 LIMIT 記錄數(shù)4.1 基本查詢(xún)語(yǔ)法第4章 MySQL查詢(xún)MySQL程序設(shè)計(jì) 基本查詢(xún)過(guò)濾 基本查詢(xún)過(guò)濾是可以用來(lái)查詢(xún)所有字段數(shù)據(jù)或者指定一個(gè)字段或者多個(gè)字段的數(shù)據(jù)。4.2 數(shù)據(jù)過(guò)濾第4章 M

2、ySQL查詢(xún)MySQL程序設(shè)計(jì) 條件查詢(xún)過(guò)濾 條件查詢(xún)過(guò)濾關(guān)鍵字:AND、OR、IN、NOT IN、IS NULL、IS NOT NULL、BETWEEN AND;按關(guān)鍵字可以進(jìn)行條件查詢(xún)過(guò)濾。 (1)AND(與):用AND進(jìn)行查詢(xún)的時(shí)候,查詢(xún)出來(lái)的數(shù)據(jù)要求條件都得滿(mǎn)足; SELECT * FROM user WHERE age = 20 and name=kevin; (2)OR(或):用OR進(jìn)行查詢(xún)的時(shí)候,查詢(xún)出來(lái)的數(shù)據(jù)只要求滿(mǎn)足任意一個(gè)條件就可以查詢(xún)出來(lái); SELECT * FROM user WHERE age = 20 or name=kevin; (3)IN(在范圍內(nèi)):用IN進(jìn)行

3、查詢(xún)的時(shí)候,查詢(xún)出來(lái)的數(shù)據(jù)在這個(gè)范圍內(nèi); SELECT * FROM user WHERE id in (3,5,7);4.2 數(shù)據(jù)過(guò)濾第4章 MySQL查詢(xún)MySQL程序設(shè)計(jì) 條件查詢(xún)過(guò)濾 條件查詢(xún)過(guò)濾關(guān)鍵字:AND、OR、IN、NOT IN、IS NULL、IS NOT NULL、BETWEEN AND;按關(guān)鍵字可以進(jìn)行條件查詢(xún)過(guò)濾。 (4)NOT IN(不在范圍內(nèi)):用NOT IN進(jìn)行查詢(xún)的時(shí)候,查詢(xún)出來(lái)的數(shù)據(jù)不在這個(gè)范圍內(nèi); SELECT * FROM user WHERE id not in(3,5,7); (5)IS(為空):用IS NULL進(jìn)行查詢(xún)的時(shí)候,是用來(lái)查詢(xún)某字段為空時(shí)用

4、is null,而不能使用=null,因?yàn)閙ysql中的null不等于任何其他值,也不等于另外一個(gè)null,優(yōu)化器會(huì)把=null的查詢(xún)過(guò)濾掉而不返回任何數(shù)據(jù);查詢(xún)某字段為非空時(shí)使用is not null。 SELECT * FROM user WHERE name is null; (6)BETWEEN AND(在.區(qū)間):用BETWEEN AND進(jìn)行查詢(xún)的時(shí)候,查詢(xún)出來(lái)的數(shù)據(jù)是在這個(gè)區(qū)間; SELECT * FROM user WHERE age between 10 and 20;4.2 數(shù)據(jù)過(guò)濾第4章 MySQL查詢(xún)MySQL程序設(shè)計(jì) 模糊查詢(xún)過(guò)濾 模糊查詢(xún)過(guò)濾使用關(guān)鍵字LIKE進(jìn)行查詢(xún)

5、; (1)LIKE 張%:使用LIKE查詢(xún)?cè)撟侄我詮堥_(kāi)頭的數(shù)據(jù); SELECT * FROM user WHERE name like 張%; (2)LIKE %明:使用LIKE查詢(xún)?cè)撟侄我悦鹘Y(jié)尾的數(shù)據(jù); SELECT * FROM user WHERE name like %明; (3)LIKE %明%:使用LIKE查詢(xún)?cè)撟侄伟鞯臄?shù)據(jù); SELECT * FROM user WHERE name like %明%;4.2 數(shù)據(jù)過(guò)濾第4章 MySQL查詢(xún)MySQL程序設(shè)計(jì) 字段控制查詢(xún)過(guò)濾 字段控制查詢(xún)過(guò)濾可以使用DISTINCT去除重復(fù)過(guò)濾、AS設(shè)置別名。 (1)DISTINCT:去除重

6、復(fù)的列值; SELECT distinct age FROM user; (2)AS:可以設(shè)置列的別名、也可以省略AS來(lái)設(shè)置關(guān)鍵字; SELECT name as 姓名 FROM user; 或者 SELECT name 姓名 FROM user;4.2 數(shù)據(jù)過(guò)濾第4章 MySQL查詢(xún)MySQL程序設(shè)計(jì) 正則表達(dá)式查詢(xún)過(guò)濾4.2 數(shù)據(jù)過(guò)濾第4章 MySQL查詢(xún)MySQL程序設(shè)計(jì) 什么是子查詢(xún) 子查詢(xún)是一個(gè)父表達(dá)式調(diào)用另一個(gè)子表達(dá)式結(jié)果的查詢(xún)操作,子表達(dá)式結(jié)果傳遞給父表達(dá)式繼續(xù)處理,子查詢(xún)也被稱(chēng)作內(nèi)嵌查詢(xún)或者內(nèi)部查詢(xún)。4.3 子查詢(xún)第4章 MySQL查詢(xún)MySQL程序設(shè)計(jì) 按返回結(jié)果角度子查詢(xún)分

7、類(lèi) 分為4種:表子查詢(xún)、行子查詢(xún)、列子查詢(xún)、標(biāo)量子查詢(xún); (1)表子查詢(xún):返回的結(jié)果集是由多行(至少一行)數(shù)據(jù)組成,作為表子查詢(xún)要設(shè)置表的別名,常用于父查詢(xún)的FROM子句中; (2)行子查詢(xún):返回結(jié)果集是一行數(shù)據(jù)組成,一行數(shù)據(jù)庫(kù)里可以包含多列數(shù)據(jù),常用于父查詢(xún)的FROM子句中或者WHERE子句中; (3)列子查詢(xún):返回的結(jié)果集是由多行一列數(shù)據(jù)組成,可以使用 in、any和all操作符; (4)標(biāo)量子查詢(xún):返回的結(jié)果集是一個(gè)標(biāo)量集合,一行一列,也就是一個(gè)標(biāo)量值;每個(gè)標(biāo)量子查詢(xún)也是一個(gè)行子查詢(xún)和一個(gè)列子查詢(xún),反之則不是;每個(gè)行子查詢(xún)和列子查詢(xún)也是一個(gè)表子查詢(xún),反之也不是;4.3 子查詢(xún)第4章 My

8、SQL查詢(xún)MySQL程序設(shè)計(jì) 按返回結(jié)果調(diào)用方法角度子查詢(xún)分類(lèi) 分為3種:WHERE型子查詢(xún)、FROM型子查詢(xún)、exists型子查詢(xún); (1)WHERE型子查詢(xún):把內(nèi)層查詢(xún)的結(jié)果作為外層查詢(xún)的條件; (2)FROM型子查詢(xún):返回的結(jié)果集作為一個(gè)臨時(shí)表,臨時(shí)表要設(shè)置別名,然后從臨時(shí)表進(jìn)行查詢(xún); (3)exists型子查詢(xún):把外層查詢(xún)結(jié)果拿到內(nèi)層,看內(nèi)層的查詢(xún)是否成立,使用exists關(guān)鍵字時(shí),內(nèi)層查詢(xún)語(yǔ)句不返回查詢(xún)的記錄,而是返回一個(gè)真假值,如果內(nèi)層查詢(xún)語(yǔ)句查詢(xún)到滿(mǎn)足條件的記錄,只要子查詢(xún)中至少返回一個(gè)值,則exists語(yǔ)句的值就為true。就返回true,否則返回false。當(dāng)返回的值為tru

9、e時(shí),外層查詢(xún)語(yǔ)句將進(jìn)行查詢(xún),否則不進(jìn)行查詢(xún)。not exists剛好與之相反;4.3 子查詢(xún)第4章 MySQL查詢(xún)MySQL程序設(shè)計(jì) AVG()函數(shù) MySQL數(shù)據(jù)庫(kù)的AVG函數(shù)是用來(lái)計(jì)算某一列的平均值,比如可以用在平均分?jǐn)?shù)、平均薪資、平均年齡等等場(chǎng)景的使用。 SELECT avg(age) FROM user;4.4 聚合函數(shù)第4章 MySQL查詢(xún)MySQL程序設(shè)計(jì) COUNT()函數(shù) MySQL數(shù)據(jù)庫(kù)的COUNT()聚合函數(shù)是用來(lái)計(jì)算表中記錄的個(gè)數(shù)或者列中值的個(gè)數(shù),計(jì)算內(nèi)容由SELECT語(yǔ)句指定,例如要獲取user表中age 20 的個(gè)數(shù)。 SELECT count(*) FROM us

10、er WHERE age 20;4.4 聚合函數(shù)第4章 MySQL查詢(xún)MySQL程序設(shè)計(jì) MAX()/MIN()函數(shù) MySQL數(shù)據(jù)庫(kù)的MAX()聚合函數(shù)選取的數(shù)據(jù)中最大值,MIN()聚合函數(shù)選取的數(shù)據(jù)中最小值,比如可以獲取年齡的最大值或者最小值。 SELECT max(age) FROM user ; SELECT min(age) FROM user;4.4 聚合函數(shù)第4章 MySQL查詢(xún)MySQL程序設(shè)計(jì) SUM()函數(shù) MySQL數(shù)據(jù)庫(kù)的SUM()聚合函數(shù)用來(lái)計(jì)算滿(mǎn)足條件的某一列的總和,比如可以計(jì)算年齡的總和,或者可以計(jì)算男生年齡的總和,聚合函數(shù)都是可以進(jìn)行設(shè)置別名的。 SELECT

11、sum(age) FROM user ;4.4 聚合函數(shù)第4章 MySQL查詢(xún)MySQL程序設(shè)計(jì) 內(nèi)連接查詢(xún) 內(nèi)連接查詢(xún)分為等值連接查詢(xún)和非等值連接查詢(xún),它是使用關(guān)鍵字inner JOIN ON,inner關(guān)鍵字可以省略,它是從左表中取出每一條記錄,去與右表中所有的記錄進(jìn)行匹配,匹配成功后才會(huì)保留結(jié)果,否則不保留; SELECT * FROM 左表 INNER JOIN 右表 ON 左表.字段 = 右表.字段;4.5 高級(jí)查詢(xún)第4章 MySQL查詢(xún)MySQL程序設(shè)計(jì) 外連接查詢(xún) 外連接查詢(xún)分為左外連接查詢(xún)、右外連接查詢(xún),外連接查詢(xún)是以一張表為基礎(chǔ),取出里面的所有記錄,然后每條與另外一張表進(jìn)行連

12、接,不管能不能匹配上條件,最終都會(huì)保留,能匹配,正確保留,不能匹配其他表的字段都置空null,它是使用關(guān)鍵字outer JOIN ON進(jìn)行連接查詢(xún)。 SELECT * FROM 左表 LEFT/RIGHT JOIN 右表 ON 左表.字段 = 右表.字段;4.5 高級(jí)查詢(xún)第4章 MySQL查詢(xún)MySQL程序設(shè)計(jì) 自然連接查詢(xún) 自然連接查詢(xún)是在連接的兩個(gè)表中的列名稱(chēng)相等的時(shí)候才能使用,MySQL以同名字段作為字段進(jìn)行匹配,它使用關(guān)鍵字natural JOIN來(lái)進(jìn)行自然連接,這種連接很少使用,自然連接又可以分為自然內(nèi)連接和自然外連接。 SELECT * FROM左表 LEFT/ RIGHT INN

13、ER JOIN 右表 ON using(字段名) 自然內(nèi)連接示例:SELECT * FROM user NATURAL JOIN score; 自然左外連接示例:SELECT * FROM user NATURAL LEFT JOIN score; 自然右外連接示例:SELECT * FROM user NATURAL RIGHT JOIN score; 外連接模擬自然左外連接示例:SELECT * FROM user LEFT JOIN score using(id);4.5 高級(jí)查詢(xún)第4章 MySQL查詢(xún)MySQL程序設(shè)計(jì) 交叉連接查詢(xún) 交叉連接查詢(xún)是從一張表中循環(huán)取出每一條記錄, 然后每

14、條記錄都去另外一張表進(jìn)行匹配,匹配的結(jié)果都保留, 而連接本身字段就會(huì)增加,最終形成的結(jié)果叫做笛卡爾積,它是使用關(guān)鍵字CROSS JOIN來(lái)進(jìn)行交叉連接查詢(xún),很少會(huì)使用這個(gè)交叉連接查詢(xún)。 SELECT * 左表 CROSS JOIN 右表 或 FROM 左表,右表;4.5 高級(jí)查詢(xún)第4章 MySQL查詢(xún)MySQL程序設(shè)計(jì) 聯(lián)合查詢(xún) 聯(lián)合查詢(xún)是將多次查詢(xún)結(jié)果合并起來(lái)進(jìn)行拼接,字段不會(huì)增加,要求兩次查詢(xún)的列數(shù)必須一致,列的類(lèi)型可以不一樣,多次sql語(yǔ)句取出的列名可以不一致,此時(shí)以第一個(gè)sql語(yǔ)句的列名為準(zhǔn);使用關(guān)鍵字UNION進(jìn)行聯(lián)合查詢(xún),會(huì)去掉重復(fù)的行,使用關(guān)鍵字UNION all進(jìn)行聯(lián)合查詢(xún),不會(huì)去掉重復(fù)的行;ORDEY BY不能直接使用,需要對(duì)查詢(xún)語(yǔ)句使用括號(hào)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論