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