關于SQL——除了刷題還需要準備什么

? ? ? ?說起SQL何暮,是數(shù)分崗位的必備技能之一了裤园。常見的考察SQL的方式主要是:

(1)筆試階段彼乌,網(wǎng)上答題泻肯。包括PDD,攜程慰照,網(wǎng)易在內很多公司都會在筆試的時候來幾個SQL作為篩選條件灶挟。網(wǎng)上答題的時候很有可能遇到變態(tài)的題目……只能多搜搜這些公司在往年筆試時候出題內容,然后進行針對性的準備了毒租。

(2)現(xiàn)場面試寫代碼稚铣。在面試小紅書,網(wǎng)易的時候墅垮,面試官也會現(xiàn)場抽出幾道SQL題讓你寫代碼√枰剑現(xiàn)場寫代碼不會遇到太難的題目,一般窗口函數(shù)排個序可以搞定算色,再難點也就是求中位數(shù)抬伺、眾數(shù)這些。

(3)遠程面試口述語法灾梦。像蘑菇街峡钓,趣頭條齐鲤,招銀網(wǎng)絡科技等等,是在遠程面試(或者電面)的時候隨便問起SQL常見的語法椒楣。以我的經(jīng)驗來看给郊,電面的考察側重于提問相似函數(shù)的不同點,畢竟讓你口述一段代碼也不現(xiàn)實……

其實不論是哪種考察模式捧灰,基本看完《SQL必知必會》淆九,然后在牛客刷完在線SQL題就能夠解決70%的問題了毛俏。那剩下的30%是什么呢炭庙?

? ——剩下的30%是對語法進行總結,避免陷入因為長時間不寫而忘記的尷尬境地……也避免對某些函數(shù)進行混淆……

那我就直接放上來文字版了煌寇,主要是針對我在面試中被問到的一些常見函數(shù)用法以及混淆點做了簡單總結(敲重點焕蹄,不是所有常見的語法啦,只是我面試中被問到最多的哦)阀溶,有事沒事看兩眼腻脏,就當復習咯。

當然银锻,別偷懶永品,重點還是刷題or實習寫代碼

?各種連接方式的區(qū)別?

inner_join:? ?內連接击纬,根據(jù)兩個表共有的列來匹配其中的行鼎姐,強調只有兩個表共有的列值對應的行才能匹配出來。

left join/right join/all join:?(左更振,右炕桨,全)外連接,以left join 為例肯腕,如果指定了需要匹配的列名献宫,無論右表對應行是否包含滿足連接條件的數(shù)據(jù),左表的數(shù)據(jù)都會提取出來乎芳,則結果會將右表的這些值以空值的形式匹配進來遵蚜。

cross join:? ?交叉連接,結果是笛卡爾積奈惑,就是第一個表符合查詢條件的行數(shù)乘以第二個表符合查詢條件的行數(shù)。

索引的作用睡汹?

索引是為了提高數(shù)據(jù)庫查詢數(shù)據(jù)的速度而增加的標志符號(通過創(chuàng)建唯一性索引肴甸,可以保證表中每一行數(shù)據(jù)的唯一性)。索引主要建立在①經(jīng)常搜索的列囚巴;②主鍵所在列原在;③外鍵所在列

索引包括聚集索引與非聚集索引友扰,它們的區(qū)別在于索引記錄的順序與表記錄的順序是否一致。

聚集索引:? ? 可以理解為索引記錄的順序與表記錄的順序一致庶柿,SQL默認在依次遞增的主鍵上建立聚集索引村怪,例如,id為1的數(shù)據(jù)在第一條浮庐,id為2的數(shù)據(jù)在第二條甚负。聚集索引會按照主鍵的順序來排序。(例如审残,用字典找字梭域,對于認識的字可以通過拼音排序對應正文找到頁碼)

非聚集索引:? ? 可以理解數(shù)據(jù)存儲在一個地方,索引指向數(shù)據(jù)存儲的位置搅轿,索引的順序與表中數(shù)據(jù)記錄的順序不一定一致病涨。例如說,建立數(shù)據(jù)表登記學生考試成績璧坟,字段包括姓名既穆,學號與分數(shù)。假定該表按照成績排序雀鹃、學號信息錯亂循衰,可以考慮構建非聚集索引,第一名對應1褐澎,第二名對應2……会钝,想要提取第10個學生的學號,查找索引10指向的數(shù)據(jù)即可工三。(用字典找字迁酸,不認識的字可以采用部首結合筆畫等信息在檢字表中搜索,找到頁碼俭正。比如查"張"字奸鬓,檢字表中"張"的頁碼是60頁,檢字表中"張"的上面是"馳"字掸读,但頁碼卻是100頁串远,"張"的下面是"弩"字,頁面是200頁儿惫。很顯然澡罚,在正文里面這些字并不是真正的分別位于"張"字的上下方,而檢字表中連續(xù)的"馳肾请、張留搔、弩"三字實際上就是他們在非聚集索引中的排序)

(關于聚集索引和非聚集索引的區(qū)別可以百度學習下,我記得好幾家面試都直接問了……)

▼排名函數(shù)與排序函數(shù)铛铁?

? ? ?排序函數(shù):order by?(默認asc升序隔显,指定desc降序)却妨,例如將表格數(shù)據(jù)按照考試成績從低到高排序。

排名函數(shù):rank, dense rank, row number?括眠,得到的成績的排序后彪标,根據(jù)成績的高低對學生排名,100分對應第一名掷豺,99分第二名捞烟。它們的區(qū)別在于:

row number:??根據(jù)成績排序生成連續(xù)的序列號,1,2,3,4,5……

rank:和row number 不同萌业,rank 考慮了相同分數(shù)學生的排名問題坷襟。如第一名100分,第2名兩個人并列99分生年,那么98分的同學排名第四婴程。

dense rank:? ??和rank的區(qū)別在于,同樣考慮了分區(qū)內的排名抱婉,但dense rank的輸出結果是連續(xù)的档叔。如第一名100分,第2名兩個人并列99分蒸绩,那么98分的同學排名第三衙四。

on?和?where?的區(qū)別?

前提:數(shù)據(jù)庫在連接多張表返回記錄時患亿,都會生成一個中間臨時表传蹈。

在內連接中,使用on或者where沒有區(qū)別步藕。

在外連接里惦界,例如使用left join時:

on是在生成臨時表時使用的條件,不管on的條件是否為真咙冗,都會返回左邊表中的全部記錄沾歪。

where條件是在臨時表生成好后,再對臨時表進行過濾的條件雾消。這時已經(jīng)沒有l(wèi)eft join的含義(必須返回左邊表的記錄)了灾搏,條件不為真的就全部過濾掉。

連接多個select立润?

union:連接select狂窑,不允許重復值,而且select的對象要有相同的列以及數(shù)據(jù)類型范删;(例如A表中某字段的數(shù)據(jù)是1,1,2,3,4蕾域,B表中對應的數(shù)據(jù)是(0,0,0,0,0),則提取的數(shù)據(jù)是(1,0到旦;2,0旨巷;3,0;4,0)添忘,也就是說(1,0)這個組合只會出現(xiàn)一次采呐。)

union all:作用同union,但是允許重復值(也就是說,與上面一樣的操作里搁骑,(1,0)這個組合會出現(xiàn)2次)

一般來說如果select 字段大于1個斧吐,用union all比用union速度快,因為union 會將多個結果中重復的數(shù)據(jù)合并仲器,union all則是直接合并

Intersect:??和 union指令類似煤率,intersect也是合并兩個select語句結果的函數(shù)。不同的地方是乏冀, union的處理結果類似于全集?(如果這個值存在于第一個select或者第二個select蝶糯,它就會被選出),而intersect則比較像取出交集?( 值要同時存在于第一個select和第二個select)辆沦。

minus:先找出第一個 select 語句所產生的結果昼捍,然后看這些結果有沒有在第二個 select語句的結果中。最后會輸出第一個select中沒有肢扯,但是第二個select中有的數(shù)據(jù)

▼主鍵和外鍵妒茬?

主鍵是一張表中能夠確定一條記錄的唯一標志(數(shù)據(jù)庫中的一條記錄中有若干個屬性,若其中某一個屬性組(注意是組)能唯一標識一條記錄蔚晨,該屬性組就可以成為一個主鍵?)乍钻,比如身份證號。

外鍵用于和另一張表進行關聯(lián)铭腕。例如银择,A字段是A表的主鍵,那么出現(xiàn)在B表中的A字段能夠作為B表的外鍵谨履,實現(xiàn)A,B表的連接查詢欢摄。

▼向表中插入數(shù)據(jù)?

insert into tablename?values:???普通插入數(shù)據(jù)模式

insert or ignore into:??如果沒有則插入數(shù)據(jù)笋粟,如果有則忽略

insert or replace into:??如果不存在就插入怀挠,存在就更新

▼刪除表中數(shù)據(jù)?

delete ?:??刪除表中數(shù)據(jù)害捕,可以指定具體數(shù)據(jù)(where)

drop column/ drop table :? ? 刪除列數(shù)據(jù)绿淋,與delete 不同,drop函數(shù)會將數(shù)據(jù)以及表的結構全部刪除尝盼。

truncate:僅刪除數(shù)據(jù)吞滞,且默認刪除所有數(shù)據(jù)。和delete不同,truncate不能用where進行篩選裁赠,但刪除速度比delete快

▼字符串常見操作函數(shù)殿漠?

concat():? ??將多個字符串連接成一個字符串,連接符用“”包起來

concat_ws()佩捞;?將多個字符串連接成一個字符串绞幌,在最開始的位置指定連接符(指定一次即可)

group concat():? ??將group by產生的同一個分組中的值連接起來,返回一個字符串一忱。

like():? ? ?需要與通配符一起使用('%'代表任意字符出現(xiàn)任意次數(shù)莲蜘;'_'僅能匹配單個字符)

substr():? ? ?用于從字段中提取相應位置的字符。

regexp()?:? ?正則表達式匹配函數(shù)

▼?In/exist的聯(lián)系與區(qū)別

子查詢過程中帘营,In和exist函數(shù)效率比較:

當進行連接的兩個表大小相似票渠,效率差不多;

如果子查詢的內表更大芬迄,則exist的效率更高(exist先查詢外表问顷,然后根據(jù)外表中的每一個記錄,分別執(zhí)行exist語句判斷子查詢的內表是否滿足條件薯鼠,滿足條件就返回ture)择诈。

如果子查詢的內表小,則in的效率高(in在查詢的時候出皇,首先查詢子查詢的表羞芍,然后將內表和外表做一個笛卡爾積 (表中的每一行數(shù)據(jù)都能夠任意組合A表有a行,B表有b行郊艘,最后會輸出a*b行)荷科,然后按照條件進行篩選。所以相對內表比較小的時候纱注,in的速度較快)畏浆。

Exist的原理:?使用exist時,若子查詢能夠找到匹配的記錄狞贱,則返回true刻获,外表能夠提取查詢數(shù)據(jù);使用 not exist 時瞎嬉,若子查詢找不到匹配記錄蝎毡,則返回true,外表能夠提取查詢數(shù)據(jù)氧枣。

近一年的工作中也攢下了不少的經(jīng)驗沐兵,準備在公眾號慢慢整理數(shù)據(jù)分析方向校招的知識點和準備方式,目前想好的內容主要是:

【1】費米估算問題(已完成)

【2】業(yè)務場景題(已完成)

【3】AB實驗和假設檢驗(已完成)

【4】應屆生-數(shù)據(jù)分析方向自我介紹怎么準備(已完成)

【5】面試常見的SQL語法

【6】不懂算法但害怕面試中問到怎么辦

【7】如何在面試中展示數(shù)據(jù)分析報告或者項目

【8】我的自我剖析文檔有什么內容

………………

關注公眾號回復“數(shù)據(jù)”即可收到一波我整理的pdf電子書便监,包括

1.精益數(shù)據(jù)分析

2.增長黑客

3.數(shù)據(jù)化管理

4.統(tǒng)計數(shù)字會撒謊

5.growing io出品的互聯(lián)網(wǎng)第一本數(shù)據(jù)分析手冊

等等

想要書或者想跟進的可以關注我~平時也會更新一些工作中對數(shù)據(jù)分析扎谎、數(shù)據(jù)產品、數(shù)據(jù)可視化的思考,一起交流啦~~~

微信公眾號:阿貍和小兔

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末毁靶,一起剝皮案震驚了整個濱河市胧奔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌老充,老刑警劉巖葡盗,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件螟左,死亡現(xiàn)場離奇詭異啡浊,居然都是意外死亡,警方通過查閱死者的電腦和手機胶背,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門巷嚣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人钳吟,你說我怎么就攤上這事廷粒。” “怎么了红且?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵坝茎,是天一觀的道長。 經(jīng)常有香客問我暇番,道長嗤放,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任壁酬,我火速辦了婚禮次酌,結果婚禮上,老公的妹妹穿的比我還像新娘舆乔。我一直安慰自己岳服,他們只是感情好,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布希俩。 她就那樣靜靜地躺著吊宋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪颜武。 梳的紋絲不亂的頭發(fā)上璃搜,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天,我揣著相機與錄音盒刚,去河邊找鬼腺劣。 笑死,一個胖子當著我的面吹牛因块,可吹牛的內容都是我干的橘原。 我是一名探鬼主播,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼趾断!你這毒婦竟也來了拒名?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤芋酌,失蹤者是張志新(化名)和其女友劉穎增显,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體脐帝,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡同云,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了堵腹。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片炸站。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖疚顷,靈堂內的尸體忽然破棺而出旱易,到底是詐尸還是另有隱情,我是刑警寧澤腿堤,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布阀坏,位于F島的核電站,受9級特大地震影響笆檀,放射性物質發(fā)生泄漏忌堂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一误债、第九天 我趴在偏房一處隱蔽的房頂上張望浸船。 院中可真熱鬧,春花似錦寝蹈、人聲如沸李命。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽封字。三九已至,卻和暖如春耍鬓,著一層夾襖步出監(jiān)牢的瞬間阔籽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工牲蜀, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留笆制,地道東北人。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓涣达,卻偏偏與公主長得像在辆,于是被迫代替她去往敵國和親证薇。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353

推薦閱讀更多精彩內容