{eval=Array;=+count(Array);}
一直以來,數(shù)據(jù)的持久化都是依賴于文件存儲,包括windows的excel,word,txt等,數(shù)據(jù)庫也是使用的文件,比如oracle的.DBF;Access的.mdb都是使用的文件。
既然是文件,我們知道計算機只識別0,1兩個機器碼,其實文件就都是一系列的二進(jìn)制編碼,不同的文件使用不同的方式打開,比如在windows上強制使用文本方式打開dbf文件會顯示一堆亂碼,因為很多東西它不識別。
SQL就是用來對數(shù)據(jù)庫文件進(jìn)行增刪改查的語言,數(shù)據(jù)庫誕生伊始,就是為了解決結(jié)構(gòu)化的數(shù)據(jù)存儲,相對應(yīng)的就需要一門結(jié)構(gòu)化的語言來操作它。
SQL,英文為Structured Query Language,翻譯為結(jié)構(gòu)化查詢語言,可以方便的訪問和處理數(shù)據(jù)庫,是ANSI標(biāo)準(zhǔn)的一門計算機語言,既然只是一門語言,那就不是不可以取代的,只要使用同樣的操作標(biāo)準(zhǔn),比如使用JAVA完全可以讀出文件中的內(nèi)容,進(jìn)行顯示和修改,但是這種重復(fù)造輪子的事情應(yīng)該沒人會做,首先需要掌握數(shù)據(jù)庫存儲標(biāo)準(zhǔn),然后操作數(shù)據(jù)庫,有著極強的復(fù)雜性不說,性能估計也比SQL差,畢竟SQL本就是伴隨著數(shù)據(jù)庫的發(fā)展誕生的一門操作語言!
SQL提供了create;drop;alter;insert;select;update;delete等標(biāo)準(zhǔn)指令用于操作數(shù)據(jù)庫,實現(xiàn)結(jié)構(gòu)化數(shù)據(jù)模型創(chuàng)建,結(jié)構(gòu)化數(shù)據(jù)存儲和查詢的功能!
回到問題的描述,為什么不用對象數(shù)組取代數(shù)據(jù)庫?首先你要想清楚,這些對象數(shù)組需不需要持久化?需要持久化必然是要放在硬盤的文件中的,需不需要有關(guān)系?不管是關(guān)系型數(shù)據(jù)庫,可以針對關(guān)系型數(shù)據(jù)進(jìn)行方便的存儲!
如果你的對象數(shù)組只在內(nèi)存里面用,數(shù)據(jù)庫自然是不需要的,如果你是要持久化,而且是關(guān)系型數(shù)據(jù)持久化,那么只能是數(shù)據(jù)庫了!
綜上,你完全可以使用其他語言(JAVA,C等)實現(xiàn)數(shù)據(jù)庫文件的增刪改,但是為了方便,性能,還是老老實實使用SQL吧,更多的技術(shù)分享,敬請關(guān)注。。。
其實不同的數(shù)據(jù)庫往往都會有一些針對性的操作,但是大部分?jǐn)?shù)據(jù)庫都會在遵循基本的SQL語言基礎(chǔ)之上進(jìn)行一些功能性的擴展,或者是一些優(yōu)化操作。因為數(shù)據(jù)庫的功能大部分是統(tǒng)一的,所以數(shù)據(jù)庫領(lǐng)域的標(biāo)準(zhǔn)化相對會更容易一些,這也是為什么SQL語言會成為數(shù)據(jù)庫領(lǐng)域的標(biāo)準(zhǔn)之一。標(biāo)準(zhǔn)化的SQL語言不僅會降低學(xué)習(xí)成本,而且會促進(jìn)數(shù)據(jù)庫行業(yè)的良性發(fā)展,所以標(biāo)準(zhǔn)化程度越高的領(lǐng)域,成熟度往往也越高,市場規(guī)模通常也就比較大。
SQL語言主要面向數(shù)據(jù)庫的基本操作,對于大部分程序員來說,掌握標(biāo)準(zhǔn)的SQL語言基本上就能夠完成大部分的軟件開發(fā)任務(wù),而且采用標(biāo)準(zhǔn)的SQL語言能夠讓代碼有更好的復(fù)用性,這對整個軟件開發(fā)領(lǐng)域來說也是比較重要的。雖然目前不少開發(fā)環(huán)境下都可以采用數(shù)據(jù)庫映射框架來完成數(shù)據(jù)庫操作(MyBatis等),但是掌握基本的SQL語言依然是程序員的重要技能之一。
SQL語言的統(tǒng)一對于數(shù)據(jù)庫維護(hù)人員來說也是非常重要的,由于數(shù)據(jù)庫在整個信息化領(lǐng)域占據(jù)著重要的位置,所以往往數(shù)據(jù)庫維護(hù)的工作量也是非常大的,往往同一家公司內(nèi)部就會有多家數(shù)據(jù)庫公司的不同產(chǎn)品(異質(zhì)異構(gòu)),而統(tǒng)一的SQL語言能夠極大的減輕數(shù)據(jù)庫維護(hù)人員的工作量。
在大數(shù)據(jù)時代,雖然市場上出現(xiàn)了大量的NoSQL數(shù)據(jù)庫,但是SQL語言依然起著比較重要的作用,因為對于結(jié)構(gòu)化數(shù)據(jù)和半結(jié)構(gòu)化數(shù)據(jù)來說,SQL是完成數(shù)據(jù)清洗和提取的重要方式。另外,市場上也出現(xiàn)了通過SQL語言來完成大數(shù)據(jù)運算的產(chǎn)品,比如Hive。
我從事互聯(lián)網(wǎng)行業(yè)多年,目前也在帶計算機專業(yè)的研究生,主要的研究方向集中在大數(shù)據(jù)和人工智能領(lǐng)域,我會陸續(xù)寫一些關(guān)于互聯(lián)網(wǎng)技術(shù)方面的文章,感興趣的朋友可以關(guān)注我,相信一定會有所收獲。
如果有互聯(lián)網(wǎng)方面的問題,也可以咨詢我,謝謝!
首先,SQL不是數(shù)據(jù)庫語言,反正我沒聽說過。
當(dāng)前主流的數(shù)據(jù)庫編程語言只有PL/SQL,也是目前在企業(yè)級軟件里面應(yīng)用最多的,PL/SQL最核心應(yīng)該是存儲過程、函數(shù)、游標(biāo)、觸發(fā)器、AQ隊列,有些復(fù)雜的數(shù)據(jù)庫操作時SQL語句無法完成的,這個時候只能用oracle提供的PL/SQL,想要深入了解PL/SQL可以去看看這本書,學(xué)了PL/SQL會讓你的技術(shù)質(zhì)變,相關(guān)連的項目做起來也會非常輕松
SQL是唯一一個被標(biāo)準(zhǔn)化了編成語言。這意味著只要是關(guān)系形數(shù)據(jù)庫就一定要支持SQL。所以O(shè)racle,IBM DB2,微軟SQL SERVER等數(shù)據(jù)庫產(chǎn)品都支持標(biāo)準(zhǔn)的SQL。但事實上各家的SQL還是有些差別的。
另外,SQL由于只描述查詢邏輯,被稱為第四代編程語言(另一種說法是第五代),以區(qū)別于其他以程序步驟為中心的所謂,第三代語言(另一種說法,C是第三代,Java等是第四代)。從某種意義上,SQL是最接近自然語言的編程語言。開發(fā)用純粹自然語言為基礎(chǔ)的編程語言一直都是一個研究課題。
不是只有一種喔,
以前的我需要各種 join 打交道inner, outer, left, right, on,where...並且燒腦各種 inter-table 關(guān)係,還沾沾自喜用的順溜,以為這世界就只有如此。
現(xiàn)在的我卻離不開 ORM 了。 SQL其實是不符合人性的,感謝泛noSQL的發(fā)明。
SQL(Structured Query Language)結(jié)構(gòu)化查詢語言,是用于訪問數(shù)據(jù)庫的標(biāo)準(zhǔn)語言,各種不同的數(shù)據(jù)庫對SQL語言的支持與標(biāo)準(zhǔn)存在著細(xì)微的不同。
注釋:除了 SQL 標(biāo)準(zhǔn)之外,大部分 SQL 數(shù)據(jù)庫程序都擁有它們自己的私有擴展!
各個數(shù)據(jù)庫廠商通常會在標(biāo)準(zhǔn)的SQL語言上進(jìn)行擴展,T-SQL就是微軟擴展的一個版本,其他還有Oracle的PL/SQL等。
標(biāo)準(zhǔn)的SQL主要完成基本的數(shù)據(jù)庫對象定義、操作和控制等功能,而T-SQL以及PL/SQL還增加了流程控制元素和各種函數(shù)功能。有了這些功能,可以完成一些程序?qū)ο蟮木帉?,例如存儲過程、觸發(fā)器等。
不不,我覺得你這是沒理解到位。SQL中文是叫結(jié)構(gòu)化查詢語言,就像php和Java都可以叫后端語言一樣,是一種抽象的叫法。事實上也是每種數(shù)據(jù)庫的查詢語言和其他數(shù)據(jù)庫查詢語言是存在差別的。
0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答