原本這篇要講函數,但是連續幾天寫類似的觀念與操作屬實有點大腦疲乏,再加上目前開發的專案遇到前端效能瓶頸,上班瘋狂燒腦,坦白說這比以前解資優數學題累多了,喝了一堆咖啡因飲料身體還是吃不消,一回家就開始打起瞌睡...ZZZZ,原本以為是後端的鍋,改後端程式碼改了老半天,最後發現有幾個React的Hook瘋狂Render害的,哭阿
一般的程式語言,大多數情況下照順序由上往下執行,以瀏覽器語言JS舉例
console.log(1);
console.log(2);
console.log(3);
結果理所當然的是1、2、3
隨便看一個例子
SELECT product_id, amount,price
FROM products
WHERE price>600;
第一眼看可能會覺得SQL是
這看起來似乎沒毛病,但SQL不同於一般的編程語言,來看看維基百科怎麼定義的
宣告式程式設計(英語:Declarative programming)或譯為宣告式程式設計,是對與指令式程式設計不同的程式設計範型的一種合稱。它們建造電腦程式的結構和元素,表達計算的邏輯而不用描述它的控制流程
簡單來說就是告訴資料庫你要什麼,而不是透過順序來取得想要的執行結果,回到上方的例子,
正確的執行順序
以下流程不代表全部的資料庫皆如此處理SQL語言
1.FROM把數據從硬碟移至緩衝區方便後續操作,SQL的核心在於對表的引用,就如同前幾天內連結、外連結、自連結所示範的,不同的連結可以獲得不同的集合。
2.SELECT則是FROM、WHERE、GROUP BY、HAVING後執行
1.DISTINCT,選取資料後去除重複
2.UNION,連結兩子集後去除重複
3.UNION ALL,連結兩子集後不去除重複
4.EXCEPT,去除第一子集中第二子集的結果
5.INTERSECT,保留第一子集中第二子集的結果並去除重複
Day9-MySQL的視圖