檢查syntaxfromsql()函數(shù),可以通過自己的sql語(yǔ)句字符串生成DW語(yǔ)法,然后
在選擇查詢中,select子句是投影操作,
Select是SQL數(shù)據(jù)操作語(yǔ)言(DML)中的一條指令,用于查詢表中的字段數(shù)據(jù)。它可以與條件子句(如where)或有序子句(如order)一起使用,以獲得查詢結(jié)果。
SELECT語(yǔ)句內(nèi)部組件的理論計(jì)算順序是:
表聯(lián)接自;
笛卡爾乘積
連接條件過濾(內(nèi)部連接完成)
添加外部連接的行
WHERE子句篩選出滿足條件的行集;
GROUPBY子句對(duì)行集中的行進(jìn)行分組和合并,以便多行對(duì)應(yīng)于結(jié)果集中的一行;
應(yīng)用HAVING子句從中間結(jié)果中過濾出滿足條件的行集;
SELECT的結(jié)果列中的表達(dá)式,后跟DISTINCT關(guān)鍵字處理(如果有)。因此,WHERE子句、GROUPBY子句或HAVING無法看到和使用在SELECT中為結(jié)果集中的列分配別名。
應(yīng)用ORDERBY子句對(duì)結(jié)果集中的行進(jìn)行排序。
如果有TOP或OFFSET/FETCH,則選擇結(jié)果行。
交叉連接交叉連接。是一種沒有任何限制的連接方法,結(jié)果是笛卡爾積。SQL語(yǔ)法如下所示:
上述SQL相當(dāng)于:
內(nèi)部聯(lián)接(默認(rèn)為聯(lián)接)內(nèi)部聯(lián)接。當(dāng)表中至少有一個(gè)匹配項(xiàng)時(shí)返回行可以理解為同時(shí)滿足某些條件的兩個(gè)表中的行的組合。內(nèi)連接又分為等連接、不等連接和自連接。SQL語(yǔ)法如下所示:
使用作為連接條件。
不平等連接:不用作連接條件。
自連接:自己連接自己,也就是只連接一個(gè)表。
左連接左連接。一種外部聯(lián)接,返回左表(table1)中的所有行。即使右表(table2)中沒有匹配項(xiàng),如果右表中沒有匹配項(xiàng),結(jié)果也是NULL。SQL語(yǔ)法如下所示:
右連接右連接。一種外部聯(lián)接,返回右表(table2)中的所有行。即使左表(table1)中沒有匹配,如果左表中沒有匹配,結(jié)果也是NULL。SQL語(yǔ)法如下所示:
完全連接。一種外部聯(lián)接類型,只要左表(table1)。如果右表和左表(table2)中有一個(gè)匹配,則返回一行,該行收集左連接和右連接的結(jié)果。SQL語(yǔ)法如下所示:
其中,MySQL不支持全聯(lián)接,全聯(lián)接的查詢可以通過左聯(lián)接、并聯(lián)接和右聯(lián)接相結(jié)合來實(shí)現(xiàn)。示例:
聯(lián)合聯(lián)合查詢(去重)。用于合并兩個(gè)或多個(gè)SELECT語(yǔ)句的結(jié)果集。UNION中的每個(gè)SELECT語(yǔ)句必須具有相同順序的相同數(shù)量的列,并且這些列還必須具有相似的數(shù)據(jù)類型。SQL語(yǔ)法如下所示:
注意:聯(lián)合查詢的結(jié)果中沒有重復(fù)的值。UNIONALLunion查詢(無重復(fù))。用于合并兩個(gè)或多個(gè)SELECT語(yǔ)句的結(jié)果集。UNION結(jié)果集中的列名始終等于UNION中第一個(gè)SELECT語(yǔ)句中的列名。SQL語(yǔ)法如下所示:
或者:
注意:
UNIONALL查詢的結(jié)果中允許有重復(fù)值。
使用UNION或UNIONALL時(shí),只能在最后一個(gè)SELECT語(yǔ)句中使用ORDERBY命令。