常見SQL筆試題及完整答案_第1頁
常見SQL筆試題及完整答案_第2頁
常見SQL筆試題及完整答案_第3頁
常見SQL筆試題及完整答案_第4頁
常見SQL筆試題及完整答案_第5頁
已閱讀5頁,還剩3頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

常見SQL筆試題及完整答案考試時間:______分鐘總分:______分姓名:______一、單項(xiàng)選擇題1.在SQL查詢中,如果要查詢一個表中不重復(fù)的記錄數(shù),應(yīng)該使用的關(guān)鍵字是()。A.UNIQUEB.DISTINCTC.GROUPBYD.LIMIT2.在SQL語句中,判斷一個字段是否為NULL,正確的寫法是()。A.salary=NULLB.salary!=NULLC.salaryISNULLD.salaryISNOTNULL3.下列關(guān)于SQL中`WHERE`子句和`HAVING`子句的區(qū)別描述正確的是()。A.`WHERE`子句用于過濾分組后的數(shù)據(jù),`HAVING`子句用于過濾原始數(shù)據(jù)B.`WHERE`子句在分組之前執(zhí)行,`HAVING`子句在分組之后執(zhí)行C.`WHERE`子句不能與聚合函數(shù)一起使用,而`HAVING`可以D.`WHERE`子句可以作用于任何字段,而`HAVING`只能作用于分組后的聚合列4.使用`LEFTJOIN`進(jìn)行多表查詢時,如果左表的記錄在右表中沒有匹配項(xiàng),結(jié)果中會出現(xiàn)()。A.右表的所有列都為NULLB.右表的所有列都為0或空字符串C.左表的記錄被過濾掉,不顯示D.左表的記錄保留,右表的列顯示為NULL5.需要對某個部門內(nèi)的員工按工資從高到低進(jìn)行排名,要求并列名次的員工排名不跳躍(例如:1,2,2,4),應(yīng)該使用以下哪個窗口函數(shù)()。A.ROW_NUMBER()B.RANK()C.DENSE_RANK()D.LEAD()6.在SQL查詢語句`SELECT*FROMtable1t1INNERJOINtable2t2ONt1.id=t2.idWHEREt1.status=1`中,`INNERJOIN`的含義是()。A.只返回兩個表中匹配的行B.返回左表的所有行,即使右表沒有匹配C.返回右表的所有行,即使左表沒有匹配D.返回兩個表中所有可能的組合7.關(guān)于子查詢,下列說法錯誤的是()。A.子查詢可以嵌套在SELECT、INSERT、UPDATE、DELETE語句中B.子查詢通常放在圓括號中C.子查詢只能返回單行單列的數(shù)據(jù)D.子查詢可以與EXISTS、IN、ANY等關(guān)鍵字一起使用8.下列SQL語句中,能夠正確查出`employees`表中工資大于10000的員工姓名的是()。A.SELECTnameFROMemployeesWHEREsalary>10000B.SELECTnameFROMemployeesGROUPBYsalary>10000C.SELECTnameFROMemployeesHAVINGsalary>10000D.SELECTnameFROMemployeesORDERBYsalary>10000二、多項(xiàng)選擇題1.以下哪些是SQL查詢語句中必須包含的子句?()A.SELECTB.FROMC.WHERED.GROUPBYE.HAVINGF.ORDERBY2.在多表連接查詢中,以下哪些連接類型會保留左表(或主表)中不滿足連接條件的記錄?()A.INNERJOINB.LEFTJOINC.RIGHTJOIND.FULLJOINE.CROSSJOIN3.下列哪些聚合函數(shù)可以同時處理包含NULL值的列?()A.COUNT(*)B.COUNT(column)C.SUM(column)D.AVG(column)E.MAX(column)4.關(guān)于`LIMIT`或`TOP`關(guān)鍵字的使用,以下說法正確的有()。A.用于限制返回的行數(shù)B.通常用于分頁查詢C.`LIMIT5,10`表示從第5條記錄開始,取10條記錄D.位置必須在`WHERE`子句之后5.以下哪些操作會改變表中的數(shù)據(jù)?()A.SELECTB.INSERTC.UPDATED.DELETEE.TRUNCATE三、簡答題與代碼題1.請寫出SQL語句,查詢出`students`表中每個專業(yè)的學(xué)生人數(shù),并要求按照學(xué)生人數(shù)從高到低排序,只顯示人數(shù)大于1的專業(yè)。2.請寫出SQL語句,查找出`orders`表中,下單金額(amount)最高的前3條訂單記錄,要求顯示訂單編號、用戶ID和下單金額。3.已知表結(jié)構(gòu)如下:-`users`表包含字段:`id`,`name`,`department_id`-`departments`表包含字段:`id`,`department_name`現(xiàn)要求查詢出所有員工及其所屬部門的名稱。如果某個員工沒有分配部門(即`department_id`為NULL),也要在結(jié)果中顯示該員工,部門名稱顯示為"無部門"。4.請解釋`ROW_NUMBER()`、`RANK()`和`DENSE_RANK()`三個函數(shù)在處理并列排名時的區(qū)別。一、單項(xiàng)選擇題1.B解析:`UNIQUE`是數(shù)據(jù)庫約束關(guān)鍵字,用于限制列值的唯一性,不是查詢關(guān)鍵字。`DISTINCT`用于去除結(jié)果集中的重復(fù)行。`GROUPBY`用于分組,`LIMIT`用于限制結(jié)果集返回的行數(shù)。2.D解析:在SQL中,不能使用`=`或`!=`來判斷NULL值,因?yàn)镹ULL表示未知或無值。判斷NULL必須使用`ISNULL`或`ISNOTNULL`。3.B解析:`WHERE`子句在分組(`GROUPBY`)之前執(zhí)行,用于過濾原始行;`HAVING`子句在分組之后執(zhí)行,用于過濾聚合后的分組結(jié)果。選項(xiàng)A說法錯誤,`HAVING`用于過濾分組后的數(shù)據(jù)。選項(xiàng)C說法錯誤,`WHERE`也可以包含聚合函數(shù)(如`WHEREsalary>1000`),只是它是在聚合之前過濾。選項(xiàng)D說法錯誤,`HAVING`也可以作用于非聚合列(如`HAVINGdepartment_id=10`),雖然較少見,但語法上是允許的。4.D解析:`LEFTJOIN`(左連接)會保留左表中的所有記錄,即使右表中沒有匹配項(xiàng),右表的列值在結(jié)果中會顯示為`NULL`。`INNERJOIN`(內(nèi)連接)只返回兩表匹配的記錄。5.C解析:`ROW_NUMBER()`:排名連續(xù),無并列(如1,2,3)。`RANK()`:有并列排名,數(shù)值跳躍(如1,2,2,4)。`DENSE_RANK()`:有并列排名,數(shù)值不跳躍(如1,2,2,3)。題目要求“不跳躍”,故選`DENSE_RANK()`。6.A解析:`INNERJOIN`(內(nèi)連接)僅返回兩個表中滿足連接條件的記錄,即只返回兩表匹配的行。7.C解析:子查詢可以返回單行單列、單行多列、多行單列或多行多列(表結(jié)構(gòu))。選項(xiàng)C說子查詢只能返回單行單列是錯誤的。8.A解析:`WHERE`子句用于過濾行數(shù)據(jù),不能直接跟聚合函數(shù)進(jìn)行過濾。`HAVING`子句用于過濾分組后的聚合結(jié)果。`GROUPBYsalary>10000`語法錯誤。二、多項(xiàng)選擇題1.A,B解析:`SELECT`和`FROM`是SQL查詢語句中絕對必須的子句。`WHERE`、`GROUPBY`、`HAVING`和`ORDERBY`都是可選子句。2.B,C,D解析:`LEFTJOIN`保留左表,`RIGHTJOIN`保留右表,`FULLJOIN`保留兩表所有記錄。`INNERJOIN`只保留匹配的記錄。`CROSSJOIN`產(chǎn)生笛卡爾積。3.A,B,C,D,E解析:`COUNT(*)`統(tǒng)計(jì)所有行數(shù)(包括NULL)。`COUNT(column)`統(tǒng)計(jì)指定列非NULL的行數(shù)。`SUM`、`AVG`、`MAX`、`MIN`在計(jì)算時通常都會忽略NULL值。4.A,B,C解析:`LIMIT`和`TOP`用于限制返回行數(shù),常用于分頁(A、B正確)。`LIMIT5,10`表示跳過前5條,取接下來的10條(C正確)。執(zhí)行順序上,`LIMIT`通常位于`ORDERBY`之后,而`WHERE`位于`LIMIT`之前,因此D選項(xiàng)說法錯誤。5.B,C,D,E解析:`SELECT`是查詢語句(非DML)。`INSERT`、`UPDATE`、`DELETE`、`TRUNCATE`均用于修改表中的數(shù)據(jù)。三、簡答題與代碼題1.SQL語句:```sqlSELECTdepartment_id,COUNT(*)asstudent_countFROMstudentsGROUPBYdepartment_idHAVINGCOUNT(*)>1ORDERBYstudent_countDESC;```解析思路:首先使用`GROUPBYdepartment_id`對學(xué)生按專業(yè)分組;接著使用`HAVINGCOUNT(*)>1`篩選出人數(shù)大于1的分組;最后使用`ORDERBY...DESC`對結(jié)果按人數(shù)降序排列。2.SQL語句:```sqlSELECTorder_id,user_id,amountFROMordersORDERBYamountDESCLIMIT3;```解析思路:首先使用`ORDERBYamountDESC`對訂單金額進(jìn)行降序排序;然后使用`LIMIT3`限制只返回前3條記錄。3.SQL語句:```sqlSELECT,COALESCE(d.department_name,'無部門')asdept_nameFROMuserseLEFTJOINdepartmentsdONe.department_id=d.id;```解析思路:使用`LEFTJOIN`確保保留所有員工記錄;如果`d.department_name`為`NULL`(即員工沒有分配部門),`COALESCE`函數(shù)會將該值替換為字符串'無部門'。4.解析思路:-`ROW_NUMBER()`:它不關(guān)心是否有重復(fù)值,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論