先前跟大家分享 CTE 遞迴的寫法,在粉絲團貼文的留言中,就有網友分享另一種存放樹狀結構資料的設計方式 - Nested Set Model(巢狀集合模型),這篇文章就來跟大家分享 Nested Set Model 資料表的設計方式。
[小菜一碟] 利用 SQL Server 的 CTE(Common Table Expression)遞迴取得族譜中某人的所有子孫
- 3421
- 0
- SQL Server
樹狀的資料結構在日常的程式設計當中挺常見的,舉凡像是留言板
、人事組織
、族譜
、…等,都用得上,但當我們把樹狀結構的資料存進 SQL Server 之後想要撈出來,除了用跑迴圈之外大概就是用遞迴了,迴圈的寫法就不多介紹,本篇文章要來跟大家分享遞迴的寫法。
[小菜一碟] 適用 SQL Server 的三種單筆資料 INSERT or UPDATE(Upsert)的寫法
- 9804
- 0
- SQL Server
- 2021-10-14
INSERT or UPDATE
或者有人稱 Upsert
,是一個撰寫資料庫存取應用程式一定會遇到的場景,這個看起來簡單不過的寫入資料邏輯,到了實際真正要施作的時候,是有一些細節需要去注意的,下面我就我所知道的三種 INSERT or UPDATE 的寫法跟各位朋友分享。
[小菜一碟] 在 SQL Server 做密碼的雜湊跟比對
- 3187
- 0
- SQL Server
我們都知道不應該將密碼以明碼的方式存進資料庫,至少密碼要雜湊(Hash)過才放進資料庫,大多數的人應該都是選擇在應用程式裡面,先將密碼雜湊過,再將密碼存進資料庫內,不過 SQL Server 已經有一套機制來處理密碼雜湊這件事,我們可以放心地交給 SQL Server 自己來處理。
[小菜一碟] 用 SQL Server 的 OUTPUT 語法撈出剛剛刪除的資料
- 6852
- 0
- SQL Server
有時候我們會需要額外記錄剛剛刪除或更新的資料,又或者是取得剛剛新增的識別(IDENTITY)欄位的值,拿來當成其他的 SQL 語句的參數,這些事情在 SQL Server 我們都可以透過 OUTPUT
語法幫助我們輕鬆做到。
[廚餘回收] 解決因參數嗅探(Parameter Sniffing)導致使用到錯誤執行計劃的方法之一 - 加入註解。
- 1159
- 0
- SQL Server
遇到參數嗅探(Parameter Sniffing)
出問題的時候真的會讓人無力,我們為了避免 SQL Injection
,所以參數化查詢
變成了通則,而正是因為參數化查詢才會有參數嗅探,如果我們是使用 Adhoc 或 Prepared 的方式在下 SQL 語句的話,倒是有一個方法能夠避免因參數嗅探使用到錯誤執行計劃的問題,那就是加入註解
。
[小菜一碟] 已知有一個固定值的集合,在 SQL Server 怎麼把它變成 Table?
- 666
- 0
- SQL Server
這個標題聽起來像是廢話,我們有一個集合,怎麼把它變成 Table? 啊不就 INSERT INTO 就好了?我要介紹的不是只有 INSERT INTO 而已,我們在寫 SQL 的時候,偶爾會遇到一種場景,我們手上有一個集合,這個集合的值是固定的,比如說年份 2011 ~ 2020、月份 1 ~ 12、...等,這個集合我們會拿去跟現有的資料做 JOIN,進行一些統計運算,我們把這個集合變成 Table,在操作上就會比較方便一點,我就我所知的四種方法來跟大家分享。
[小菜一碟] 利用 window.navigator.sendBeacon() 在使用者關閉網頁視窗時發送記錄
- 1238
- 0
- JavaScript
我們在追蹤客戶端行為時,多多少少會遇到一個場景,就是要在使用者把網頁視窗關閉時,將記錄送回伺服器端,做法上我們可能會想在網頁視窗觸發 unload 事件的時候,發送 AJAX Request 回伺服器端就好了,但是這個方法在一些瀏覽器上(比如:Firefox)不 Work,取而代之 Web APIs 提供了更好的 API - sendBeacon()。
[小菜一碟] 使用者的密碼應該雜湊(Hash)存起來?還是加密(Encryption)存起來?
- 1160
- 0
- Encryption
雜湊(Hash)跟加密(Encryption)其實很多人會把它們混為一談,常常以為把一串文字變成另一串看起來像亂碼的文字就是「加密」,這兩者還是不太一 樣的,除了名稱跟定義不一樣之外,對於實際應用上來講最大的差異在於「不可逆
」。
[小菜一碟] 使用 Cloudflare 的 Transform Rules 功能協助我們輕鬆判定友好爬蟲(Bot、Crawler)
- 526
- 0
- Cloudflare
在跟爬蟲的戰爭之中,很容易打到一些友好的爬蟲,像是 Google、Bing、...等搜尋引擎,還有像是 Ahrefs 這種 SEO 的輔助工具,我們要在自己的應用程式當中去過濾出所有的友好爬蟲,是一件苦差事,不過如果我們有使用 Cloudflare 的話,Cloudflare 有自己維護友好爬蟲的清單,再搭配他們自家的 Transform Rules 服務,我們就可以很輕鬆地過濾出友好的爬蟲。