版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
2025年SQL高頻考點沖刺試卷考試時間:______分鐘總分:______分姓名:______一、假設(shè)有一個名為`employees`的表,包含以下列:`employee_id`(INT,主鍵),`first_name`(VARCHAR),`last_name`(VARCHAR),`email`(VARCHAR),`department_id`(INT),`salary`(DECIMAL),`hire_date`(DATE)。請寫出以下查詢的SQL語句:1.查詢所有員工的`first_name`、`last_name`和`email`信息。2.查詢`salary`超過8000的所有員工的`employee_id`和`salary`。3.查詢`department_id`為5的所有員工的`first_name`和`department_id`。4.查詢`hire_date`在'2020-01-01'之后的員工數(shù)量。5.查詢`department_id`為2或4的所有員工的`email`。二、假設(shè)存在兩個表:`orders`(訂單表)和`customers`(客戶表)。`orders`表包含:`order_id`(INT,主鍵),`customer_id`(INT,外鍵關(guān)聯(lián)到`customers`表),`order_date`(DATE),`total_amount`(DECIMAL)。`customers`表包含:`customer_id`(INT,主鍵),`customer_name`(VARCHAR),`city`(VARCHAR)。請寫出以下查詢的SQL語句:1.查詢所有訂單的`order_id`、`customer_id`和`total_amount`,并按`total_amount`降序排列。2.查詢訂單總金額超過10000的所有訂單的`order_id`和對應(yīng)的`customer_id`。3.查詢來自'NewYork'的所有客戶的`customer_id`和`customer_name`。4.查詢每個客戶的訂單總數(shù)和訂單總金額。要求只顯示訂單總數(shù)大于2的客戶信息。5.查詢訂單日期在'2023-06-01'之后的,來自'London'的所有客戶的`customer_id`。三、假設(shè)有一個名為`sales`的表,包含以下列:`sale_id`(INT,主鍵),`product_id`(INT),`sale_date`(DATE),`quantity`(INT),`unit_price`(DECIMAL)。請寫出以下查詢的SQL語句:1.查詢每種產(chǎn)品的總銷售數(shù)量(`total_quantity`)和總銷售金額(`total_sales`)。要求按`product_id`升序排列。2.查詢在'2023-12-01'到'2023-12-31'期間,每種產(chǎn)品的平均銷售單價(`average_unit_price`)。3.查詢銷售數(shù)量超過50的所有記錄的`sale_id`、`product_id`和`quantity`。4.查詢每種產(chǎn)品的銷售額(`sales_amount`),要求只顯示銷售額(`quantity`*`unit_price`)超過2000的產(chǎn)品。使用窗口函數(shù)完成此查詢。5.查詢每種產(chǎn)品最近一次銷售記錄的`sale_id`和`sale_date`。使用窗口函數(shù)完成此查詢。四、使用以下SQL語句創(chuàng)建一個名為`sales_summary`的視圖,該視圖包含`product_id`、`total_quantity`(產(chǎn)品總銷售數(shù)量)和`total_sales`(產(chǎn)品總銷售金額)。```sqlCREATEVIEWsales_summaryASSELECTproduct_id,SUM(quantity)AStotal_quantity,SUM(quantity*unit_price)AStotal_salesFROMsalesGROUPBYproduct_id;```基于此視圖,請寫出以下查詢的SQL語句:1.查詢視圖`sales_summary`中,`total_sales`超過10000的所有產(chǎn)品的`product_id`和`total_sales`。2.查詢視圖`sales_summary`中,`total_quantity`最多的前3個產(chǎn)品的`product_id`和`total_quantity`。3.刪除剛才創(chuàng)建的`sales_summary`視圖。五、假設(shè)有一個名為`products`的表,包含以下列:`product_id`(INT,主鍵),`product_name`(VARCHAR),`category`(VARCHAR),`price`(DECIMAL),`description`(TEXT)。請寫出以下查詢的SQL語句:1.查詢所有產(chǎn)品信息,并按`category`分組,統(tǒng)計每個分類的產(chǎn)品數(shù)量(`count`)。2.查詢價格在50到200之間的所有產(chǎn)品的`product_id`和`product_name`。3.為所有產(chǎn)品價格增加10%。4.查詢產(chǎn)品描述中包含'wireless'的所有產(chǎn)品的`product_id`和`product_name`。5.創(chuàng)建一個新表`products_backup`,結(jié)構(gòu)與`products`表完全相同,并將`products`表中的所有數(shù)據(jù)復(fù)制到`products_backup`中。六、請解釋以下概念:1.什么是`INNERJOIN`?它與`LEFTJOIN`有什么主要區(qū)別?2.什么是事務(wù)(Transaction)?請簡述事務(wù)的ACID特性。3.什么是索引(Index)?在什么情況下使用索引可以提高查詢性能?請舉例說明。試卷答案一、1.```sqlSELECTfirst_name,last_name,emailFROMemployees;```*解析思路:直接列出需要查詢的列(`first_name`,`last_name`,`email`),從`employees`表中檢索。2.```sqlSELECTemployee_id,salaryFROMemployeesWHEREsalary>8000;```*解析思路:選擇`employee_id`和`salary`列,從`employees`表中篩選出`salary`值大于8000的記錄。3.```sqlSELECTfirst_name,department_idFROMemployeesWHEREdepartment_id=5;```*解析思路:選擇`first_name`和`department_id`列,從`employees`表中篩選出`department_id`值等于5的記錄。4.```sqlSELECTCOUNT(*)FROMemployeesWHEREhire_date>'2020-01-01';```*解析思路:使用`COUNT(*)`聚合函數(shù)計算滿足條件(`hire_date`在'2020-01-01'之后)的記錄總數(shù)。需要指定從`employees`表中統(tǒng)計。5.```sqlSELECTemailFROMemployeesWHEREdepartment_idIN(2,4);```*解析思路:選擇`email`列,從`employees`表中篩選出`department_id`值為2或4的記錄。使用`IN`子句簡化多值條件查詢。二、1.```sqlSELECTorder_id,customer_id,total_amountFROMordersORDERBYtotal_amountDESC;```*解析思路:選擇`orders`表中的`order_id`,`customer_id`,`total_amount`列,使用`ORDERBY`子句按`total_amount`列降序排列結(jié)果。2.```sqlSELECTorder_id,customer_idFROMordersWHEREtotal_amount>10000;```*解析思路:選擇`orders`表中的`order_id`和`customer_id`列,使用`WHERE`子句篩選出`total_amount`大于10000的訂單記錄。3.```sqlSELECTcustomer_id,customer_nameFROMcustomersWHEREcity='NewYork';```*解析思路:選擇`customers`表中的`customer_id`和`customer_name`列,使用`WHERE`子句篩選出`city`值為'NewYork'的客戶記錄。4.```sqlSELECTc.customer_id,COUNT(o.order_id)ASorder_count,SUM(o.total_amount)AStotal_spentFROMcustomerscJOINordersoONc.customer_id=o.customer_idGROUPBYc.customer_idHAVINGCOUNT(o.order_id)>2;```*解析思路:使用`JOIN`將`customers`表(`c`)和`orders`表(`o`)通過`customer_id`關(guān)聯(lián)起來。選擇客戶`customer_id`、訂單數(shù)量(`COUNT(o.order_id)`)和總消費金額(`SUM(o.total_amount)`)。使用`GROUPBY`對每個客戶進行分組。使用`HAVING`子句過濾出訂單數(shù)量(`order_count`)大于2的客戶。5.```sqlSELECTc.customer_idFROMcustomerscJOINordersoONc.customer_id=o.customer_idWHEREo.order_date>'2023-06-01'ANDc.city='London';```*解析思路:使用`JOIN`將`customers`表(`c`)和`orders`表(`o`)通過`customer_id`關(guān)聯(lián)。選擇`customers`表的`customer_id`列。使用`WHERE`子句同時篩選出`orders`表中`order_date`在'2023-06-01'之后的記錄,以及`customers`表中`city`為'London'的記錄。三、1.```sqlSELECTproduct_id,SUM(quantity)AStotal_quantity,SUM(quantity*unit_price)AStotal_salesFROMsalesGROUPBYproduct_idORDERBYproduct_idASC;```*解析思路:使用`SUM()`聚合函數(shù)計算每個`product_id`的總銷售數(shù)量(`total_quantity`)和總銷售金額(`total_sales`=`quantity`*`unit_price`)。使用`GROUPBY`子句按`product_id`分組數(shù)據(jù)。使用`ORDERBY`子句按`product_id`升序排列結(jié)果。2.```sqlSELECTproduct_id,AVG(unit_price)ASaverage_unit_priceFROMsalesWHEREsale_dateBETWEEN'2023-12-01'AND'2023-12-31'GROUPBYproduct_id;```*解析思路:使用`AVG()`聚合函數(shù)計算在指定日期范圍('2023-12-01'到'2023-12-31')內(nèi),每個`product_id`的平均銷售單價(`average_unit_price`)。使用`WHERE`子句限定日期范圍。使用`GROUPBY`子句按`product_id`分組。3.```sqlSELECTsale_id,product_id,quantityFROMsalesWHEREquantity>50;```*解析思路:直接選擇`sale_id`,`product_id`,`quantity`列,從`sales`表中篩選出`quantity`值大于50的記錄。4.```sqlSELECTproduct_id,SUM(quantity*unit_price)ASsales_amountFROMsalesGROUPBYproduct_idHAVINGSUM(quantity*unit_price)>2000;```*解析思路:計算`product_id`的銷售額(`sales_amount`=`quantity`*`unit_price`)。使用`SUM()`聚合函數(shù)計算每個產(chǎn)品的總銷售額。使用`GROUPBY`子句按`product_id`分組。使用`HAVING`子句過濾出總銷售額大于2000的產(chǎn)品。5.```sqlSELECTsale_id,sale_date,ROW_NUMBER()OVER(PARTITIONBYproduct_idORDERBYsale_dateDESC)ASrnFROMsalesWHEREproduct_idIN(SELECTDISTINCTproduct_idFROMsales);```*解析思路:使用窗口函數(shù)`ROW_NUMBER()`。`PARTITIONBYproduct_id`將數(shù)據(jù)按產(chǎn)品分組。`ORDERBYsale_dateDESC`在每個產(chǎn)品組內(nèi)按銷售日期降序排列。`ROW_NUMBER()`為每個組內(nèi)的記錄分配一個唯一的序號(`rn`)。外層查詢選擇`sale_id`和`sale_date`,并通過`WHERE`子句確保每個產(chǎn)品的記錄都被包含在窗口函數(shù)計算中(這里用子查詢確保,實際中可能不需要,因為窗口函數(shù)會處理表內(nèi)所有行)。最后,需要篩選出每個產(chǎn)品組中`rn`為1的記錄,即最新的一條記錄。更簡潔的方式是:```sqlSELECTsale_id,sale_dateFROM(SELECTsale_id,sale_date,ROW_NUMBER()OVER(PARTITIONBYproduct_idORDERBYsale_dateDESC)ASrnFROMsales)ASsubWHEREsub.rn=1;```四、1.```sqlSELECTproduct_id,total_quantity,total_salesFROMsales_summaryWHEREtotal_sales>10000;```*解析思路:直接從名為`sales_summary`的視圖中選擇`product_id`,`total_quantity`,`total_sales`列,并使用`WHERE`子句篩選出`total_sales`大于10000的記錄。2.```sqlSELECTproduct_id,total_quantityFROMsales_summaryORDERBYtotal_quantityDESCLIMIT3;```*解析思路:從`sales_summary`視圖中選擇`product_id`和`total_quantity`列。使用`ORDERBYtotal_quantityDESC`按總數(shù)量降序排列。使用`LIMIT3`簡單地獲取前三條記錄(注意:`LIMIT`的具體語法可能因數(shù)據(jù)庫系統(tǒng)而異,如MySQL使用`LIMIT3`,SQLServer使用`TOP3`)。3.```sqlDROPVIEWsales_summary;```*解析思路:使用`DROPVIEW`語句刪除名為`sales_summary`的視圖。五、1.```sqlSELECTcategory,COUNT(*)AScountFROMproductsGROUPBYcategory;```*解析思路:使用`COUNT(*)`計算每個`category`中的產(chǎn)品數(shù)量。使用`GROUPBYcategory`子句按產(chǎn)品分類進行分組。2.```sqlSELECTproduct_id,product_nameFROMproductsWHEREpriceBETWEEN50AND200;```*解析思路:選擇`product_id`和`product_name`列,從`products`表中篩選出`price`值在50到200范圍內(nèi)的產(chǎn)品記錄。3.```sqlUPDATEproductsSETprice=price*1.10;```*解析思路:使用`UPDATE`語句修改`products`表中的數(shù)據(jù)。將所有產(chǎn)品的`price`列值增加10%,通過`price=price*1.10`實現(xiàn)。4.```sqlSELECTproduct_id,product_nameFROMproductsWHEREdescriptionLIKE'%wireless%';```*解析思路:選擇`product_id`和`product_name`列,從`products`表中篩選出`description`列值中包含子串'wireless'的產(chǎn)品記錄。使用`LIKE'%wireless%'`進行模糊匹配。5.```sqlCREATETABLEproducts_backupASSELECT*FROMproducts;--或者對于SQLServer:--SELECT*INTOproducts_backupFROMproducts;--或者對于Oracle:--CREATETABLEproducts_backupASSELECT*FROMproducts;```*解析思路:使用`CREATETABLE`語句創(chuàng)建一個新表`products_backup`。通過`SELECT*FROMproducts`將`products`表中的所有列和所有數(shù)據(jù)選取出來,并作為`CREATETABLE`語句的數(shù)據(jù)源,從而創(chuàng)建結(jié)構(gòu)相同并包含數(shù)據(jù)的新表。六、1.`INNERJOIN`是一種連接兩個或多個表的方式,它僅返回所有連接條件都滿足的記錄的交集。換句話說,結(jié)果集中只會包含那些在所有參與連接的表中都有匹配鍵(通過`ON`子句指定的條件)的行。如果某一行在某個表中沒有匹配的行,則該行不會出現(xiàn)在結(jié)果集中。與`LEFTJOIN`的主要區(qū)別在于,`LEFTJOIN`(左連接)會返回左邊表(在`FROM`子句中列出的第一個表)的所有記錄,即使右邊表中沒有匹配的行,對于右邊表中沒有匹配的行,其對應(yīng)列將填充`
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025下半年四川綿陽市事業(yè)單位選調(diào)工作人員25人模擬筆試試題及答案解析
- 《美麗的田園》數(shù)學(xué)課件教案
- 2026云上(貴州)數(shù)據(jù)開發(fā)有限公司第一次社會招聘18人備考考試題庫及答案解析
- 《認識百分數(shù)》數(shù)學(xué)課件教案
- 2026年甘肅省蘭州大學(xué)口腔醫(yī)院招聘31人筆試考試參考題庫及答案解析
- 2025云南昆明市第十二中學(xué)教育集團招聘模擬筆試試題及答案解析
- 2025貴州六枝特區(qū)人力資源和社會保障局招聘城鎮(zhèn)公益性崗位2人考試備考題庫及答案解析
- 2025安徽皖新融資租賃有限公司服務(wù)人員招聘崗位核減備考考試試題及答案解析
- 2025貴州水投水庫運營管理黔東南有限公司第二次面向社會招聘2人參考考試題庫及答案解析
- 2025國家應(yīng)急救援科委會綜合能源加注站招聘加油員管理人員2人模擬筆試試題及答案解析
- 家具生產(chǎn)工藝流程標準手冊
- 消防新隊員安全培訓(xùn)課件
- 2025瑪納斯縣司法局招聘編制外專職人民調(diào)解員人筆試備考題庫及答案解析
- 德邦物流系統(tǒng)講解
- 初中歷史時間軸(中外對照橫向版)
- DB3205∕T 1139-2024 巡游出租汽車營運管理規(guī)范
- 醫(yī)藥KA經(jīng)理工作總結(jié)
- 四害消殺員工安全培訓(xùn)課件
- 南京市煙草公司2025秋招市場分析崗位面試模擬題及答案
- 貿(mào)易跟單專業(yè)知識培訓(xùn)課件
- 冠脈痙攣診療新進展
評論
0/150
提交評論