{eval=Array;=+count(Array);}
我個(gè)人之前就是自學(xué)數(shù)據(jù)庫,結(jié)合自身經(jīng)驗(yàn)告訴你,自學(xué)SQL語言的使用比較簡單,但是如果自學(xué)數(shù)據(jù)庫底層實(shí)現(xiàn)原理,這個(gè)難度就非常高,尤其是對于初學(xué)者來說。
SQL語言,全稱為結(jié)構(gòu)化查詢語言,你在開發(fā)大型項(xiàng)目中,一般都會(huì)使用到關(guān)系型數(shù)據(jù)庫來存儲(chǔ)數(shù)據(jù),比如網(wǎng)站用戶的注冊信息、店鋪的訂單信息等等,如果數(shù)據(jù)量不大,可以選擇使用Mysql數(shù)據(jù)庫。此時(shí)你就需要使用SQL對數(shù)據(jù)庫表進(jìn)行查找、更新、刪除、插入操作,這些操作最底層都需要SQL語言來操作執(zhí)行。
SQL語言由于不像其他編程語言那么復(fù)雜,它只有少部分的語法,所以對于新人來說,SQL語言是非常好學(xué)的。常用的SQL語句有 Select、Update、Delete、Insert、Alter這五種語法。你也可以在SQL語言中編寫存儲(chǔ)過程以及函數(shù)等,新人不需要具體的編程去寫代碼,寫SQL比寫代碼要更加容易。
我之前自學(xué)過MySQL底層的原理,自己也買了兩本書籍去自學(xué),比如Mysql內(nèi)存中LRU緩存如何實(shí)現(xiàn)的,內(nèi)存如何使用的。MySql到底如何實(shí)現(xiàn)事務(wù)的,Redo日志和Undo日志分別作用是干什么的,Mysql的各部分存儲(chǔ)引擎的優(yōu)缺點(diǎn)等等。這些知識點(diǎn)新手去自學(xué),的確會(huì)比較困難。
同時(shí),數(shù)據(jù)庫底層原理的學(xué)習(xí)光看書也是遠(yuǎn)遠(yuǎn)不夠的,但日常我們又很難接觸到數(shù)據(jù)庫底層的項(xiàng)目,沒有項(xiàng)目實(shí)踐,數(shù)據(jù)庫原理層肯定很難掌握。而Mysql數(shù)據(jù)庫的源碼層又是C語言寫的,說實(shí)話看源碼有時(shí)候看的也云里霧里的,有些地方也實(shí)在很難看懂,所以新人自學(xué)數(shù)據(jù)庫底層原理,真的會(huì)很難。不建議一上來就去學(xué)習(xí)數(shù)據(jù)庫底層原理。
新人在學(xué)習(xí)SQL語言時(shí),可以去網(wǎng)上下載SQL語言學(xué)習(xí)的書籍,同時(shí)結(jié)合著網(wǎng)上SQL視頻教程來學(xué)習(xí)會(huì)比較好,有人教你,有些不好掌握的地方,能夠更清晰的去認(rèn)識。你最好跟著視頻里面的教程親自動(dòng)手實(shí)踐,這樣對于你的學(xué)習(xí)會(huì)有更多的幫助。
我是Lake,專注大數(shù)據(jù)技術(shù)原理、人工智能、數(shù)據(jù)庫技術(shù)、程序員經(jīng)驗(yàn)分享,如果我的問答對你有幫助的話,希望你能點(diǎn)贊關(guān)注我,感謝。
我會(huì)持續(xù)大數(shù)據(jù)、數(shù)據(jù)庫方面的內(nèi)容,如果你有任何問題,也歡迎關(guān)注私信我,我會(huì)認(rèn)真解答每一個(gè)問題。期待您的關(guān)注
謝謝邀請!
如果是學(xué)習(xí)SQL數(shù)據(jù)庫(關(guān)系型)如何使用,那么難度并不高,原因有以下幾點(diǎn):
第一:關(guān)系型數(shù)據(jù)庫理論嚴(yán)謹(jǐn)清晰。關(guān)系型數(shù)據(jù)庫經(jīng)過多年的發(fā)展,有一套嚴(yán)謹(jǐn)?shù)臄?shù)學(xué)理論作為基礎(chǔ),所以關(guān)系型數(shù)據(jù)庫結(jié)構(gòu)非常清晰且邏輯性很強(qiáng),學(xué)習(xí)的過程可以依次遞進(jìn),連貫性很高。
第二:關(guān)系型數(shù)據(jù)庫以表格為基礎(chǔ)進(jìn)行各種操作。關(guān)系型數(shù)據(jù)庫以數(shù)據(jù)表格為基礎(chǔ)概念展開一系列操作,包括建庫、建表、創(chuàng)建存儲(chǔ)過程等,這些操作本身具有非常強(qiáng)的規(guī)則性,掌握起來并不困難。在學(xué)習(xí)數(shù)據(jù)庫的過程中,存儲(chǔ)過程、隔離、事務(wù)處理等相關(guān)內(nèi)容還是有一定難度的,但是也并不是很難,通過大量的實(shí)驗(yàn)完全可以掌握。
第三:SQL語言以簡潔易用著稱。相比于Java、Python等編程語言來說,SQL語言就要簡單易用多了,SQL語言基本語法非常清晰,另外SQL語言的操作邊界并不會(huì)突破數(shù)據(jù)庫管理系統(tǒng),所以SQL語言本身還是比較好掌握的,前提是多做實(shí)驗(yàn)。
在學(xué)習(xí)SQL數(shù)據(jù)庫的過程中,一定要結(jié)合大量的實(shí)驗(yàn),因?yàn)閿?shù)據(jù)庫操作本身涉及到大量的存取操作,只有熟練這些實(shí)際操作過程才能熟悉SQL數(shù)據(jù)庫的使用。
學(xué)習(xí)SQL數(shù)據(jù)庫首先要選擇一款數(shù)據(jù)庫產(chǎn)品,推薦使用MySQL數(shù)據(jù)庫,一方面MySQL數(shù)據(jù)庫有廣泛的使用,另一方面MySQL數(shù)據(jù)庫安裝方便,對于初學(xué)者來說,學(xué)習(xí)MySQL是一個(gè)不錯(cuò)的選擇。
學(xué)習(xí)MySQL數(shù)據(jù)庫是完全可以自學(xué)的,而且實(shí)驗(yàn)也比較容易做。很多程序員都是通過自學(xué)掌握MySQL數(shù)據(jù)庫使用的。
我從事軟件開發(fā)工作多年,目前也在帶軟件開發(fā)團(tuán)隊(duì),我會(huì)陸續(xù)在頭條寫一些關(guān)于軟件開發(fā)方面的文章,感興趣的朋友可以關(guān)注我,相信一定會(huì)有所收獲。
如果有軟件開發(fā)方面的問題,也可以咨詢我,謝謝!
只要有興趣,一點(diǎn)也不難,就算一天只學(xué)并掌握兩個(gè)命令,一個(gè)月就差不多就上中等水平了。興趣是第一原動(dòng)力
這個(gè)問題無法簡單的用是或不是來回答。
最核心的,要考慮應(yīng)用SQL和數(shù)據(jù)的場景是什么。比如您是學(xué)習(xí)SQL和數(shù)據(jù)庫為了工作,還是僅僅是學(xué)習(xí)而不用來做事情。
如果您為了工作需要而學(xué)習(xí)SQL和數(shù)據(jù)庫,想要不學(xué)好都難,因?yàn)槟粚W(xué)好工作就丟了,您要面對的首要問題是學(xué)什么、如何學(xué)的問題,這時(shí)候難不難已經(jīng)不重要了,學(xué)會(huì)并用來干活才是第一要?jiǎng)?wù)。
如果為了工作需要,那要看您工作上用的數(shù)據(jù)庫是那種數(shù)據(jù)庫,雖然不同數(shù)據(jù)庫之間的SQL語句絕大多數(shù)情況下是相通的,但不同的數(shù)據(jù)庫系統(tǒng)對SQL的支持還是有差別的。比如Oracle和MySQL使用的PL/SQL,SQLServer使用的T-SQL,雖然都說自己兼容ANSI-SQL,但畢竟還是有些差別的。
明確了工作要用的數(shù)據(jù)庫,接下來就是學(xué)習(xí)方法問題了。我下面就以SQLServer為例,說一下怎樣可以快速入門。
首先,您要盡快熟悉SQLServer的管理器。老版的SQLServer2000中,管理器分兩個(gè),一個(gè)叫做企業(yè)管理器、一個(gè)叫做查詢分析器,通俗來說,企業(yè)管理器是傻瓜化的管理界面,主要用來創(chuàng)建數(shù)據(jù)庫、創(chuàng)建表、備份數(shù)據(jù)庫等,查詢分析器主要用來寫SQL腳本;從2000之后,企業(yè)管理器和查詢分析器就整合一起了,名字叫做Microsoft SQL Sever Management Studio,簡稱MSSMS,您可以看作是整合了傻瓜界面和SQL腳本。熟悉了工具,您干活才有基礎(chǔ)。
其次,您要盡快掌握SQLServer管理器的常用操作。平時(shí)我們在MSSMS中常用的操作,主要包括創(chuàng)建數(shù)據(jù)庫、創(chuàng)建表、備份數(shù)據(jù)庫、還原數(shù)據(jù)庫,這些雖然可以通過SQL腳本實(shí)現(xiàn),但通過圖形界面會(huì)更直觀,還包括諸如導(dǎo)出表數(shù)據(jù)、導(dǎo)入外部Excel數(shù)據(jù)等,都要盡快掌握。這些操作平時(shí)經(jīng)常用。
最后,您要盡快掌握基本的SQL語法,并在以后的工作中盡快提高自己的SQL水平。常用的SQL語法,無外乎查詢、插入、更新、刪除等,相關(guān)的語法都比較簡單,但要結(jié)合工作需要實(shí)現(xiàn)各種個(gè)性化需求就不太容易了。在工作中不停的解決各種實(shí)際問題,您的SQL水平自然就會(huì)越來越高啦。
俗話說學(xué)以致用,如果您不是為了眼下的工作學(xué)習(xí)SQL和數(shù)據(jù)庫,想要學(xué)好確實(shí)不容易。SQL語法是很枯燥的,沒有具體的場景結(jié)合,根本很難深入進(jìn)去。
所以,如果為了知識儲(chǔ)備學(xué)習(xí)SQL和數(shù)據(jù)庫,最重要,您要自己創(chuàng)造一個(gè)場景,有了場景,才會(huì)有深入學(xué)習(xí)的興趣。您可以著重以下幾點(diǎn):
首先,選擇最有前途的數(shù)據(jù)庫系統(tǒng)。ANSI-SQL雖然是標(biāo)準(zhǔn)的,但沒有數(shù)據(jù)庫系統(tǒng)的支撐,您寫了SQL也無法驗(yàn)證成果,何談學(xué)習(xí)的興趣呢。建議您選擇最有前途的數(shù)據(jù)庫系統(tǒng),我推薦首選PostgreSQL,pgSQL號稱全世界最先進(jìn)的開源數(shù)據(jù)庫系統(tǒng),沒有任何商業(yè)應(yīng)用限制、生命力極其旺盛、運(yùn)行穩(wěn)定堅(jiān)若磐石、完美支持各種標(biāo)準(zhǔn)SQL語法、對JSON的支持是所有傳統(tǒng)關(guān)系型數(shù)據(jù)庫系統(tǒng)中最好的。推薦一個(gè)太單調(diào),您也可以選擇SQLServer、MySQL等,其實(shí)Oracle和MySQL本人并不推薦,MySQL已經(jīng)被Oracle收購了而且快要玩兒壞了,對這種鉆到錢眼兒里面的,聯(lián)想一下目前美國的各種作為,指不定哪天給你一下子。
其次,創(chuàng)建一個(gè)完整的應(yīng)用場景。沒有場景是沒辦法提起興趣的,沒有場景可以創(chuàng)建場景,如何創(chuàng)建呢?最簡單的,如果您是大學(xué)生,就搞一個(gè)完整的學(xué)生學(xué)籍應(yīng)用場景;如果您是已經(jīng)參加工作的剛好從事IT行業(yè),可以根據(jù)行業(yè)潛在的應(yīng)用需求模擬一個(gè)完整的應(yīng)用場景。總之結(jié)合自己的職業(yè)和特長來做,這樣您才能充分考慮您使用數(shù)據(jù)庫要表達(dá)的都包含那些。
最后,通過SQL完整實(shí)現(xiàn)場景的各種應(yīng)用需求。這才是正事兒。首先您要設(shè)計(jì)要完整表達(dá)場景,都需要建什么表、表之間都有那些關(guān)聯(lián)關(guān)系、實(shí)現(xiàn)各種查詢應(yīng)該如何創(chuàng)建合理的視圖、實(shí)現(xiàn)各種業(yè)務(wù)處理需要?jiǎng)?chuàng)建什么樣的存儲(chǔ)過程。場景模擬完了,您基本也把大部分SQL語法都用到了,自然而然就搞懂了數(shù)據(jù)庫和SQL。
如果您是程序開發(fā)人員,學(xué)習(xí)數(shù)據(jù)庫不要單純學(xué)習(xí)數(shù)據(jù)庫和SQL語句,而是要盡快與自己常用的編程環(huán)境融合起來。
比如您是Delphi、CC++或Java開發(fā)工程師,您選擇了數(shù)據(jù)庫之后,首要考慮的就是如何通過程序連接數(shù)據(jù)庫、通過程序操控?cái)?shù)據(jù)庫。程序連接數(shù)據(jù)庫的常見方式一般是ODBC,但常見的編程語言與常見的數(shù)據(jù)庫之間,都會(huì)有獨(dú)有的數(shù)據(jù)庫驅(qū)動(dòng),您首要掌握的,就是如何使用數(shù)據(jù)庫驅(qū)動(dòng)。
大多的編程環(huán)境都會(huì)提供數(shù)據(jù)庫連接和操控組件。比如Delphi中,就提供了ADO、FireDAC、UniDAC等多種連接方式,您要選擇風(fēng)頭正盛的連接方式,比如ADO已經(jīng)開始過時(shí)了,您可以選擇FireDAC,掌握了連接方式和操控方式,您再把重點(diǎn)放在SQL腳本的各種語法處理上。
總之,學(xué)以致用才是學(xué)習(xí)的動(dòng)力,如果您有明確的應(yīng)用場景和目標(biāo),想要學(xué)好SQL和數(shù)據(jù)庫一點(diǎn)都不難,您說呢?
如果單指SQL腳本應(yīng)用,這個(gè)都難的話,高中水平估計(jì)都不到!如果指的是對數(shù)據(jù)庫進(jìn)行性能優(yōu)化、性能監(jiān)控、空間及內(nèi)存管理、BUG追蹤等運(yùn)維性的工作話,確實(shí)要花比較多時(shí)間與精力學(xué)習(xí)和實(shí)踐。
結(jié)構(gòu)化查詢語言(Structured Query Language)簡稱SQL,是一種特殊目的的編程語言,是一種數(shù)據(jù)庫查詢和程序設(shè)計(jì)語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng)。
作為一個(gè)做了17年的資深數(shù)據(jù)庫管理員,我可以很肯定的跟你說,自學(xué)SQL數(shù)據(jù)庫不難。現(xiàn)在主流的大型數(shù)據(jù)庫oracle,mssql,mysql 用的都是標(biāo)準(zhǔn)的SQL語言。oracle是最規(guī)范的,mssql是包容性最大的。先學(xué)習(xí)mssql相信你最容易入門。買一本mssql的入門書籍,對著書本看看mssql是如何安裝的,安裝好之后。先了解一下mssql的企業(yè)管理器的各項(xiàng)功能是什么,如何建立數(shù)據(jù)庫,建表。再學(xué)習(xí)最基礎(chǔ)的insert,delete,update,select語法,就是所謂的增刪改查,這樣基本就可以叫入門了。如果只是興趣愛好的話,到這步也就差不多了。
但是如果是工作需求的話,那就還有更深入地需要研究學(xué)習(xí)。利用學(xué)過的知識去建立視圖,存儲(chǔ)過程,函數(shù),數(shù)據(jù)庫維護(hù)等等其它功能。我以前參加工作之前也是自己買了幾本入門的書,學(xué)習(xí)一段時(shí)間就基本熟練了,但是參加具體工作之后才發(fā)覺數(shù)據(jù)庫這東西是入門容易精通難,實(shí)際遇到的問題太多了,一個(gè)功能用兩種不同的語法去實(shí)現(xiàn),也會(huì)有不同的效果,確實(shí)需要實(shí)際經(jīng)驗(yàn)的了。
跟編程語言一樣,SQL非常考驗(yàn)人的邏輯思維能力。編寫SQL就相當(dāng)于編寫邏輯運(yùn)算式,要將你要做的事翻譯成SQL的關(guān)鍵字并正確地組合。SQL的關(guān)鍵字都有其確切的含義。如:and就是且的意思,or就是或的意思,where其實(shí)是如果的意思,括號()其實(shí)是表示先運(yùn)算,from顧名思義是從、來源的意思,select顧名思義就是查詢的意思。如SQL語句:select * from emp where age>60 or age<16;這句SQL的意思就是:從emp表查詢數(shù)據(jù),每行數(shù)據(jù)如果age大于60或者age小于16則把這行查詢出來。寫代碼就是將自己要做的事翻譯成代碼,首先要會(huì)翻譯,其次要會(huì)設(shè)計(jì),設(shè)計(jì)就必須要會(huì)動(dòng)腦筋了,要自己想出解決問題的方案了。
應(yīng)該說任何編程語言自學(xué)都難
首先,自學(xué)屬于粗放式學(xué)習(xí)
你沒有目標(biāo)性,對于所學(xué)的知識僅限于記住了,不知道未來這個(gè)知識點(diǎn)有什么用途。就像我最近在學(xué)Python ,一些比較基的知識點(diǎn)學(xué)了忘忘了繼續(xù)學(xué),連續(xù)幾遍還是容易忘。因?yàn)槲覜]有去實(shí)戰(zhàn)訓(xùn)練。
其次,自學(xué)很難系統(tǒng)性的面面俱到
我們學(xué)習(xí)老師總是給我們講解各類知識點(diǎn)的作用,而能夠系統(tǒng)性梳理這些知識點(diǎn)很難,你得完全理解各個(gè)知識點(diǎn)之間的內(nèi)在聯(lián)系。就比如SQL ,分為基礎(chǔ)語法部分的增刪改查,進(jìn)階部分涉及到復(fù)雜點(diǎn)的邏輯功能實(shí)現(xiàn),再高級點(diǎn)對語句的性能優(yōu)化。而這些只是針對SQL 開發(fā)而言,還有與之對應(yīng)的數(shù)據(jù)庫管理那就又是一個(gè)體系了。
而想將這些知識全部梳理清楚,沒有一個(gè)時(shí)間的沉淀是做不到的。
最后,學(xué)習(xí)一門語言還是要多動(dòng)手
好些自學(xué)的都只是跟著別人敲一遍代碼就以為是動(dòng)手了,殊不知真正的動(dòng)手是離開了教程自己去找訓(xùn)練習(xí)題,自己查找解決辦法。不僅僅要解決問題,還要解決為什么要這么解。
以上不只針對SQL ,任何自學(xué)編程我覺得均是如此。
互聯(lián)網(wǎng)技術(shù)學(xué)習(xí)任何一門基本都是學(xué)會(huì)不難,難了不會(huì)!
學(xué)習(xí)技術(shù)的話,最好先根據(jù)網(wǎng)絡(luò)上的視頻去學(xué)習(xí),也就是別人帶著學(xué)可以避免很多坑。
跟著視頻學(xué)的話,網(wǎng)絡(luò)上的基本都是偏基礎(chǔ)的,學(xué)了之后基本也就是可以用,簡單的增刪改查,安裝,卸載什么的,如果想深入的學(xué)習(xí),還是需要看書籍,推薦《高性能MySQL第三版》 人稱數(shù)據(jù)庫紅皮書,很不錯(cuò),等會(huì)了增刪改查,建議仔細(xì)的看一下這本書!
首先,你說的SQL數(shù)據(jù)庫應(yīng)該是兩個(gè)東西。
SQL是指搜索查詢語言,是一種數(shù)據(jù)查詢語言,可以用來編程,并查詢數(shù)據(jù)庫系統(tǒng)中的結(jié)果。
而數(shù)據(jù)庫是指數(shù)據(jù)庫系統(tǒng),用來存儲(chǔ)數(shù)據(jù)。給SQL返回?cái)?shù)據(jù)。
SQL并不難學(xué),有點(diǎn)計(jì)算機(jī)基礎(chǔ),一個(gè)星期即可入門。網(wǎng)上有SQL完整教程。
數(shù)據(jù)庫系統(tǒng)就稍微難一點(diǎn),需要懂比較底層的東西,如操作系統(tǒng),算法,數(shù)據(jù)結(jié)構(gòu)。還要學(xué)會(huì)怎么優(yōu)化它,更快響應(yīng)查詢速度。
0
回答10
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答0
回答