日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

datagrid如何获取一行数据中的某个字段值_SQL中常见的面试题

發(fā)布時間:2024/9/27 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 datagrid如何获取一行数据中的某个字段值_SQL中常见的面试题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

大家在面試數(shù)據(jù)分析崗或其他崗位的時候,時常會被問到一些SQL題,我今天就將常被問到的一些SQL題及答案整理下,給大家做個參考!

案例所使用的表為:

(一)各種連接函數(shù)的區(qū)別?

(1)inner join

內(nèi)連接。返回兩個表的交集。根據(jù)兩個表共有的列來匹配其中的行,強調(diào)只有兩個表中共有的行對應(yīng)的行才能匹配出來。

SELECT

查詢結(jié)果

tips:inner可以省略不寫,可以連接后再去重,但是這么做的話,執(zhí)行下來比較低,我們一般在做表連接之前,先去重。

(2)left join

左連接。以左表為基準(zhǔn),若右表中的對應(yīng)行不滿足條件,則結(jié)果會將右表中的這些值以null的形式匹配進(jìn)來。(right join就是以右表為基準(zhǔn),和left join是相對應(yīng)的)

SELECT

tips:如果需要的是左表獨有的數(shù)據(jù),可以使用where條件來過濾掉為null的值。

(3)cross join

交叉連接,結(jié)果是笛卡爾積,就是第一個表符合查詢條件的行數(shù)乘以第二個表中符合查詢的行數(shù)。

部分截圖

(4)full join(MySQL中沒有,所以我沒實現(xiàn))

全連接。若左表有的數(shù)據(jù),而右表中沒有,而右表中有的數(shù)據(jù),而左表中沒有,這種情況會在結(jié)果中以空值的形式匹配出來。

tips:雖然MySQL中不支持全連接,但是可以使用union all來實現(xiàn)的。


(二)排序窗口函數(shù)?

row_number()、rank()、dense_rank(),這三個函數(shù)的作用都是返回相應(yīng)規(guī)則的排序序號。

(1)row_number()

為查詢出來的每一行記錄都會生成一個序號,依次排序且不會重復(fù)。

語法:row_number() over(partition by 字段1 order by 字段2) # 字段1是分組的字段名稱

(2)rank()

使用rank函數(shù)來生成序號,over子句中排序字段值相同的序號是一樣的,后面字段值不相同的序號將跳過相同的排名排下一個,rank函數(shù)生成的序號有可能是不連續(xù)的,即排名可能為1,1,3,是跳躍式排名,有兩個第一名時接下來就是第三名。

語法:rank() over(partition by 字段1 order by 字段2)

(3)dense_rank()

dense_rank函數(shù)在生成序號時是連續(xù)的,當(dāng)出現(xiàn)相同排名時,將不跳過相同排名號,有兩個第一名時仍跟著第二名,即排名為1,1,2這種。

語法:dense_rank() over(partition by 字段1 order by 字段2)


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

數(shù)據(jù)庫在連接多張表返回記錄的時候,都會生成一個中間臨時表。

(1)內(nèi)連接:使用on或者where沒有區(qū)別,過濾條件放在on或where中,其返回的結(jié)果是一樣的。

(2)外連接(以左連接為例):

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

b. where是在臨時表生成之后,再對臨時表進(jìn)行過濾的條件,這時已經(jīng)沒有l(wèi)eft join的含義了,條件不為真的就全部過濾掉。


(四)主鍵和外鍵的區(qū)別?

(1)主鍵:是一張表中能夠確定一條記錄的唯一標(biāo)志(數(shù)據(jù)庫中的一條記錄中有若干個屬性,若某個屬性組具有唯一標(biāo)識一條記錄的特性,那么該屬性組就可以作為一個主鍵)。

(2)外鍵:用于和另外一張表進(jìn)行關(guān)聯(lián)。例如,A字段是A表中的主鍵,那么出現(xiàn)在B表中的A字段能夠作為B表的外鍵,實現(xiàn)A,B表的連接查詢。


(五)如何連接多個select?

草莓女孩:SQL中如何連接多個select??zhuanlan.zhihu.com

(六)字符串常見操作函數(shù)?

草莓女孩:SQL中的字符串常見操作函數(shù)?zhuanlan.zhihu.com

(七) IN/EXIST的聯(lián)系和區(qū)別?

這部分內(nèi)容我寫在了一個牛客網(wǎng)上的SQL題里了

草莓女孩:??途W(wǎng)每日一練SQL題——使用含有關(guān)鍵字EXISTS查找未分配具體部門的員工的所有信息?zhuanlan.zhihu.com

(八)數(shù)據(jù)傾斜是什么?怎么解決?

大量相同的key被分配到同一個區(qū)內(nèi),一個節(jié)點承受著巨大的壓力,而其他節(jié)點計算完畢后一直在等這個忙碌的節(jié)點,拖累了整體的計算時間,效率非常低。

如何解決?

  • 使用小表在左,大表在右的,使用/ + map join(table) / 連接,假設(shè)表A為小表,B為大表
#
  • 連接之前先用group by去重,盡量避免使用distinct
  • 如果是由空值導(dǎo)致的數(shù)據(jù)傾斜,需要先過濾掉空值

最后,給大家推薦個寫簡歷的好網(wǎng)站wondercv(不是應(yīng)聘設(shè)計類的工作,簡歷模板不用太花哨,重要的是內(nèi)容要豐富),我都是直接在上面修改的,很方便!

超級簡歷?www.wondercv.com

總結(jié)

以上是生活随笔為你收集整理的datagrid如何获取一行数据中的某个字段值_SQL中常见的面试题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。