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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

5、; (1)LIKE 張%:使用LIKE查詢該字段以張開頭的數(shù)據; SELECT * FROM user WHERE name like 張%; (2)LIKE %明:使用LIKE查詢該字段以明結尾的數(shù)據; SELECT * FROM user WHERE name like %明; (3)LIKE %明%:使用LIKE查詢該字段包含明的數(shù)據; SELECT * FROM user WHERE name like %明%;4.2 數(shù)據過濾第4章 MySQL查詢MySQL程序設計 字段控制查詢過濾 字段控制查詢過濾可以使用DISTINCT去除重復過濾、AS設置別名。 (1)DISTINCT:去除重

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

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

8、SQL查詢MySQL程序設計 按返回結果調用方法角度子查詢分類 分為3種:WHERE型子查詢、FROM型子查詢、exists型子查詢; (1)WHERE型子查詢:把內層查詢的結果作為外層查詢的條件; (2)FROM型子查詢:返回的結果集作為一個臨時表,臨時表要設置別名,然后從臨時表進行查詢; (3)exists型子查詢:把外層查詢結果拿到內層,看內層的查詢是否成立,使用exists關鍵字時,內層查詢語句不返回查詢的記錄,而是返回一個真假值,如果內層查詢語句查詢到滿足條件的記錄,只要子查詢中至少返回一個值,則exists語句的值就為true。就返回true,否則返回false。當返回的值為tru

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

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

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

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

13、ER JOIN 右表 ON using(字段名) 自然內連接示例: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 高級查詢第4章 MySQL查詢MySQL程序設計 交叉連接查詢 交叉連接查詢是從一張表中循環(huán)取出每一條記錄, 然后每

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

溫馨提示

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

評論

0/150

提交評論