日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
MySQL之SQL語(yǔ)法及SQL解析順序源碼分析

這篇“MySQL之SQL語(yǔ)法及SQL解析順序源碼分析”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來(lái)看看這篇“MySQL之SQL語(yǔ)法及SQL解析順序源碼分析”文章吧。

公司主營(yíng)業(yè)務(wù):成都網(wǎng)站制作、成都做網(wǎng)站、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。創(chuàng)新互聯(lián)公司推出沾益免費(fèi)做網(wǎng)站回饋大家。

SQL(Structured Query Language)是一種標(biāo)準(zhǔn),作為一種訪問(wèn)【關(guān)系型數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言】。許多數(shù)據(jù)庫(kù)產(chǎn)品,如Oracle,DB2,SQL Server,PostgreSQL,MySQL都支持它。近幾年的NOSQL最初是宣稱不再需要SQL,后來(lái)也不得不修正為Not Only SQL,來(lái)?yè)肀QL。

目前比較典型的版本是 SQL 92標(biāo)準(zhǔn)。包括MySql在內(nèi)的其他數(shù)據(jù)庫(kù),在SQL 92 或 SQL 99這些標(biāo)準(zhǔn)基礎(chǔ)之上,還擴(kuò)展了一些自己的SQL語(yǔ)句,如 MySQL中的limit關(guān)鍵字。

SQL語(yǔ)言分類

  • DDL

    數(shù)據(jù)定義語(yǔ)言,用來(lái)定義數(shù)據(jù)庫(kù)對(duì)象,數(shù)據(jù)庫(kù),表,列等。如create,alter,drop等

  • DML

    數(shù)據(jù)操作語(yǔ)言,用來(lái)對(duì)數(shù)據(jù)庫(kù)中的表的記錄進(jìn)行更新。如insert,update,delete等

  • DCL

    數(shù)據(jù)控制語(yǔ)言,用來(lái)定義數(shù)據(jù)庫(kù)的訪問(wèn)權(quán)限,安全級(jí)別等。如grant等

  • DQL:

    數(shù)據(jù)查詢語(yǔ)言,用來(lái)查詢。如select,from,where等

 SQL語(yǔ)法順序和解析順序

# 語(yǔ)法順序
SELECT DISTINCT
	
FROM
	 
JOIN  ON 
WHERE
	
GROUP BY
	
HAVING
	
ORDER BY
	
LIMIT 

# 解析順序
FROM 
ON 
 JOIN   -- 這一步和上一步,會(huì)循環(huán)執(zhí)行
WHERE  -- 這一步會(huì)循環(huán)執(zhí)行,多個(gè)條件從左往右
GROUP BY 
HAVING 
SELECT   -- 分組之后才執(zhí)行SELECT
DISTINCT 
ORDER BY 
LIMIT  -- 這一步是MySQL獨(dú)有的語(yǔ)法,前面都是SQL92標(biāo)準(zhǔn)

FROM

對(duì)FROM的左表和右表計(jì)算笛卡爾積,產(chǎn)生虛表VT1

select * from seller join product;

MySQL之SQL語(yǔ)法及SQL解析順序源碼分析

ON

產(chǎn)生虛表VT1后,通過(guò)ON關(guān)鍵字進(jìn)行篩選,只有符合條件的才會(huì)被篩選到虛表VT2

select * from seller s join product p on s.id = p.id;

MySQL之SQL語(yǔ)法及SQL解析順序源碼分析

OUTER JOIN

  • LEFT (OUTER) JOIN : 會(huì)返回左表(保留表)中全部記錄以及右表中滿足ON條件的記錄

  • RIGHT (OUTER) JOIN : 同理

  • INNTER JOINT : 只返回左右兩表中滿足ON條件的記錄

 若指定了OUTER JOIN(LEFT JOIN,RIGHT JOIN),那么保留表中未匹配ON條件的行,就會(huì)作為外部行,添加到虛表VT2中,形成虛表VT3。

select * from seller s right join product p on s.id = p.id;

MySQL之SQL語(yǔ)法及SQL解析順序源碼分析

若FROM子句,包含不止2個(gè)表,則會(huì)對(duì)上一個(gè)join連接產(chǎn)生的結(jié)果VT3,和下一個(gè)表重復(fù)執(zhí)行上面的步驟

WHERE

根據(jù)where條件過(guò)濾

GROUP BY

對(duì)結(jié)果進(jìn)行分組

-- mysql 8 默認(rèn)開(kāi)啟了 only_full_group_by
select version(),@@sql_mode;
-- 需要把這個(gè)選項(xiàng)關(guān)掉,
set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
-- 后執(zhí)行g(shù)roup by 正常
select * from user group by name;

MySQL之SQL語(yǔ)法及SQL解析順序源碼分析

HAVING

對(duì)分組的結(jié)果,進(jìn)行having條件過(guò)濾

SELECT

選取指定的列

DISTINCT

針對(duì)某列去重
注意DISTINCT 一定要SELECT的第一列,加在后面無(wú)效

-- 下面無(wú)效
select id, distinct name from user;
-- 下面有效
select distinct name from user;

MySQL之SQL語(yǔ)法及SQL解析順序源碼分析

MySQL之SQL語(yǔ)法及SQL解析順序源碼分析

distinct 后加多列,則是將多列拼接在一起來(lái)去重

MySQL之SQL語(yǔ)法及SQL解析順序源碼分析

若想根據(jù)某一列去重,并顯示出整行的數(shù)據(jù),可以用GROUP BY

ORDER BY

排序

LIMIT

分頁(yè)

注意:對(duì)于select中的列的別名,只有在order by中才能使用,由上面的SQL解析順序可知

MySQL之SQL語(yǔ)法及SQL解析順序源碼分析

以上就是關(guān)于“MySQL之SQL語(yǔ)法及SQL解析順序源碼分析”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


文章名稱:MySQL之SQL語(yǔ)法及SQL解析順序源碼分析
文章來(lái)源:http://www.dlmjj.cn/article/piiejj.html