欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

DQL命令查詢數(shù)據(jù)實現(xiàn)方法詳解

 更新時間:2022年09月23日 09:10:37   作者:方片6  
DQL(Data?Query?Language,數(shù)據(jù)查詢語言),查詢數(shù)據(jù)庫數(shù)據(jù),如SELECT語句,簡單的單表查詢或多表的復(fù)雜查詢和嵌套查詢,數(shù)據(jù)庫語言中最核心、最重要的語句,使用頻率最高的語句

一、SELECT語法-排序

SELECT   [ALL | DISTINCT] 
{  * |  table.* | [ table.field1 [ as  alias1] [, table.field2 [as  alias2]][, …]] }
FROM  table_name  [ as  table_ alias  ]
	[ left|out|inner  join  table_name2 ]    //多表連接查詢
    [ WHERE  … ]   	//指定結(jié)果需滿足的條件
    [ GROUP BY …]	//指定結(jié)果按照哪幾個字段來分組
    [ HAVING …]	//過濾分組的記錄必須滿足的次要條件
    [ ORDER BY… ]	//指定查詢記錄按一個或者多個條件排序
	[ LIMIT  {   [ offset,] row_count    |   row_count OFFSET offset   }] ;  //分頁查詢

排序可以是升序(ASC)或者降序(DESC),如果不指定ASC或DESC,結(jié)果集默認(rèn)按ASC升序排序:

如以下

//把成績都降低10%后加5分,再查詢及格成績,并按照成績從高到低排序。
SELECT studentno AS 學(xué)生編號,(studentresult*0.9+5 ) AS 綜合成績
FROM `result`
WHERE (`studentresult`*0.9+5) >=60
ORDER BY studentresult DESC;
//把成績都降低10%后加5分,再查詢及格成績,并按照成績從高到低排序,如果成績
//相同,再按照課程編號進(jìn)行排序。
SELECT studentno AS 學(xué)生編號,(studentresult*0.9+5 ) AS 綜合成績
FROM `result`
WHERE (`studentresult`*0.9+5) >=60
ORDER BY studentresult DESC,subjectno;

二、SELECT語法-分頁查詢

SELECT   [ALL | DISTINCT] 
{  * |  table.* | [ table.field1 [ as  alias1] [, table.field2 [as  alias2]][, …]] }
FROM  table_name  [ as  table_ alias  ]
	[ left|out|inner  join  table_name2 ]    //多表連接查詢
    [ WHERE  … ]   	//指定結(jié)果需滿足的條件
    [ GROUP BY …]	//指定結(jié)果按照哪幾個字段來分組
    [ HAVING …]	//過濾分組的記錄必須滿足的次要條件
    [ ORDER BY… ]	//指定查詢記錄按一個或者多個條件排序
    [ LIMIT  {   [ offset,] row_count    |   row_count OFFSET offset   }] ;  //分頁查詢
	offset://偏移量 
	row_count://顯示的記錄數(shù)
	LIMIT //LIMIT 子句:MySQL查詢語句中使用LIMIT子句限制結(jié)果集
	如:SELECT studentno,studentresult 
		FROM result
		WHERE subjectno=1 AND YEAR(examdate)=2019
		ORDER BY studentresult DESC
		LIMIT 5 //限制顯示的結(jié)果集的行數(shù),只顯示5條

三、SELECT語法-分組查詢

SELECT   [ALL | DISTINCT] 
{  * |  table.* | [ table.field1 [ as  alias1] [, table.field2 [as  alias2]][, …]] }
FROM  table_name  [ as  table_ alias  ]
    [ left|out|inner  join  table_name2 ]    //多表連接查詢
    [ WHERE  … ]   	//指定結(jié)果需滿足的條件
    [ GROUP BY …]	//指定結(jié)果按照哪幾個字段來分組
    [ HAVING …]	//過濾分組的記錄必須滿足的次要條件
    [ ORDER BY… ]	//指定查詢記錄按一個或者多個條件排序
    [ LIMIT  {   [ offset,] row_count    |   row_count OFFSET offset   }] ;  //分頁查詢
GROUP BY作用:使用GROUP BY關(guān)鍵字對查詢結(jié)果分組
	對所有的數(shù)據(jù)進(jìn)行分組統(tǒng)計
	分組的依據(jù)字段可以有多個,并依次分組
	與HAVING結(jié)合使用,進(jìn)行分組后的數(shù)據(jù)篩選
GROUP BY子句經(jīng)常和聚合函數(shù)結(jié)合使用完成分組統(tǒng)計功能

四、WHERE與HAVING對比

WHERE子句

用來篩選 FROM 子句中指定的操作所產(chǎn)生的行

GROUP BY子句

用來分組 WHERE 子句的輸出

HAVING子句

用來從分組的結(jié)果中篩選行

五、子查詢

基本語法:

SELECT … FROM 表名 WHERE 字段X 比較運算符(子查詢)

1.外層查詢稱為父查詢,圓括號中的查詢稱為子查詢。

2.執(zhí)行SQL語句時,先執(zhí)行子查詢,返回所有來自子查詢的結(jié)果,再執(zhí)行外圍的父查詢,返回查詢的最終結(jié)果。

3.將子查詢和比較運算符聯(lián)合使用,必須保證子查詢返回的值不能多于一個。

1、IN子查詢

IN后面的子查詢可以返回多條記錄。

SELECT … FROM 表名 WHERE 字段X IN(子查詢)

2、EXISTS子查詢

EXISTS 子查詢:帶有EXISTS的子查詢不返回任何記錄的數(shù)據(jù),只返回邏輯值“True”或“False”。

有結(jié)果為“True”,執(zhí)行語句;無結(jié)果為“False”,不執(zhí)行語句。

子查詢有返回結(jié)果: EXISTS子查詢結(jié)果為TRUE,執(zhí)行外層查詢;

子查詢無返回結(jié)果: EXISTS子查詢結(jié)果為FALSE, 外層查詢不執(zhí)行;

SELECT …… FROM 表名 WHERE EXISTS(子查詢);

六、多表連接查詢

1、內(nèi)連接

內(nèi)連接使用比較運算符根據(jù)每個表的通用列中的值匹配兩個表中的行。

SELECT   字段列表   FROM   表1  INNER JOIN  表2 ON    表1.通用字段名=表2.通用字段名
SELECT   字段列表 FROM   表1 ,表2 WHERE    表1.通用字段名=表2.通用字段名

需要注意的是:

如果兩個表中有相同的字段名,必須在列名前加表名。否則將出現(xiàn) 錯誤代碼:1052 Column ‘studentno’ in field

list is ambiguous

查詢學(xué)生的學(xué)號、姓名和成績,并按照成績降序排列
//第一種寫法
SELECT s.studentno,s.studentname,r.studentresult FROM 
student AS s INNER JOIN  result AS r
ON s.studentno=r.studentno ORDER BY r.studentresult DESC
//第二種寫法
SELECT s.studentno,s.studentname,r.studentresult FROM 
student AS s,result AS r
WHERE s.studentno=r.studentno
ORDER BY r.studentresult DESC

2、多表內(nèi)連接

ELECT   字段列表 FROM   表1 join 表2 on 表1.通用字段名=表2.通用字段名 
join 表3 on 表1.通用字段名=表3.通用字段名
join 表4 on 表4.通用字段名=表3.通用字段名;

3、左外連接

左表(表1)的記錄將會全部表示出來,而右表(表2)只會顯示符合匹配條件的記錄。如圖:

匹配,返回到結(jié)果集

無匹配,NULL值返回到結(jié)果集

SELECT 字段列表 FROM 表1 LEFT JOIN 表2 ON 表1.通用字段名=表2.通用字段名

4、右外連接

右外連接:右表(表2)的記錄將會全部表示出來,而左表(表1)只會顯示符合匹配條件的記錄。如圖:

匹配,返回到結(jié)果集

無匹配,NULL值返回到結(jié)果集

SELECT 字段列表 FROM 表1 RIGHT JOIN 表2 ON 表1.通用字段名=表2.通用字段名

5、自連接

自連接查詢其實等同于連接查詢,需要兩張表,只不過它的左表(父表)和右表(子表)都是自己。做自連接查詢的時候,是自己和自己連接,分別給父表和子表取兩個不同的別名,然后附上連接條件。

SELECT  c1.cname AS "父名稱",c2.cname AS  "子名稱" 
FROM tbl_category AS c1, tbl_category  AS c2 
WHERE c1.cid = c2.pid; 

6、不同的SQL JOIN對比

如圖片:

到此這篇關(guān)于DQL命令查詢數(shù)據(jù)實現(xiàn)方法詳解的文章就介紹到這了,更多相關(guān)DQL命令查詢內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深入理解mysql的自連接和join關(guān)聯(lián)

    深入理解mysql的自連接和join關(guān)聯(lián)

    這篇文章主要給大家介紹了關(guān)于mysql的自連接和join關(guān)聯(lián)的相關(guān)資料,文中介紹的非常詳細(xì),相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-04-04
  • Mysql數(shù)據(jù)類型與CRUD操作詳細(xì)講解

    Mysql數(shù)據(jù)類型與CRUD操作詳細(xì)講解

    這篇文章主要介紹了Mysql數(shù)據(jù)類型與CRUD操作,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-10-10
  • mysql報錯:Deadlock found when trying to get lock; try restarting transaction的解決方法

    mysql報錯:Deadlock found when trying to get lock; try restarti

    這篇文章主要給大家介紹了關(guān)于mysql出現(xiàn)報錯:Deadlock found when trying to get lock; try restarting transaction的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-07-07
  • mysql5.6批量設(shè)置表ROW_FORMAT =DYNAMIC問題

    mysql5.6批量設(shè)置表ROW_FORMAT =DYNAMIC問題

    這篇文章主要介紹了mysql5.6批量設(shè)置表ROW_FORMAT =DYNAMIC問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 可以改善mysql性能的InnoDB配置參數(shù)

    可以改善mysql性能的InnoDB配置參數(shù)

    MySQL與MSSQL 有一個區(qū)別在于MySQL建表的時候需要選擇存儲引擎,常用的存儲引擎有MyISAM和InnoDB
    2011-05-05
  • MySQL如何利用存儲過程快速生成100萬條數(shù)據(jù)詳解

    MySQL如何利用存儲過程快速生成100萬條數(shù)據(jù)詳解

    在MySQL數(shù)據(jù)庫中,如果要插入上百萬級的記錄,用普通的insertinto來操作非常不現(xiàn)實,速度慢人力成本高,這篇文章主要給大家介紹了關(guān)于MySQL如何利用存儲過程快速生成100萬條數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • Mysql中創(chuàng)建高性能索引詳解

    Mysql中創(chuàng)建高性能索引詳解

    這篇文章主要介紹了Mysql中創(chuàng)建高性能索引詳解,索引相信大家都聽說過,但是真正會用的又有幾人,平時工作中寫SQL真的會考慮到這條SQL如何能夠用上索引,如何能夠提升執(zhí)行效率,文本就來詳細(xì)解讀如何創(chuàng)建高性能索引,需要的朋友可以參考下
    2023-07-07
  • insert into … on duplicate key update / replace into 多行數(shù)據(jù)介紹

    insert into … on duplicate key update / replace into 多行數(shù)據(jù)介紹

    當(dāng)我插入一條數(shù)據(jù)時,我要判斷(k1,k2)是否已經(jīng)存在(1條selete),若存在就update,不存在就insert
    2013-08-08
  • Windows平臺下MySQL安裝與配置方法與注意事項

    Windows平臺下MySQL安裝與配置方法與注意事項

    這篇文章主要介紹了Windows平臺下MySQL安裝與配置方法與注意事項,需要的朋友可以參考下
    2017-04-04
  • MySQL9.0新特性向量存儲的使用

    MySQL9.0新特性向量存儲的使用

    MySQL 9.0 正式版已經(jīng)發(fā)布,其中一個亮點就是向量(VECTOR)數(shù)據(jù)類型的支持,本文主要介紹了MySQL9.0新特性向量存儲的使用,感興趣的可以了解一下
    2024-08-08

最新評論