程式語言種類那麼多,為何資料庫語言只有一種(SQL)?

時間 2021-05-30 18:59:22

1樓:

辣麼多種NoSQL都被你吃了。

Redis的命令語法。MongoDB的各種query、aggregate,這些都是和SQL模擬的「資料庫語言」。

2樓:消失的影子

對於關係型資料庫來說,我覺得是因為他們的程式設計模型都是一樣的,都是面向集合的處理。而集合的處理操作總體來說就那麼多種,不會突然冒出來新的操作。而且對於集合處理來說,我們只需要說出「要做什麼」,比如join,union之類的,並不需要說「怎麼做」,也就是具體實現join的細節。

所以關係型資料庫可以使用通用的SQL。

3樓:路強

sql的理論基礎是關係代數,程式語言屬於術層面的東西,可以創新迭代速度很快,而理論創新非常難,除非有一種理論能取代關係代數,否則sql永遠不死,這也是為什麼很多nossql的資料庫也要繞回到sql支援上來的原因。

技術革新會很快,但理論突破很難,就像圖靈提出的計算機理論模型,直到現在也無法突破,而伺服器、台式電腦、各色終端已經更新了不知道多少代了。

4樓:起名難

因為你說的是資料庫是關聯式資料庫,關聯式資料庫共同的理論基礎都是關係代數,而SQL語言是對關係代數一種良好的表達,所以所有的關聯式資料庫都支援SQL語言。

眼光放開闊一點,資料儲存絕不僅僅只有資料庫。有Elasticsearch、HDFS、Redis等等,種類非常豐富,而這些大多數都是不支援SQL的(因為不是基於關係代數的)

5樓:無以言

儲存=》集合=》行、列關係合併=》新的集合。

儲存都這樣,需要使用儲存時自然就會想到sql(出得早,設計有針對性,有標準,容易實現,有大量的工程實踐沉澱),實現乙個sql完事。

6樓:

我想是因為資料庫語言被稱為sql,則只有sql是資料庫語言。

sql是structured query。我覺得這個問題等於是問,為什麼資料庫需要structure。

資料庫的目的是對很多種類似的資料做操作,這也是為什麼資料庫要存在的原因。注意到上面說的"很多種類似的資料",這些類似對於一條資料來說,就是結構類似。結構作為抽象,用來幫助優化程式的時間效益(某些抽象相同的資料可以批量操作、具有某些抽象的資料可以省略特定操作)和空間效益(某些抽象相同的資料可以更緊緻地儲存)。

如果你想問為什麼只能是structure, 那我回答就是: "因為描述資料和資料集,就是描述其結構"。就是沒有別的,你找到別的叫個別名,但它還是structure.

所以為什麼是sql?因為解決這樣問題的語言就是structured query language, 無論是各個資料庫(甚至不管是不是關係型的)上自己的sql idiom, 甚至各個rdf idiom, 包括那啥近幾年出來的graphql, 或者你寫了乙個別的用來做資料管理的dsl,都被歸類到sql罷了。

7樓:Trigger

因為這不一定是對的。

SQLserver Oracle DB2 postgresql MySQL用的SQL語言都不是完全相同的。SQL歷史上也有很多個版本的標準演化。

就算是數學模型,有大量非關係型資料庫的查詢語言和關聯式資料庫對標,比如圖資料庫。以及就算是關聯式資料庫,也有各種各樣的查詢語言的數學模型的變種,去搜descriptive complexity那張圖。

8樓:PrimaryK

事實上, sql就是為關係型資料庫服務的.

當然, 歷史的車輪都是向前發展的, mongoDB這種 nosql大部分都不是用sql表達的.

sql使用者過多, 為了照顧這類開發者, 很多新型資料庫, 也都會考慮使用sql操作, 例如InfluxDB. 可能這就是讓你產生彷彿運算元據庫語言只有乙隻的錯覺的原因吧.

為什麼那麼多人對比程式語言優壞?

1.對程式設計師,說自己不用的程式語言不好,是粗魯無理的表現。2.對程式設計師,程式語言是思想表達的工具,但不同的程式語言各有特點,表達的方面 高度和深度確實大大不同,都有其適用範圍。多學習了一類程式語言,就多掌握了一種不同的思想表達的方式。3.學習了一種新的程式語言,就像學習了一門新的外語,適用環...

快攻卡組那麼多,為什麼那麼多人討厭火妖法?

沈俊 首先火妖法不是真正意義上的快攻,而且討厭火妖法本身就是很正常的,不可能火妖法玩家討厭火妖法,大部分都是被四費啟動打的不能自理的其他職業。就跟大家同時期討厭開門和血色綻放一樣,不合理可不就討厭的人多嗎。 Ricardo 卡組比較自閉是乙個因素,還有很關鍵的一點,火妖法沒捱過刀,或者說砍法師的幾刀...

各種程式語言都有那麼多庫和包可以使用,為什麼還要學演算法呢。

觸中之觸 越底層,越自由 一直依賴庫,某天突然庫和包無法滿足業務需求,或者有某些bug的時候,就gg了。庫和包如果是自己寫的,就可以改庫來滿足業務需求,和修復bug。 黃哥 這樣思考這個問題 為了找工作面試需要,在美帝不刷演算法題,根本沒有機會找到cs 相關工作。國內也慢慢.cs 學科設計了專業課程...