新手怎麼快速學會並上手SQL語言

hugotu發表於2023-02-22

SQL可以說是程式設計師、資料庫管理員DBA、資料分析師等需要做資料處理和分析崗位最常用的程式語言了。


尤其是一些崗位,工作中並非以資料庫為核心,只是偶爾用些資料不需要深度學習,不得不自己去做一些取數的事情,只要學會透過SQL取數就能掃清職場的絆腳石了。


個人認為,提出這個問題的新手,其實所欠缺的並不是學習SQL的知識或資料,而缺的是學習方法和信心。這裡,無意推薦任何SQL參考書,任何學習材料下載,主要是分享一點學習SQL的方向和心得。


一,搞清楚SQL是什麼?

SQL被稱為結構化查詢語言,英文Structured Query Language的縮寫,無需多說。


在進一步解讀之前,先搞清楚SQL的讀音,要不然容易貽笑大方。SQL可以分開讀這三個字母S - Q - L ,也可以連起來讀: /ˈsiːkwəl/ ,同sequel單詞的讀音。


SQL也是一種程式語言,只不過是一種與資料庫打交道的資料庫語言,它擁有一套獨特的操作命令集。只不過,SQL是一種面向集合的語言,每個命令的操作物件都是一個或多個表,結果也是一個表。


為了可以在不同資料庫上執行命令集,SQL有一個放之四海而皆準的國際標準。1986年10月,美國ANSI採用SQL作為關聯式資料庫管理系統的標準語言(ANSI X3. 135-1986),後被國際標準化組織(ISO)採納為國際標準。1992年,ISO又更新一版標準SQL-92,又稱SQL2。1999年,ANSI也更新了一版新標準SQL-99,又稱SQL3。後期,SQL標準仍然更新,但是基本是遵照這個框架修修補補。


SQL具體是幹什麼的呢?簡單舉例說明一下。


工作中,非技術人員經常要求技術幫忙取個數,技術會根據需求做資料查詢,然後才能把查詢結果匯出來;有時候,又需要在表裡加一個欄位(例如電話號碼等)用來調整資料表的結構,也可以叫資料庫程式設計。


不過,大量SQL操作都是用於資料的增刪改查。用一個大家比較熟悉的場景打個比方,SQL操作就像在百度做一次搜尋行為,先輸入關鍵字再點選“百度一下”開始搜尋。百度後臺資料庫就會根據需求匹配一個模糊搜尋結果展現給使用者。當大家發現結果太多,無法精準找到結果時,就需要再增加搜尋條件。


當然,SQL語言不僅可以直接面對資料庫操作,還可以嵌入到其他語言中執行。例如,SQL可以作為一種嵌入式語言,嵌入到高階語言(例如C、COBOL、FORTRAN、PL/1)程式中,供開發者使用。這種需求一般都是程式設計師使用的較多,非技術人員瞭解一下就可以了。


二,SQL的資料庫的體系結構

上一段內容主要想告訴初學者,SQL是一種可以透過標準命令集來運算元據庫的語言。


既然,我們需要透過一套命令集對資料庫進行操作,進一步我們需要了解操作物件——資料庫的體系結構。


1、資料庫(database):存放資料的容器,一個資料庫由一個或一組資料表組成。

2、資料表(table):存放資料的二維表格,一個資料表由一組資料記錄組成。

(1)列(column):資料表中的一個欄位,一個資料表由一個或多個列組成。


(2)行(row):資料表中的一個記錄。


這裡,SQL資料表可以分為三種型別:基本表、檢視和匯出表。不同人叫法不同,但是含義相同,基本表是實際儲存在資料庫中的表,檢視是由若干基本表或檢視構成的表的定義,而匯出表是執行了查詢時產生的表。


初學者還應該清楚一張資料表裡所包含的這些關鍵資訊:主鍵、外來鍵、約束、索引和DLL等,搞清楚它們才算是把資料表的五臟六腑看得清清楚楚。


說了這麼多資料表的關鍵資訊,進一步,資料表中填入的資料型別也要搞搞清楚。什麼是資料型別?它指的是當我們在資料庫裡建立一個表時,用於儲存什麼樣的資料,它是一個標籤,能在任意一列、變數或者表示式中區別出不同的資料型別。在實際開發過程中,選擇合適的資料型別,可以提高資料庫效能。


常用的資料型別主要包括字串型、時間日期型、數值型等三大類,其中每一大類中還有細分,請初學者務必記牢。當然在不一樣的資料庫檔案中,同一種資料型別很可能有不一樣的叫法。


假如,一張員工加班資訊表中各欄位的數字型別,姓名為“張三”,加班日期是“2月21日”,加班時長是“100”分鐘,其中姓名為字串型,日期是時間日期型,時長是數值型。



三,SQL有哪些命令集

瞭解運算元據庫那些可操作的物件之後,前面算是把SQL設計的理論知識基本交代清楚了。下面是SQL具體涉及的命令集。


首先看一下,SQL語言的分類:


1、資料定義語言(DDL)

資料定義語言(Data Definition Language,DDL)是 SQL 語言集中負責資料結構定義與資料庫物件定義的語言。


DDL主要功能是定義資料庫物件,核心指令是 Create、Alter、Drop。


2、資料操縱語言(DML)

資料操縱語言(Data Manipulation Language, DML)是用於資料庫操作,對資料庫其中的物件和資料執行訪問工作的程式設計語句。


DML 主要功能是訪問資料,因此其語法都是以讀寫資料庫為主,核心指令是 Insert、Update、Delete、Select。這四個指令合稱 CRUD(Create, Read, Update, Delete),即增刪改查。


3、事務控制語言(TCL)

事務控制語言 (Transaction Control Language, TCL) 用於管理資料庫中的事務。


TCL主要用於管理由 DML 語句所做的更改,還允許將語句分組為邏輯事務,核心指令是 Commit、Rollback。


4、資料控制語言(DCL)

資料控制語言 (Data Control Language, DCL) 是一種可對資料訪問權進行控制的指令,它可以控制特定使用者賬戶對資料表、檢視錶、預存程式、使用者自定義函式等資料庫物件的控制權。


DCL以控制使用者的訪問許可權為主,因此其指令作法並不複雜,可利用 DCL 控制的許可權有:Connect、Select、Insert、Update、Delete、Execute、Usage、References。


DCL 的核心指令是 Grant、Revoke。


舉例說明SQL語句的句法:

選擇:select * from table1 where

插入:insert into table1(field1,field2) values(value1,value2)

刪除:delete from table1 where

更新:update table1 set field1=value1 where


對於初學者來說,熟悉這些常用的SQL命令集,沒有捷徑可走,只能透過大量實操加深理解和記憶。


四、SQL高階學習哪些

熟悉以上這些,初學者算是把SQL的基礎知識大部分都掌握了,勤奮練習應該可以完成日常簡單的取數需求了。


但是,更高階的SQL語句仍然需要不斷最佳化。同樣一個需求,高手寫的SQL語句只掃描了2萬行資料,但是初學者寫的需要掃描20萬行,甚至資料量大到直接把系統卡死了。這一定不是最優的SQL語句。


所謂的SQL最佳化,就是指將一條SQL寫的更加簡潔,讓SQL的執行速度更快,易讀性與維護性更好。可見,SQL最佳化是屬於那種沒有最好,只有更好的持續追求。


一個高效的SQL語句抵得上千軍萬馬,這話雖然有點誇張,但是也充分說明了SQL最佳化的重要價值。隨著企業業務量逐漸增多,需求複雜度增大,SQL的執行效率對程式的執行效率的影響逐漸增大。


企業內部會做評估,相對於改造程式碼,最佳化SQL語句哪個成本最低。顯然,大部分情況下SQL最佳化是常態化的要求。舉個簡單的例子,假如某個介面出現了效能問題,需要做最佳化,你會優先考慮改造原始碼,還是先試試最佳化SQL語句。


初學者還是需要記牢一些常見的SQL最佳化策略。


例如,避免使用Select *:實際業務場景中不需要所有的欄位,儘量精確選擇需要的欄位;用union all 代替union:因為union會排重,排重過程需要遍歷,排序,比較,更消耗CPPU資源;控制索引數量:索引不是越多越好,索引需要額外的儲存空間,B+樹儲存索引,額外的效能消耗。


網上有很多牛人分析的SQL最佳化的經驗,大家可以定期去學習啟用。


五、SQL學習哪些輔助工具

工欲善其事,必先利其器。


在初學者打算投入到SQL學習之前,先要選擇更利於學習的輔助工具,其中兩個事情最為重要:一個選擇一款資料庫,第二是選擇一款適合的SQL工具。


1,選擇一個最容易獲取的資料庫

資料庫,其實說全程是資料庫管理系統DBMS。目前比較常見並且企業用到多的主流關聯式資料庫有:MySQL、PostgreSQL、Oracle、SQL Server等。


其中,以開源關係型資料庫MySQL應用最為廣泛,幾乎適用所有規模的公司業務場景,而且也比較容易獲取。


2,選擇一個免費易用的SQL工具

在很多高手喜歡使用資料庫自帶的SQL命令列,理由是習慣了命令列,省去下載破解版或免費版的安裝配置過程。但是,對於初學者來說,為了更方便直觀地學習SQL,還是選一款免費又簡單的圖形化SQL工具。


這裡為初學者推薦一款免費又好用的Web版SQL工具——SQL Studio。


(1)不需要安裝配置JDK環境,支援一鍵啟用;


(2)學習更直觀更容易上手,操作更靈活更方便;

(3)支援多種資料庫的查詢、開發、管理等功能;


(4)支援團隊線上協作開發和統一許可權管理;


(5)支援任意瀏覽器執行,而且支援區域網和外網遠端訪問;


(6)數千萬行資料的秒級匯出以及數萬張表的建立,而系統不會出現卡死或閃退的情況;


(7)支援主流資料來源包括PostgreSQL、MySQL、SQLite、SQL Server、Oracle、達夢、人大金倉等;

(8)支援中英文兩種語言,可以執行在Windows、MacOS、Linux等三種作業系統上。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31490593/viewspace-2936321/,如需轉載,請註明出處,否則將追究法律責任。

相關文章