用sql寫每年的第三週 SQL思維 VS 程式設計思維

2021-10-11 14:06:04 字數 1095 閱讀 8407

先給出乙個題目:

現在有十萬個主鍵id,對應某個記錄表的主鍵。現在是寫**要求把十萬個id對應的記錄拿到。
***給出兩個方式。

第乙個是,用sql裡的in查詢,但是因為受限於sql自身的長度,我們不可能把十萬個id都放到一條sql裡,所以我們將id集合切分,然後併發去訪問得到結果。

select * from table1 where id in (....ids...)

第二個方式是,將id儲存成乙個表a,然後將a和記錄表進行join關聯。

如果是第一種做法,那麼這就是我說的"程式設計思維",而第二種則是「sql思維」。

我之前將"程式設計思維","sql思維"發了個朋友圈,問大家他們之間有啥區別,答案五花八門。不過就我的認知而言,sql本質上是面向集合,將一切操作都轉化為集合操作。而程式設計的話,則是一種高度靈活的思維,他本身沒有給你乙個方向,所以一般大家會按照程式設計的自然習慣,也就是for迴圈的思維去解決問題。

通常而言,我們在程式設計時,用的最多的其實就是集合類,做的非常多的也是對集合進行操作。但是程式語言自身並沒有對如何操作集合給出乙個「規範的」思維,因為它允許使用者用無數的解決方案去解決。而sql則對這一類操作做了乙個總體的設計和規範,如果你習慣了sql的模式,大部分資料操作會很簡單。

以程式設計思維為主的人接觸sql會覺得各種彆扭,還是覺得自己for迴圈(包含if/else)的模式更可控,更自由。但是,乙個相對來說複雜一點的sql完成的任務,如果讓大家用for迴圈模式來完成(其實就是用一些基礎的集合類),大家可能會花一天甚至幾天的時間才能完成,並且效能可能會比較差,而sql可能只要幾分鐘。

sql的流行取決於資料自然就是按集合組織的,無論有無資料庫(sql),他都會是這種形態。那麼sql又天然是面向集合操作,自然會有很強的能量。

excel -> sql -> python, excel符合托拉拽的操控資料,所以是最廣泛的運算元據的工具,其次就是sql了,python雖然流行,但他是乙個通用的語言,複雜度擺在那。

所以我這些年一直以來,一直努力於mlsql,乙個以sql為主內嵌python的新語言,這有別於其他的統一的大資料分析/ai工具以python為主,內嵌sql。最易於被人接受的才是最有價值的。

第三週的總結

我的開篇前言 剛開始寫部落格總結的時候,總有點逃避的情緒,不知不覺寫總結已經成為了一種習慣。寫的時候既可以總結這一周的學習成果 學習心態以及一些其他的事情,還可以反思自己在學習工程中的不足和學習態度的問題。關於學習 自從經歷上一次面試失敗之後,就知道自己的水平到底有多麼的菜 哎!基礎不行 深度不行 ...

人生苦短我用Python 第三週 函式周

函式的定義 1,def 函式名 引數1,引數2.注釋 函式的作用和引數,增加可讀性 2,函式體 3,返回值 最簡單的函式 def func print hello world 函式名後的括號內的引數的順序是 位置引數,args,預設引數,kwargs 函式的呼叫 函式名 def func print...

第三週遇到的困難

在這種sql題目中進行了給字段或表起別名 然後as老是出錯 如下圖,這樣是可以的 1.表別名不能寫 as 列可以寫as,這屬於oracle的規範,sqlserver可以這樣寫 2.在oracle中as關鍵字不能用於指定表的別名,在oracle中指定表的別名時只需在原有表名和表的別名之間用空格分隔即可...