接触名词汇总
1.使用關(guān)鍵字 explain
explian關(guān)鍵字詳解
2.group by 和having的區(qū)別
Group By語句從英文的字面意義上理解就是“根據(jù)(by)一定的規(guī)則進(jìn)行分組(Group)”。
作用:通過一定的規(guī)則將一個(gè)數(shù)據(jù)集劃分成若干個(gè)小的區(qū)域,然后針對若干個(gè)小區(qū)域進(jìn)行數(shù)據(jù)處理。
注意:group by 是先排序后分組!
需要注意說明:當(dāng)同時(shí)含有where子句、group by 子句 、having子句及聚集函數(shù)時(shí),執(zhí)行順序如下:
1、執(zhí)行where子句查找符合條件的數(shù)據(jù);
2、使用group by 子句對數(shù)據(jù)進(jìn)行分組;
3、對group by 子句形成的組運(yùn)行聚集函數(shù)計(jì)算每一組的值;
4、最后用having 子句去掉不符合條件的組。
3.case的用法 多用于統(tǒng)計(jì)數(shù)量
THEN后邊的值與ELSE后邊的值類型應(yīng)一致,否則會(huì)報(bào)錯(cuò)
現(xiàn)老師要統(tǒng)計(jì)班中,有多少男同學(xué),多少女同學(xué),并統(tǒng)計(jì)男同學(xué)中有幾人及格,女同學(xué)中有幾人及格,要求用一個(gè)SQL輸出結(jié)果。
SELECT SUM (CASE WHEN STU_SEX = 0 THEN 1 ELSE 0 END) AS MALE_COUNT,SUM (CASE WHEN STU_SEX = 1 THEN 1 ELSE 0 END) AS FEMALE_COUNT,SUM (CASE WHEN STU_SCORE >= 60 AND STU_SEX = 0 THEN 1 ELSE 0 END) AS MALE_PASS,SUM (CASE WHEN STU_SCORE >= 60 AND STU_SEX = 1 THEN 1 ELSE 0 END) AS FEMALE_PASS FROM THTF_STUDENTS4.覆蓋索引:
就是說我select 字段1,字段2,與我建立的符合索引個(gè)數(shù)和順序一致。例如:建的索引 字段一 字段二,查的也是字段一、字段二。理解方式一:就是select 的數(shù)據(jù)列只用從索引中就能夠取得,不必讀取數(shù)據(jù)行,mysql可以利用索引返回select列表中的字段,而不必根據(jù)索引再次讀取數(shù)據(jù)文件,換句話說查詢列要被所建的索引覆蓋,一個(gè)索引包含了(或覆蓋了)滿足查詢結(jié)果的數(shù)據(jù)就叫做覆蓋索引。
注意:如果要使用覆蓋索引,一定要注意select列表中只取出需要的列,不可select * ,因?yàn)槿绻麑⑺凶侄我黄鹱鏊饕龝?huì)導(dǎo)致索引文件過大,查詢性能下降。索引的字段不只包含查詢列,還需要包含查詢條件、排序等。
5.聚簇索引 非聚簇索引以及回表
聚集索引
聚集索引即索引結(jié)構(gòu)和數(shù)據(jù)一起存放的索引。主鍵索引屬于聚集索引。
在 Mysql 中,InnoDB 引擎的表的 .ibd文件就包含了該表的索引和數(shù)據(jù),對于 InnoDB
引擎表來說,該表的索引(B+樹)的每個(gè)非葉子節(jié)點(diǎn)存儲(chǔ)索引,葉子節(jié)點(diǎn)存儲(chǔ)索引和索引對應(yīng)的數(shù)據(jù)。
聚集索引的優(yōu)點(diǎn) 聚集索引的查詢速度非常的快,因?yàn)檎麄€(gè)B+樹本身就是一顆多叉平衡樹,葉子節(jié)點(diǎn)也都是有序的,定位到索引的節(jié)點(diǎn),就相當(dāng)于定位到了數(shù)據(jù)。
聚集索引的缺點(diǎn)
依賴于有序的數(shù)據(jù) :因?yàn)?B+樹是多路平衡樹,如果索引的數(shù)據(jù)不是有序的,那么就需要在插入時(shí)排序,如果數(shù)據(jù)是整型還好,否則類似于字符串或 UUID
這種又長又難比較的數(shù)據(jù),插入或查找的速度肯定比較慢。
更新代價(jià)大 : 如果對索引列的數(shù)據(jù)被修改時(shí),那么對應(yīng)的索引也將會(huì)被修改,
而且況聚集索引的葉子節(jié)點(diǎn)還存放著數(shù)據(jù),修改代價(jià)肯定是較大的, 所以對于主鍵索引來說,主鍵一般都是不可被修改的。
非聚集索引
非聚集索引即索引結(jié)構(gòu)和數(shù)據(jù)分開存放的索引。
二級(jí)索引屬于非聚集索引。
MYISAM 引擎的表的.MYI 文件包含了表的索引, 該表的索引(B+樹)的每個(gè)葉子非葉子節(jié)點(diǎn)存儲(chǔ)索引,
葉子節(jié)點(diǎn)存儲(chǔ)索引和索引對應(yīng)數(shù)據(jù)的指針,指向.MYD 文件的數(shù)據(jù)。
非聚集索引的葉子節(jié)點(diǎn)并不一定存放數(shù)據(jù)的指針, 因?yàn)槎?jí)索引的葉子節(jié)點(diǎn)就存放的是主鍵,根據(jù)主鍵再回表查數(shù)據(jù)。
非聚集索引的優(yōu)點(diǎn)
更新代價(jià)比聚集索引要小 。非聚集索引的更新代價(jià)就沒有聚集索引那么大了,非聚集索引的葉子節(jié)點(diǎn)是不存放數(shù)據(jù)的
非聚集索引的缺點(diǎn)
跟聚集索引一樣,非聚集索引也依賴于有序的數(shù)據(jù)
可能會(huì)二次查詢(回表) :這應(yīng)該是非聚集索引最大的缺點(diǎn)了。
當(dāng)查到索引對應(yīng)的指針或主鍵后,可能還需要根據(jù)指針或主鍵再到數(shù)據(jù)文件或表中查詢。
6.DWD ODS數(shù)據(jù)倉庫
[數(shù)據(jù)倉庫]分層概念,ODS,DM,DWD,DWS,DIM的概念
7.curl命令
8.CAP理論
CAP理論詳解
9.git命令總結(jié)
10.動(dòng)態(tài)語言和靜態(tài)語言的區(qū)別
動(dòng)態(tài)類型語言:在運(yùn)行期進(jìn)行類型檢查的語言,也就是在編寫代碼的時(shí)候可以不指定變量的數(shù)據(jù)類型,比如Python和Ruby
靜態(tài)類型語言:它的數(shù)據(jù)類型是在編譯期進(jìn)行檢查的,也就是說變量在使用前要聲明變量的數(shù)據(jù)類型,這樣的好處是把類型檢查放在編譯期,提前檢查可能出現(xiàn)的類型錯(cuò)誤,典型代表C/C++和Java、
11.thrift的安裝,thrift接口是什么
12.mysql刷盤機(jī)制 樂觀鎖 悲觀鎖的區(qū)別
13.mysql存儲(chǔ)數(shù)據(jù)為什么使用頁進(jìn)行存儲(chǔ) 和操作系統(tǒng)的頁有什么區(qū)別
14.http為什么在應(yīng)用層層面是同步的但是在操作系統(tǒng)層面是異步的
15.UUID的作用
16.service層和dao層區(qū)別
Service是業(yè)務(wù)層,Dao是數(shù)據(jù)訪問層,這樣的分層是基于MVC架構(gòu)來說的。
Dao層:全稱為data access object,屬于一種bai比較底層,比較基礎(chǔ)的操作,具體到對于某個(gè)表、某個(gè)實(shí)體的增刪改查
Service層:被稱為服務(wù),肯定是相比之下比較高層次的一層結(jié)構(gòu),相當(dāng)于將幾種操作封裝起來。
具體起來,Dao的作用是封裝對數(shù)據(jù)庫的訪問:增刪改查,不涉及業(yè)務(wù)邏輯,只是達(dá)到按某個(gè)條件獲得指定數(shù)據(jù)的要求;
而Service,則是專注業(yè)務(wù)邏輯,對于其中需要的數(shù)據(jù)庫操作,都通過Dao去實(shí)現(xiàn)。
17.mvc三層架構(gòu)
MVC是一種使用設(shè)計(jì)創(chuàng)建 Web 應(yīng)用程序的。
Model(數(shù)據(jù)訪問層)(模型)表示應(yīng)用程序核心(比如數(shù)據(jù)庫記錄列表)。
View(表示層)(視圖)顯示數(shù)據(jù)(數(shù)據(jù)庫記錄)。
Controller(業(yè)務(wù)邏輯層)(控制器)處理輸入(寫入數(shù)據(jù)庫記錄)請求數(shù)據(jù)和轉(zhuǎn)發(fā)到視圖
三層架構(gòu)分為:表現(xiàn)層(UI)(web層)、業(yè)務(wù)邏輯層(BLL)(service層)、數(shù)據(jù)訪問層(DAL)(dao層) ,再加上實(shí)體類庫(Model)
1.實(shí)體類庫(Model),在Java中,往往將其稱為Entity實(shí)體類。數(shù)據(jù)庫中用于存放數(shù)據(jù),而我們通常選擇會(huì)用一個(gè)專門的類來抽象出數(shù)據(jù)表的結(jié)構(gòu),類的屬性就一對一的對應(yīng)這表的屬性。
·一般來說,Model實(shí)體類庫層需要被DAL層,BIL層和UI層引用。
2.數(shù)據(jù)訪問層(DAL),主要是存放對數(shù)據(jù)類的訪問,即對數(shù)據(jù)庫的添加、刪除、修改、更新等基本操作
·DAL就是根據(jù)業(yè)務(wù)需求,構(gòu)造SQL語句,構(gòu)造參數(shù),調(diào)用幫助類,獲取結(jié)果,DAL層被BIL層調(diào)用
3.業(yè)務(wù)邏輯層(BLL)
·BLL層好比是橋梁,將UI表示層與DAL數(shù)據(jù)訪問層之間聯(lián)系起來。所要負(fù)責(zé)的,就是處理涉及業(yè)務(wù)邏輯相關(guān)的問題,比如在調(diào)用訪問數(shù)據(jù)庫之前,先處理數(shù)據(jù)、判斷數(shù)據(jù)。
18.動(dòng)態(tài)編譯和靜態(tài)編譯
靜態(tài)編譯與動(dòng)態(tài)編譯的區(qū)別:
1、動(dòng)態(tài)編譯的可執(zhí)行文件需要附帶一個(gè)的動(dòng)態(tài)鏈接庫,在執(zhí)行時(shí),需要調(diào)用其對應(yīng)動(dòng)態(tài)鏈接庫中的命令。
所以其優(yōu)點(diǎn)一方面是縮小了執(zhí)行文件本身的體積,另一方面是加快了編譯速度,節(jié)省了系統(tǒng)資源。
缺點(diǎn)一是哪怕是很簡單的程序,只用到了鏈接庫中的一兩條命令,也需要附帶一個(gè)相對龐大的鏈接庫;二是如果其他計(jì)算機(jī)上沒有安裝對應(yīng)的運(yùn)行庫,則用動(dòng)態(tài)編譯的可執(zhí)行文件就不能運(yùn)行。
2、靜態(tài)編譯就是編譯器在編譯可執(zhí)行文件的時(shí)候,將可執(zhí)行文件需要調(diào)用的對應(yīng)動(dòng)態(tài)鏈接庫(.so)中的部分提取出來,鏈接到可執(zhí)行文件中去,使可執(zhí)行文件在運(yùn)行的時(shí)候不依賴于動(dòng)態(tài)鏈接庫。所以其優(yōu)缺點(diǎn)與動(dòng)態(tài)編譯的可執(zhí)行文件正好互補(bǔ)。
靜態(tài)編譯:在編譯時(shí)確定類型,綁定對象,即通過。
動(dòng)態(tài)編譯:運(yùn)行時(shí)確定類型,綁定對象。
動(dòng)態(tài)編譯最大限度發(fā)揮了java的靈活性,體現(xiàn)了多態(tài)的應(yīng)用,有以降低類之間的藕合性。
java中的反射就是運(yùn)用了動(dòng)態(tài)編譯創(chuàng)建對象。
19.git命令rebase和merge的區(qū)別
總結(jié)
- 上一篇: POJ1008:玛雅日历
- 下一篇: [MapReduce] Counter