mysql 排版 指令_Mysql语句排版
SQL 高效排版指北
統(tǒng)一 SQL 排版的相關(guān)用法,極大提高編寫和維護(hù) SQL 的效率。
注: column = 選取的字段;table = 選取的表名
語句結(jié)構(gòu)
錯(cuò)誤
SELECT column1 FROM table1 ORDER BY column1
正確
SELECT
column1
FROM
table1
ORDER BY
column1
解析
SQL 語句在內(nèi)部執(zhí)行時(shí)會(huì)解析成樹狀展開的結(jié)構(gòu),SELECT,FROM,WHERE 等關(guān)鍵字定義了結(jié)構(gòu)體,這些關(guān)鍵詞統(tǒng)一使用大寫并配合縮進(jìn)來直觀的區(qū)分內(nèi)容和結(jié)構(gòu)。
判斷條件
錯(cuò)誤
SELECT column1 FROM table1 WHERE column1=1 AND column2 = 2
正確
SELECT
column1
FROM
table1
WHERE
column1 = 1
AND column2 = 2
解析
同一級(jí)別的語句塊保持相等距離的縮進(jìn),AND 放置在條件前面。
子查詢
錯(cuò)誤
SELECT L.column1 FROM (SELECT column1 FROM table1 ) as L
正確
SELECT
L.column1
FROM
(
SELECT
column1
FROM
table1
) as L
解析
子查詢會(huì)成為一個(gè)完整的表嵌入到上層的結(jié)構(gòu)中,子查詢的內(nèi)部又是一個(gè)完整的結(jié)構(gòu)體,當(dāng)然也要使用縮進(jìn)來定義結(jié)構(gòu),并且整體要往后縮進(jìn)一個(gè)層次,與上層結(jié)構(gòu)配合。
連接
錯(cuò)誤
SELECT table1.column1,table2.column2 FROM table1 LEFT JOIN table2 ON table1.column1 = table2.column1
正確
SELECT
table1.column1
,table2.column2
FROM
table1
LEFT JOIN
table2
ON
table1.column1 = table2.column1
解析
JOIN 后兩張表會(huì)形成一張新的大表,該大表需要保持縮進(jìn)來嵌入到上層,同時(shí)內(nèi)部的兩種表也要通過縮進(jìn)維持結(jié)構(gòu)。
逗號(hào)
錯(cuò)誤
SELECT column1,column2,column3 FROM table1
正確
SELECT
column1
,column2
,column3
FROM
table1
解析
讀者剛開始將逗號(hào)前置可能會(huì)不太習(xí)慣,但這樣做會(huì)顯著的帶來兩個(gè)好處,第一:長(zhǎng)的SQL語句往往選取的字段長(zhǎng)短不一,若將逗號(hào)放在后面,當(dāng)缺失逗號(hào)時(shí)很難發(fā)現(xiàn),放在前面就很容易排查,第二:調(diào)試 SQL 語句時(shí),注釋掉最后一個(gè)字段,也可以直接運(yùn)行,減少調(diào)試時(shí)間。
長(zhǎng)函數(shù)
錯(cuò)誤
SELECT concat(column1,column2,column3) FROM table1
正確
SELECT
concat( column1
,column2
,column3)
FROM
table1
解析
當(dāng)長(zhǎng)的函數(shù)十分復(fù)雜時(shí),若沒有清晰的結(jié)構(gòu),很容易寫完就忘。函數(shù)與函數(shù)參數(shù)也是呈子母對(duì)的性質(zhì),那么它們也就具有樹狀的表達(dá)結(jié)構(gòu),通過縮進(jìn)形式也可以展現(xiàn)出這種樹狀結(jié)構(gòu)。
舉個(gè)栗子
錯(cuò)誤
SELECT L.column1,R.column2,concat(L.column1,R.column2) FROM (SELECT column1 ,column3FROM table1) AS L LEFT JOIN
(SELECT column2,column3FROM table2) AS R ON L.column3 = R.column3 WHERE L.column1 = 1 AND R.column1 = 2 GROUP
BY L.column1,R.column2 ORDER BY L.column1,R.column2
正確
SELECT
L.column1
,R.column2
,concat(L.column1
,R.column2)
FROM
(
SELECT
column1
,column3
FROM
table1
) AS L
LEFT JOIN
(
SELECT
column2
,column3
FROM
table2
) AS R
ON
L.column3 = R.column3
WHERE
L.column1 = 1
AND R.column1 = 2
GROUP BY
L.column1
,R.column2
ORDER BY
L.column1
,R.column2
解析
再復(fù)雜的語句也可以通過這樣的方式拆分以增加可讀性,在后期調(diào)試時(shí)也十分方便。
結(jié)語
知行合一:這個(gè)方法可以加深讀者對(duì) SQL 的理解,在練習(xí)的過程中仔細(xì)體會(huì)這種語法的樹狀結(jié)構(gòu),假以時(shí)日就可以掌握。
怎么學(xué)習(xí)函數(shù):各種函數(shù)看似紛繁多樣,其實(shí)基礎(chǔ)結(jié)構(gòu)十分簡(jiǎn)單,所有的函數(shù)都是圍繞數(shù)字,文本,日期這三種數(shù)據(jù)類型,再輔以一些結(jié)構(gòu)和增刪查改的過程來展開。運(yùn)用函數(shù)的過程就是邏輯上對(duì)這三種類型進(jìn)行運(yùn)算,再通過邏輯去搜索函數(shù),最后組合起來達(dá)到想要目的的過程。so,學(xué)習(xí)函數(shù)就是掌握(數(shù)字,文本,日期)*增刪查改 ,這一表達(dá)式的過程。
如何融會(huì)貫通:隨著練習(xí)的深入,讀者可以感受到寫 SQL 就像折紙一樣,它們面向的對(duì)象都是矩陣,而所有的數(shù)據(jù)產(chǎn)品:Excel,Hive,Tableau等等都是在處理矩陣對(duì)象,只是表達(dá)方式和面對(duì)的場(chǎng)景不同才有所差異,本質(zhì)上殊途同歸。當(dāng)讀者對(duì)矩陣概念有比較清晰的概念時(shí)就可以達(dá)到一通百通的層次。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的mysql 排版 指令_Mysql语句排版的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 钻石2 D2 让你的diamond2待机
- 下一篇: mysql dump 1449_跨版本m