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

MySQL 語句執(zhí)行順序舉例解析

 更新時間:2022年06月02日 10:59:27   作者:? 三苗同學(xué)?  ?  
這篇文章主要介紹了MySQL 語句執(zhí)行順序舉例解析,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值需要的小伙伴可以參考一下

1、SQL數(shù)據(jù)舉例

舉例:有10個用戶,輸出在訂單表中下單數(shù)最多的5個人的名字。

my_user 表數(shù)據(jù)

my_order數(shù)據(jù)

my_order,uid對應(yīng)my_user表的id:

測試數(shù)據(jù)生成

寫一個存儲過程,隨機插入10000條數(shù)據(jù):

CREATE DEFINER=`root`@`localhost` PROCEDURE `test_loop`( )  
 BEGIN  
 DECLARE  
     i INT DEFAULT 1;  
 WHILE  
     i < 10000 DO  
     INSERT INTO my_order ( oid, uid )  
 VALUES  
     (  
     CONCAT( 'o_', DATE_FORMAT( now( ), '%Y%m%d%h%i%s' ), FLOOR(1000 + RAND( )*(9999-1000) )),  
     FLOOR( 1 + RAND( ) * 10 )   
     );  
 SET i = i + 1;  
 END WHILE;  
 END

查詢語句:

SELECT
	u.id,
	u.`name`,
	count( o.uid ) count_num 
FROM
	my_user u
	JOIN my_order o ON u.id = o.uid 
GROUP BY
	o.uid 
HAVING
	COUNT( o.uid ) 
ORDER BY
	COUNT( o.uid ) DESC 
	LIMIT 5;

查詢結(jié)果(以自己數(shù)據(jù)為準):

統(tǒng)計所有的用戶訂單數(shù):

SELECT
	u.id,
	u.`name`,
	count( o.uid ) count_num 
FROM
	my_user u
	JOIN my_order o ON u.id = o.uid 
GROUP BY
	o.uid 
HAVING
	COUNT( o.uid ) 
ORDER BY
	COUNT( o.uid ) DESC

結(jié)果如下:

該sql 主要考察 group by 和 having 的使用,然后 order by 和 desc 排序。

2、SQL的執(zhí)行順序

  • FORM: 對FROM左邊的表和右邊的表計算笛卡爾積,產(chǎn)生虛表VT1。
  • ON: 對虛表VT1進行ON過濾,只有那些符合的行才會被記錄在虛表VT2中。
  • JOIN: 如果指定了OUTER JOIN(比如left join、 right join),那么保留表中未匹配的行就會作為外部行添加到虛擬表VT2中,產(chǎn)生虛擬表VT3。
  • WHERE: 對虛擬表VT3進行WHERE條件過濾。只有符合的記錄才會被插入到虛擬表VT4中。
  • GROUP BY: 根據(jù)group by子句中的列,對VT4中的記錄進行分組操作,產(chǎn)生VT5。
  • HAVING: 對虛擬表VT5應(yīng)用having過濾,只有符合的記錄才會被 插入到虛擬表VT6中。
  • SELECT: 執(zhí)行select操作,選擇指定的列,插入到虛擬表VT7中。
  • DISTINCT: 對VT7中的記錄進行去重。產(chǎn)生虛擬表VT8.
  • ORDER BY: 將虛擬表VT8中的記錄按照進行排序操作,產(chǎn)生虛擬表VT9.
  • LIMIT:取出指定行的記錄,產(chǎn)生虛擬表VT10, 并將結(jié)果返回。

到此這篇關(guān)于MySQL 語句執(zhí)行順序舉例解析的文章就介紹到這了,更多相關(guān)MySQL 語句執(zhí)行順序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql分析sql是否成功使用索引的步驟詳解

    mysql分析sql是否成功使用索引的步驟詳解

    在MySQL中,可以通過使用EXPLAIN語句來分析SQL查詢是否成功使用了索引,本文給大家介紹了使用EXPLAIN語句分析SQL語句是否成功使用索引的步驟,需要的朋友可以參考下
    2023-12-12
  • mysql #1062 –Duplicate entry ''1'' for key ''PRIMARY''

    mysql #1062 –Duplicate entry ''1'' for key ''PRIMARY''

    Mysql進行數(shù)據(jù)備份,還原后進行回帖,出現(xiàn)以下錯誤代碼,其實主要是導(dǎo)入數(shù)據(jù)重復(fù)的問題,將現(xiàn)在的數(shù)據(jù)表清空,重新導(dǎo)入即可
    2012-07-07
  • mysql 8.0.18 壓縮包安裝及忘記密碼重置所遇到的坑

    mysql 8.0.18 壓縮包安裝及忘記密碼重置所遇到的坑

    這篇文章主要介紹了mysql 8.0.18 壓縮包安裝及忘記密碼重置所遇到的坑,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • ubuntu系統(tǒng)中安裝mysql5.6(通過二進制)

    ubuntu系統(tǒng)中安裝mysql5.6(通過二進制)

    今天工作中需要對一臺ubantu的系統(tǒng)安裝mysql,因為以前一直使用的是centos,雖然它也是類unix但是和redhat或centos命令上還是有點差別。所以通過網(wǎng)上查閱資料,終于安裝成功了,現(xiàn)在將步驟分享給大家,有需要的朋友們可以參考借鑒。
    2016-10-10
  • MySQL如何讓一個表中可以有多個自增列

    MySQL如何讓一個表中可以有多個自增列

    這篇文章主要介紹了MySQL如何讓一個表中可以有多個自增列,自增列可使用?auto_increment?來實現(xiàn),當(dāng)一個列被標識為?auto_increment?之后,在添加時如果不給此列設(shè)置任何值,或給此列設(shè)置?NULL?值時,那么它會使用自增的規(guī)則來填充此列
    2022-06-06
  • Mysql ERROR 1067: Invalid default value for字段問題

    Mysql ERROR 1067: Invalid default v

    這篇文章主要介紹了Mysql ERROR 1067: Invalid default value for字段問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Mysql數(shù)據(jù)庫的一些命令

    Mysql數(shù)據(jù)庫的一些命令

    如果你習(xí)慣用 windows 的數(shù)據(jù)庫,也就是在 圖形界面上操作數(shù)據(jù)庫的話,那么當(dāng)你在命令上 操作 mysql 將會感到陌生,其實只要你掌握了一些基本命令,還有經(jīng)常使用,熟練起來了, 將會相當(dāng)方便,而且很快速
    2013-11-11
  • mysql從一張表查詢批量數(shù)據(jù)并插入到另一表中的完整實例

    mysql從一張表查詢批量數(shù)據(jù)并插入到另一表中的完整實例

    這篇文章主要給大家介紹了關(guān)于mysql從一張表查詢批量數(shù)據(jù)并插入到另一表中的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 詳解MySQL中concat函數(shù)的用法(連接字符串)

    詳解MySQL中concat函數(shù)的用法(連接字符串)

    本篇文章主要介紹了MySQL中concat函數(shù)的用法(連接字符串),在命令行模式下進行測試。具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2016-12-12
  • MySQL密碼忘了怎么辦?MySQL重置root密碼方法

    MySQL密碼忘了怎么辦?MySQL重置root密碼方法

    本文主要介紹Windows和Linux系統(tǒng)下忘記密碼重置root密碼的方法,需要的朋友可以參考下。
    2016-05-05

最新評論