2023年SQL數(shù)據(jù)庫經(jīng)典面試題修改筆試題有答案_第1頁
2023年SQL數(shù)據(jù)庫經(jīng)典面試題修改筆試題有答案_第2頁
2023年SQL數(shù)據(jù)庫經(jīng)典面試題修改筆試題有答案_第3頁
2023年SQL數(shù)據(jù)庫經(jīng)典面試題修改筆試題有答案_第4頁
2023年SQL數(shù)據(jù)庫經(jīng)典面試題修改筆試題有答案_第5頁
已閱讀5頁,還剩49頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

28.

數(shù)據(jù)庫:抽出部門,平均工資,規(guī)定按部門的字符串順序排序,不能具有"humanresource"部門,employee結(jié)構(gòu)如下:employee_id,employee_name,depart_id,depart_name,wage答:?selectdepart_name,avg(wage)?fromemployeewheredepart_name<>'humanresource'

groupbydepart_nameorderbydepart_name--------------------------?29.

給定如下SQL數(shù)據(jù)庫:Test(numINT(4))請用一條SQL語句返回num的最小值,但不許使用記錄功能,如MIN,MAX等答:

selecttop1numfromTestorderbynum-------------------------

33.一個數(shù)據(jù)庫中有兩個表:

一張表為Customer,含字段ID,Name;?一張表為Order,含字段ID,CustomerID(連向Customer中ID的外鍵),Revenue;?寫出求每個Customer的Revenue總和的SQL語句。建表createtablecustomer?(IDintprimarykey,Namechar(10))gocreatetable[order]?(IDintprimarykey,CustomerID

intforeignkeyreferencescustomer(id),Revenuefloat)go--查詢?selectCustomer.ID,sum(isnull([Order].Revenue,0))

fromcustomerfulljoin[order]on([order].customerid=customer.id)

groupbycustomer.idselectcustomer.id,sum(order.revener)fromorder,customerwherecustomer.id=customeridgroupbycustomer.idselectcustomer.id,sum(order.revener)fromcustomerfulljoinorderon(order.customerid=customer.id)groupbycustomer.id5數(shù)據(jù)庫(10)at(yī)abelcalled“performance”contain:nameandscore,please用SQL語言表述如何選出score最high的一個(僅有一個)僅選出分?jǐn)?shù),Selectmax(score)fromperformance僅選出名字,即選出名字,又選出分?jǐn)?shù):selecttop1score,namefromperorderbyscoreselectname1,scorefromperwherescorein/=(selectmax(score)fromper).4有關(guān)系s(sno,sname)c(cno,cname)sc(sno,cno,grade)

1問上課程"db"的學(xué)生noselectcount(*)fromc,scwhereame='db'andc.cno=oselectcount(*)fromscwherecno=(selectcnofromcame='db')

2成績最高的學(xué)生號selectsnofromscwheregrade=(selectmax(grade)fromsc)

3每科大于90分的人數(shù)selectc.cname,count(*)fromc,scwherec.cno=oandsc.grade>90groupbyc.cname

selectc.cname,count(*)fromcjoinsconc.cno=sc.cnoandsc.grade>90ame

HYPERLINK""

數(shù)據(jù)庫筆試題

*?建表:

dept:?

deptno(primarykey),dname,loc?emp:?

empno(primarykey),ename,job,mgr,sal,deptno

*/1列出emp表中各部門的部門號,最高工資,最低工資?selectmax(sal)as最高工資,min(sal)as最低工資,deptnofromempgroupbydeptno;2列出emp表中各部門job為'CLERK'的員工的最低工資,最高工資?selectmax(sal)as最高工資,min(sal)as最低工資,deptnoas部門號fromempwherejob='CLERK'groupbydeptno;3對于emp中最低工資小于1000的部門,列出job為'CLERK'的員工的部門號,最低工資,最高工資?selectmax(sal)as最高工資,min(sal)as最低工資,deptnoas部門號fromempasb

wherejob='CLERK'and1000>(selectmin(sal)fromempasawherea.deptno=b.deptno)groupbyb.deptno4根據(jù)部門號由高而低,工資有低而高列出每個員工的姓名,部門號,工資

selectdeptnoas部門號,enameas姓名,salas工資fromemporderbydeptnodesc,salasc5寫出對上題的另一解決方法?(請補充)6列出'張三'所在部門中每個員工的姓名與部門號?selectename,deptnofromempwheredeptno=(selectdeptnofromempwhereename='張三')7列出每個員工的姓名,工作,部門號,部門名

selectename,job,emp.deptno,dept.dnamefromemp,deptwhereemp.deptno=dept.deptno8列出emp中工作為'CLERK'的員工的姓名,工作,部門號,部門名?selectename,job,dept.deptno,dnamefromemp,deptwheredept.deptno=emp.deptnoandjob='CLERK'9對于emp中有管理者的員工,列出姓名,管理者姓名(管理者外鍵為mgr)?selecta.enameas姓名,b.enameas管理者fromempasa,empasbwherea.mgrisnotnullanda.mgr=b.empno10對于dept表中,列出所有部門名,部門號,同時列出各部門工作為'CLERK'的員工名與工作

selectdnameas部門名,dept.deptnoas部門號,enameas員工名,jobas工作fromdept,emp?wheredept.deptno*=emp.deptnoandjob='CLERK'11對于工資高于本部門平均水平的員工,列出部門號,姓名,工資,按部門號排序?selecta.deptnoas部門號,a.enameas姓名,a.salas工資fromempasa

wherea.sal>(selectavg(sal)fromempasbwherea.deptno=b.deptno)orderbya.deptno12對于emp,列出各個部門中平均工資高于本部門平均水平的員工數(shù)和部門號,按部門號排序

selectcount(a.sal)as員工數(shù),a.deptnoas部門號fromempasa?wherea.sal>(selectavg(sal)fromempasbwherea.deptno=b.deptno)groupbya.deptnoorderbya.deptno13對于emp中工資高于本部門平均水平,人數(shù)多與1人的,列出部門號,人數(shù),按部門號排序

selectcount(a.empno)as員工數(shù),a.deptnoas部門號,avg(sal)as平均工資fromempasa

where(selectcount(c.empno)fromempascwherec.deptno=a.deptnoandc.sal>(selectavg(sal)fromempasbwherec.deptno=b.deptno))>1?groupbya.deptnoorderbya.deptno14對于emp中低于自己工資至少5人的員工,列出其部門號,姓名,工資,以及工資少于自己的人數(shù)

selecta.deptno,a.ename,a.sal,(selectcount(b.ename)fromempasbwhereb.sal<a.sal)as人數(shù)fromempasa?where(selectcount(b.ename)fromempasbwhereb.sal<a.sal)>5數(shù)據(jù)庫筆試題及答案第一套一.選擇題1.下面敘述對的的是CCBAD______。A、算法的執(zhí)行效率與數(shù)據(jù)的存儲結(jié)構(gòu)無關(guān)B、算法的空間復(fù)雜度是指算法程序中指令(或語句)的條數(shù)C、算法的有窮性是指算法必須能在執(zhí)行有限個環(huán)節(jié)之后終止D、以上三種描述都不對2.以下數(shù)據(jù)結(jié)構(gòu)中不屬于線性數(shù)據(jù)結(jié)構(gòu)的是______。A、隊列B、線性表C、二叉樹D、棧3.在一棵二叉樹上第5層的結(jié)點數(shù)最多是______。A、8B、16C、32D、154.下面描述中,符合結(jié)構(gòu)化程序設(shè)計風(fēng)格的是______。A、使用順序、選擇和反復(fù)(循環(huán))三種基本控制結(jié)構(gòu)表達程序的控制邏輯B、模塊只有一個入口,可以有多個出口C、注重提高程序的執(zhí)行效率D、不使用goto語句5.下面概念中,不屬于面向?qū)ο蠓椒ǖ氖牵達____。A、對象B、繼承C、類D、過程調(diào)用6.在結(jié)構(gòu)化方法中,用數(shù)據(jù)流程圖(DFD)作為描述工具的軟件開發(fā)階段是___BDBCA___。A、可行性分析B、需求分析C、具體設(shè)計D、程序編碼7.在軟件開發(fā)中,下面任務(wù)不屬于設(shè)計階段的是______。A、數(shù)據(jù)結(jié)構(gòu)設(shè)計B、給出系統(tǒng)模塊結(jié)構(gòu)C、定義模塊算法D、定義需求并建立系統(tǒng)模型8.?dāng)?shù)據(jù)庫系統(tǒng)的核心是______。A、數(shù)據(jù)模型B、數(shù)據(jù)庫管理系統(tǒng)C、軟件工具D、數(shù)據(jù)庫9.下列敘述中對的的是______。A、數(shù)據(jù)庫是一個獨立的系統(tǒng),不需要操作系統(tǒng)的支持B、數(shù)據(jù)庫設(shè)計是指設(shè)計數(shù)據(jù)庫管理系統(tǒng)C、數(shù)據(jù)庫技術(shù)的主線目的是要解決數(shù)據(jù)共享的問題D、數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結(jié)構(gòu)必須與邏輯結(jié)構(gòu)一致10.下列模式中,可以給出數(shù)據(jù)庫物理存儲結(jié)構(gòu)與物理存取方法的是______。A、內(nèi)模式B、外模式C、概念模式D、邏輯模式11.VisualFoxPro數(shù)據(jù)庫文獻是__DCBAA____。A、存放用戶數(shù)據(jù)的文獻B、管理數(shù)據(jù)庫對象的系統(tǒng)文獻C、存放用戶數(shù)據(jù)和系統(tǒng)的文獻D、前三種說法都對12.SQL語句中修改表結(jié)構(gòu)的命令是______。A、MODIFYTABLEB、MODIFYSTRUCTUREC、ALTERTABLED、ALTERSTRUCTURE13.假如要創(chuàng)建一個數(shù)據(jù)組分組報表,第一個分組表達式是"部門",第二個分組表達式是"性別",第三個分組表達式是"基本工資",當(dāng)前索引的索引表達式應(yīng)當(dāng)是______。A、部門+性別+基本工資B、部門+性別+STR(基本工資)C、STR(基本工資)+性別+部門D、性別+部門+STR(基本工資)14.把一個項目編譯成一個應(yīng)用程序時,下面的敘述對的的是______。A、所有的項目文獻將組合為一個單一的應(yīng)用程序文獻B、所有項目的包含文獻將組合為一個單一的應(yīng)用程序文獻C、所有項目排除的文獻將組合為一個單一的應(yīng)用程序文獻D、由用戶選定的項目文獻將組合為一個單一的應(yīng)用程序文獻15.?dāng)?shù)據(jù)庫DB、數(shù)據(jù)庫系統(tǒng)DBS、數(shù)據(jù)庫管理系統(tǒng)DBMS三者之間的關(guān)系是______。A、DBS涉及DB和DBMSB、DBMS涉及DB和DBSC、DB涉及DBS和DBMSD、DBS就是DB,也就是DBMS16.在"選項"對話框的"文獻位置"選項卡中可以設(shè)立_BAABA_____。A、表單的默認(rèn)大小B、默認(rèn)目錄C、日期和時間的顯示格式D、程序代碼的顏色17.要控制兩個表中數(shù)據(jù)的完整性和一致性可以設(shè)立"參照完整性",規(guī)定這兩個表______。A、是同一個數(shù)據(jù)庫中的兩個表B、不同數(shù)據(jù)庫中的兩個表C、兩個自由表D、一個是數(shù)據(jù)庫表另一個是自由表18.定位第一條記錄上的命令是______。A、GOTOPB、GOBOTTO(shè)MC、GO6D、SKIP19.在關(guān)系模型中,實現(xiàn)"關(guān)系中不允許出現(xiàn)相同的元組"的約束是通過______。A、候選鍵B、主鍵C、外鍵D、超鍵20.設(shè)當(dāng)前數(shù)據(jù)庫有10條記錄(記錄未進行任何索引),在下列三種情況下,當(dāng)前記錄號為1時;EOF()為真時;BOF()為真時,命令?RECN()的結(jié)果分別是______。A、1,11,1B、1,10,1C、1,11,0D、1,10,021.下列表達式中結(jié)果不是日期型的是__CCBBA____。A、CTOD("2023/10/01")B、{^99/10/01}+365C、VAL("2023/10/01")D、DATE()22.只有滿足聯(lián)接條件的記錄才包含在查詢結(jié)果中,這種聯(lián)接為______。A、左聯(lián)接B、右聯(lián)接C、內(nèi)部聯(lián)接D、完全聯(lián)接23.索引字段值不唯一,應(yīng)當(dāng)選擇的索引類型為______。A、主索引B、普通索引C、候選索引D、唯一索引24.執(zhí)行SELECT0選擇工作區(qū)的結(jié)果是______。A、選擇了0號工作區(qū)B、選擇了空閑的最小號工作區(qū)C、關(guān)閉選擇的工作區(qū)D、選擇已打開的工作區(qū)25.從數(shù)據(jù)庫中刪除表的命令是______。A、DROPTABLEB、ALTERTABLEC、DELETETABLED、USE26.DELETEFROMSWHERE年齡>60語句的功能是_BBCCB_____。A、從S表中徹底刪除年齡大于60歲的記錄B、S表中年齡大于60歲的記錄被加上刪除標(biāo)記C、刪除S表D、刪除S表的年齡列27.SELECT-SQL語句是______。A、選擇工作區(qū)語句B、數(shù)據(jù)查詢語句C、選擇標(biāo)準(zhǔn)語句D、數(shù)據(jù)修改語句28.SQL語言是______語言。A、層次數(shù)據(jù)庫B、網(wǎng)絡(luò)數(shù)據(jù)庫C、關(guān)系數(shù)據(jù)庫D、非數(shù)據(jù)庫29.在SQL中,刪除視圖用______。A、DROPSCHEMA命令B、CREATETABLE命令C、DROPVIEW命令D、DROPINDEX命令30.以下屬于非容器類控件的是______。A、FormB、LabelC、pageD、Container31.將查詢結(jié)果放在數(shù)組中應(yīng)使用__d____短語。A、INTOCURSORB、TOARRAYC、INTOTABLED、INTOARRAY32.在命令窗口執(zhí)行SQL命令時,若命令要占用多行,續(xù)行符是__d____。A、冒號(:)B、分號(;)C、逗號(,)D、連字符(-)33.設(shè)有圖書管理數(shù)據(jù)庫:圖書(總編號C(6),分類號C(8),書名C(16),作者C(6),出版單位C(20),單價N(6,2))讀者(借書證號C(4),單位C(8),姓名C(6),性別C(2),職稱C(6),地址C(20))借閱(借書證號C(4),總編號C(6),借書日期D(8))對于圖書管理數(shù)據(jù)庫,查詢0001號借書證的讀者姓名和所借圖書的書名。SQL語句對的的是______。SELECT姓名,書名FROM借閱,圖書,讀者WHERE;借閱.借書證號="0001"AND;__________a__A、圖書.總編號=借閱.總編號AND;讀者.借書證號=借閱.借書證號B、圖書.分類號=借閱.分類號AND;讀者.借書證號=借閱.借書證號C、讀者.總編號=借閱.總編號AND;讀者.借書證號=借閱.借書證號D、圖書.總編號=借閱.總編號AND;讀者.書名=借閱.書名34.設(shè)有圖書管理數(shù)據(jù)庫:圖書(總編號C(6),分類號C(8),書名C(16),作者C(6),出版單位C(20),單價N(6,2))讀者(借書證號C(4),單位C(8),姓名C(6),性別C(2),職稱C(6),地址C(20))借閱(借書證號C(4),總編號C(6),借書日期D(8))對于圖書管理數(shù)據(jù)庫,分別求出各個單位當(dāng)前借閱圖書的讀者人次。下面的SQL語句對的的是______。SELECT單位,______FROM借閱,讀者WHERE;借閱.借書證號=讀者.借書證號a______A、COUNT(借閱.借書證號)GROUPBY單位B、SUM(借閱.借書證號)GROUPBY單位C、COUNT(借閱.借書證號)ORDERBY單位D、COUNT(借閱.借書證號)HAVING單位35.設(shè)有圖書管理數(shù)據(jù)庫:圖書(總編號C(6),分類號C(8),書名C(16),作者C(6),出版單位C(20),單價N(6,2))讀者(借書證號C(4),單位C(8),姓名C(6),性別C(2),職稱C(6),地址C(20))借閱(借書證號C(4),總編號C(6),借書日期D(8))對于圖書管理數(shù)據(jù)庫,檢索借閱了《現(xiàn)代網(wǎng)絡(luò)技術(shù)基礎(chǔ)》一書的借書證號。下面SQL語句對的的是______。SELECT借書證號FROM借閱WHERE總編號=;______bA、(SELECT借書證號FROM圖書WHERE書名="現(xiàn)代網(wǎng)絡(luò)技術(shù)基礎(chǔ)")B、(SELECT總編號FROM圖書WHERE書名="現(xiàn)代網(wǎng)絡(luò)技術(shù)基礎(chǔ)")C、(SELECT借書證號FROM借閱WHERE書名="現(xiàn)代網(wǎng)絡(luò)技術(shù)基礎(chǔ)")D、(SELECT總編號FROM借閱WHERE書名="現(xiàn)代網(wǎng)絡(luò)技術(shù)基礎(chǔ)")二、填空題36.算法的復(fù)雜度重要涉及______復(fù)雜度和空間復(fù)雜度。37.數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機存儲空間中的存放形式稱為數(shù)據(jù)的______。38.若按功能劃分,軟件測試的方法通常分為白盒測試方法和______測試方法。39.假如一個工人可管理多個設(shè)施,而一個設(shè)施只被一個工人管理,則實體"工人"與實體"設(shè)備"之間存在______聯(lián)系。40.關(guān)系數(shù)據(jù)庫管理系統(tǒng)能實現(xiàn)的專門關(guān)系運算涉及選擇、連接和______。41.命令?LEN("THISISMYBOOK")的結(jié)果是______。42.SQLSELECT語句為了將查詢結(jié)果存放到臨時表中應(yīng)當(dāng)使用______短語。43.多欄報表的欄目數(shù)可以通過______來設(shè)立。44.在打開項目管理器之后再打開"應(yīng)用程序生成器",可以通過按ALT+F2鍵,快捷菜單和"工具"菜單中的______。45.數(shù)據(jù)庫系統(tǒng)的核心是______。46.查詢設(shè)計器中的"聯(lián)接"選項卡,可以控制______選擇。47.設(shè)有圖書管理數(shù)據(jù)庫:圖書(總編號C(6),分類號C(8),書名C(16),作者C(6),出版單位C(20),單價N(6,2))讀者(借書證號C(4),單位C(8),姓名C(6),性別C(2),職稱C(6),地址C(20))借閱(借書證號C(4),總編號C(6),借書日期D(8))用SQL的CREATE命令建立借閱表(字段順序要相同),請對下面的SQL語句填空:______48.設(shè)有圖書管理數(shù)據(jù)庫:圖書(總編號C(6),分類號C(8),書名C(16),作者C(6),出版單位C(20),單價N(6,2))讀者(借書證號C(4),單位C(8),姓名C(6),性別C(2),職稱C(6),地址C(20))借閱(借書證號C(4),總編號C(6),借書日期D(8))對圖書管理數(shù)據(jù)庫,查詢由"清華大學(xué)出版社"或"電子工業(yè)出版社"出版,并且單價不超過20元的書名。請對下面的SQL語句填空:SELECT書名,出版單位,單價FROM圖書;WHERE_______AND;_______49.設(shè)有圖書管理數(shù)據(jù)庫:圖書(總編號C(6),分類號C(8),書名C(16),作者C(6),出版單位C(20),單價N(6,2))讀者(借書證號C(4),單位C(8),姓名C(6),性別C(2),職稱C(6),地址C(20))借閱(借書證號C(4),總編號C(6),借書日期D(8))對圖書管理數(shù)據(jù)庫,求共借出多少種圖書。請對下面的SQL語句填空:SELECT_______FROM借閱第一套題答案選擇題1-5CCBAD6-10BDBCA11-15DCBAA16-20BAABA21-25CCBBA26-30BBCCB31-35DDAAB填空題36.時間37.模式或邏輯模式38.黑盒39.一對多或1對多或一對n或1:N或1:n或1:n或1:N或一對m或1:M或1:m或1:m或1:N40.投影41.1542.Intocursor或Intocursorcursorname43.頁面設(shè)立或列數(shù)44.應(yīng)用程序生成器45.數(shù)據(jù)庫管理系統(tǒng)或DBMS46.聯(lián)接類型或聯(lián)接條件47.CREATETABLE借閱(借書證號C(4),總編號C(6),借書日期D(8))或CREATABL借閱(借書證號C(4),總編號C(6),借書日期D(8))或CREATETABLE借閱(借書證號C(4),總編號C(6),借書日期D)或CREATABL借閱(借書證號C(4),總編號C(6),借書日期D)48.單價<=20或(出版單位="清華大學(xué)出版社"OR出版單位="電子工業(yè)出版社")或(出版單位="電子工業(yè)出版社"OR出版單位="清華大學(xué)出版社")或(出版單位='清華大學(xué)出版社'OR出版單位='電子工業(yè)出版社')與(出版單位="清華大學(xué)出版社"OR出版單位="電子工業(yè)出版社")或(出版單位='清華大學(xué)出版社‘)49.COUNT(DISTINCT總編號)或COUN(DISTINCT總編號)或COUNT(DIST總編號)或COUN(DIST總編號)第二套題一、選擇題1.以下數(shù)據(jù)結(jié)構(gòu)中不屬于線性數(shù)據(jù)結(jié)構(gòu)的是______。A、隊列B、線性表C、二叉樹D、棧2.在結(jié)構(gòu)化方法中,用數(shù)據(jù)流程圖(DFD)作為描述工具的軟件開發(fā)階段是______。A、可行性分析B、需求分析C、具體設(shè)計D、程序編碼3.結(jié)構(gòu)化程序設(shè)計重要強調(diào)的是______。A、程序的規(guī)模B、程序的易讀性C、程序的執(zhí)行效率D、程序的可移植性4.在軟件生命周期中,能準(zhǔn)確地擬定軟件系統(tǒng)必須做什么和必須具有哪些功能的階段是______。A、概要設(shè)計B、具體設(shè)計C、可行性分析D、需求分析5.下列關(guān)于棧的敘述中對的的是______。A、在棧中只能插入數(shù)據(jù)B、在棧中只能刪除數(shù)據(jù)C、棧是先進先出的線性表D、棧是先進后出的線性表6.下面不屬于軟件設(shè)計原則的是______。A、抽象B、模塊化C、自底向上D、信息隱蔽7.對長度為N的線性表進行順序查找,在最壞情況下所需要的比較次數(shù)為______。A、N+1B、NC、(N+1)/2D、N/28.視圖設(shè)計一般有3種設(shè)計順序,下列不屬于視圖設(shè)計的是______。A、自頂向下B、由外向內(nèi)C、由內(nèi)向外D、自底向上9.下列有關(guān)數(shù)據(jù)庫的描述,對的的是______。A、數(shù)據(jù)庫是一個DBF文獻B、數(shù)據(jù)庫是一個關(guān)系C、數(shù)據(jù)庫是一個結(jié)構(gòu)化的數(shù)據(jù)集合D、數(shù)據(jù)庫是一組文獻10.下列說法中,不屬于數(shù)據(jù)模型所描述的內(nèi)容的是______。A、數(shù)據(jù)結(jié)構(gòu)B、數(shù)據(jù)操作C、數(shù)據(jù)查詢D、數(shù)據(jù)約束11.在下面的VisualFoxPro表達式中,運算結(jié)果是邏輯真的是______。A、EMPTY(.NULL.)B、LIKE('acd','ac?')C、AT('a','123abc')D、EMPTY(SPACE(2))12.表達式VAL(SUBS("奔騰586",5,1))*Len("visualfoxpro")的結(jié)果是______。A、13.00B、14.00C、45.00D、65.0013.以下關(guān)于自由表的敘述,對的的是______。A、所有是用以前版本的FOXPRO(FOXBASE)建立的表B、可以用VisualFoxPro建立,但是不能把它添加到數(shù)據(jù)庫中C、自由表可以添加到數(shù)據(jù)庫中,數(shù)據(jù)庫表也可以從數(shù)據(jù)庫中移出成為自由表D、自由表可以添加到數(shù)據(jù)庫中,但數(shù)據(jù)庫表不可從數(shù)據(jù)庫中移出成為自由表14.下面關(guān)于數(shù)據(jù)環(huán)境和數(shù)據(jù)環(huán)境中兩個表之間的關(guān)系的陳述中,______是對的的。A、數(shù)據(jù)環(huán)境是對象,關(guān)系不是對象B、數(shù)據(jù)環(huán)境不是對象,關(guān)系是對象C、數(shù)據(jù)環(huán)境是對象,關(guān)系是數(shù)據(jù)環(huán)境中的對象D、數(shù)據(jù)環(huán)境和關(guān)系均不是對象15.在"報表設(shè)計器"中,可以使用的控件是______。A、標(biāo)簽、域控件和線條B、標(biāo)簽、域控件和列表框C、標(biāo)簽、文本框和列表框D、布局和數(shù)據(jù)源16.用二維表數(shù)據(jù)來表達實體及實體之間聯(lián)系的數(shù)據(jù)模型稱為______。A、實體--聯(lián)系模型B、層次模型C、網(wǎng)狀模型D、關(guān)系模型17.用來指明復(fù)選框的當(dāng)前選中狀態(tài)的屬性是______。A、SelectedB、CaptionC、ValueD、ControlSource18.使用菜單操作方法打開一個在當(dāng)前目錄下已經(jīng)存在的查詢文獻zgjk.qpr后,在命令窗口生成的命令是____。A、OPENQUERYzgjk.qprB、MODIFYQUERYzgjk.qprC、DOQUERYzgjk.qprD、CREATEQUERYzgjk.qpr19.可以隨著著表的打開而自動打開的索引是______。A、單一索引文獻(IDX)B、復(fù)合索引文獻(CDX)C、結(jié)構(gòu)化復(fù)合索引文獻D、非結(jié)構(gòu)化復(fù)合索引文獻20.在數(shù)據(jù)庫設(shè)計器中,建立兩個表之間的一對多聯(lián)系是通過以下索引實現(xiàn)的______。A、"一方"表的主索引或候選索引,"多方"表的普通索引B、"一方"表的主索引,"多方"表的普通索引或候選索引C、"一方"表的普通索引,"多方"表的主索引或候選索引D、"一方"表的普通索引,"多方"表的候選索引或普通索引21.下列函數(shù)中函數(shù)值為字符型的是______。A、DATE()B、TIME()C、YEAR()D、DATETIME()22.下面對控件的描述對的的是______。A、用戶可以在組合框中進行多重選擇B、用戶可以在列表框中進行多重選擇C、用戶可以在一個選項組中選中多個選項按鈕D、用戶對一個表單內(nèi)的一組復(fù)選框只能選中其中一個23.?dāng)M定列表框內(nèi)的某個條目是否被選定應(yīng)使用的屬性是______。A、ValueB、ColumnCountC、ListCountD、Selected24.設(shè)有關(guān)系R1和R2,通過關(guān)系運算得到結(jié)果S,則S是______。A、一個關(guān)系B、一個表單C、一個數(shù)據(jù)庫D、一個數(shù)組25.DBAS指的是______。A、數(shù)據(jù)庫管理系統(tǒng)B、數(shù)據(jù)庫系統(tǒng)C、數(shù)據(jù)庫應(yīng)用系統(tǒng)D、數(shù)據(jù)庫服務(wù)系統(tǒng)26.設(shè)X="ABC",Y="ABCD",則下列表達式中值為.T.的是______。A、X=YB、X==YC、X$YD、AT(X,Y)=027.在表結(jié)構(gòu)中,邏輯型、日期型、備注型字段的寬度分別固定為______。A、3,8,10B、1,6,4C、1,8,任意D、1,8,428.在標(biāo)準(zhǔn)SQL中,建立視圖的命令是______。A、CREATESCHEMA命令B、CREATETABLE命令C、CREATEVIEW命令D、CREATEINDEX命令29.有關(guān)SCAN循環(huán)結(jié)構(gòu),敘述對的的是______。A、SCAN循環(huán)結(jié)構(gòu)中的LOOP語句,可將程序流程直接指向循環(huán)開始語句SCAN,一方面判斷EOF()函數(shù)的真假B、在使用SCAN循環(huán)結(jié)構(gòu)時,必須打開某一個數(shù)據(jù)庫C、SCAN循環(huán)結(jié)構(gòu)的循環(huán)體中必須寫有SKIP語句D、SCAN循環(huán)結(jié)構(gòu),假如省略了子句\FOR和WHILE條件子句,則直接退出循環(huán)30.設(shè)有圖書管理數(shù)據(jù)庫:圖書(總編號C(6),分類號C(8),書名C(16),作者C(6),出版單位C(20),單價N(6,2))讀者(借書證號C(4),單位C(8),姓名C(6),性別C(2),職稱C(6),地址C(20))借閱(借書證號C(4),總編號C(6),借書日期D(8))對于圖書管理數(shù)據(jù)庫,要查詢所藏圖書中,各個出版社的圖書最高單價、平均單價和冊數(shù),下面SQL語句對的的是______。SELECT出版單位,______,______,______;FROM圖書管理!圖書______出版單位A、MIN(單價)AVGAGE(單價)COUNT(*)GROUPBYB、MAX(單價)AVG(單價)COUNT(*)ORDERBYC、MAX(單價)AVG(單價)SUM(*)ORDERBYD、MAX(單價)AVG(單價)COUNT(*)GROUPBY31.設(shè)有圖書管理數(shù)據(jù)庫:圖書(總編號C(6),分類號C(8),書名C(16),作者C(6),出版單位C(20),單價N(6,2))讀者(借書證號C(4),單位C(8),姓名C(6),性別C(2),職稱C(6),地址C(20))借閱(借書證號C(4),總編號C(6),借書日期D(8))對于圖書管理數(shù)據(jù)庫,求CIE單位借閱圖書的讀者的人數(shù)。下面SQL語句對的的是______。SELECT______FROM借閱WHERE;借書證號_______A、COUNT(DISTINCT借書證號)IN(SELECT借書證號FROM讀者WHERE單位="CIE")B、COUNT(DISTINCT借書證號)IN(SELECT借書證號FROM借閱WHERE單位="CIE")C、SUM(DISTINCT借書證號)IN(SELECT借書證號FROM讀者WHERE單位="CIE")D、SUM(DISTINCT借書證號)IN(SELECT借書證號FOR借閱WHERE單位="CIE")32.查詢訂購單號(字符型,長度為4)尾字符是"1"的錯誤命令是______。A、SELECT*FROM訂單WHERESUBSTR(訂購單號,4)="1"B、SELECT*FROM訂單WHERESUBSTR(訂購單號,4,1)="1"C、SELECT*FROM訂單WHERE"1"$訂購單號D、SELECT*FROM訂單WHERERIGHT(訂購單號,1)="1"33.在關(guān)系模型中,為了實現(xiàn)"關(guān)系中不允許出現(xiàn)相同元組"的約束應(yīng)使用______。A、臨時關(guān)鍵字B、主關(guān)鍵字C、外部關(guān)鍵字D、索引關(guān)鍵字34.根據(jù)"職工"項目文獻生成emp_sys.exe應(yīng)用程序的命令是______。A、BUILDEXEemp_sysFROM職工B、BUILDAPPemp_sys.exeFROM職工C、LIKEEXEemp_sysFROM職工D、LIKEAPPemp_sys.exeFROM職工35.當(dāng)前盤當(dāng)前目錄下有數(shù)據(jù)庫:學(xué)院.dbc,其中有"教師"表和"學(xué)院"表。"教師"表:"學(xué)院"表:有SQL語句:SELECTDISTINCT系號FROM教師WHERE工資>=;ALL(SELECT工資FROM教師WHERE系號="02")與如上語句等價的SQL語句是______。A、SELECTDISTINCT系號FROM教師WHERE工資>=;(SELECTMAX(工資)FROM教師WHERE系號="02")B、SELECTDISTINCT系號FROM教師WHERE工資>=;(SELECTMIN(工資)FROM教師WHERE系號="02")C、SELECTDISTINCT系號FROM教師WHERE工資>=;ANY(SELECT工資FROM教師WHERE系號="02")D、SELECTDISTINCT系號FROM教師WHERE工資>=;SOME(SELECT工資FROM教師WHERE系號="02")二、填空題36.若按功能劃分,軟件測試的方法通常分為白盒測試方法和______測試方法。37.數(shù)據(jù)庫系統(tǒng)的三級模式分別為______模式、內(nèi)部級模式與外部級模式。38.在最壞情況下,冒泡排序的時間復(fù)雜度為______。39.在面向?qū)ο蠓椒ㄖ?,信息隱蔽是通過對象的______性來實現(xiàn)的。40.關(guān)系模型的數(shù)據(jù)操縱即是建立在關(guān)系上的數(shù)據(jù)操縱,一般有______、增長、刪除和修改四種操作。41.要把幫助文獻設(shè)立為復(fù)制到硬盤上的Foxhelp.chm文獻,需要在"選項"對話框的______選項卡上設(shè)立。42.TIME()的返回值的數(shù)據(jù)類型是______類型。43.在定義字段有效性規(guī)則中,在規(guī)則框中輸入的表達式中類型是________。44.設(shè)計報表通常涉及兩部分內(nèi)容:______和布局。45.______是指只有滿足聯(lián)接條件的記錄才包含在查詢結(jié)果中。46.設(shè)有圖書管理數(shù)據(jù)庫:圖書(總編號C(6),分類號C(8),書名C(16),作者C(6),出版單位C(20),單價N(6,2))讀者(借書證號C(4),單位C(8),姓名C(6),性別C(2),職稱C(6),地址C(20))借閱(借書證號C(4),總編號C(6),借書日期D(8))檢索書價在15元至25元(含15元和25元)之間的圖書的書名、作者、書價和分類號,結(jié)果按分類號升序排序。SELECT書名,作者,單價,分類號FROM圖書;WHERE______;ORDERBY______;47.設(shè)有如下關(guān)系表R、S和T:R(BH,XM,XB,DWH)S(SWH,DWM)T(BH,XM,XB,DWH)實現(xiàn)R∪T的SQL語句是_______。48.設(shè)有如下關(guān)系表R:R(NO,NAME,SEX,AGE,CLASS)主關(guān)鍵字是NO其中NO為學(xué)號,NAME為姓名,SEX為性別,AGE為年齡,CLASS為班號。寫出實現(xiàn)下列功能的SQL語句。插入"95031"班學(xué)號為30,姓名為"鄭和"的學(xué)生記錄;_______。49.設(shè)有如下關(guān)系表R:R(NO,NAME,SEX,AGE,CLASS)主關(guān)鍵字是NO其中NO為學(xué)號(數(shù)值型),NAME為姓名,SEX為性別,AGE為年齡,CLASS為班號。寫出實現(xiàn)下列功能的SQL語句。刪除學(xué)號為20的學(xué)生記錄;______。第二套題答案1-5CBBDD6-10CBBCC11-15DDCCA16-20DCBCA21-25BBDAC26-30CDCBD31-35ACBBA36.黑盒37.概念或概念級38.n(n-1)/239.封裝40.查詢41.文獻位置42.字符或C43.邏輯表達式44.數(shù)據(jù)源45.內(nèi)部聯(lián)接46.單價BETWEEN15AND25或單價BETW15AND25或單價BETWE15AND25或單價>=15and單價<=25或單價>=15and單價=<25或單價=>15and單價<=25或單價=>15and單價=<25與分類號ASC或分類號47.SELECT*FROMRUNIONSELECT*FROMT或SELE*FROMRUNIOSELE*FROMT或SELECT*FROMRUNIOSELECT*FROMT或SELE*FROMRUNIONSELE*FROMT48.INSERTINTO(shè)R(NO,NAME,CLASS)VALUES(30,"鄭和","95031")或INSEINTOR(NO,NAME,CLASS)VALUES(30,"鄭和","95031")49.DELETEFROMRWHERENO=20或DELEFROMRWHERENO=20或DELEFROMRWHERNO=20或DELETEFROMRWHERNO=20

12:存在表T(a,b,c,d),要根據(jù)字段c排序后取第21—30條記錄顯示,請給出sqlcreat(yī)etablet(anumber(,bnumber(,cnumber(,dnumber();?/

begin

foriin1..300loop?insertintotvalues(mod(i,2),i/2,dbms_random.value(1,300),i/4);?endloop;?end;?/

select*from(selectc.*,rownumasrnfrom(select*fromtorderbycdesc)c)wherernbetween21and30;

/

select*from(select*fromtestorderbycdesc)xwhererownum<30minus

select*from(select*fromtestorderbycdesc)ywhererownum<20orderby3desc題目內(nèi)容如下

*?一表TB

Id

字段為編號,遞增不一定連續(xù).

字段為區(qū)段路費,比如從家到哈爾濱是60元,從哈爾濱到長春是70元,數(shù)值類型.?S

字段站點名稱.

現(xiàn)有500元錢,從家先經(jīng)哈爾濱出發(fā),能走多遠(yuǎn)?

(例:60+70+80+50+90+75=42560+70+80+50+90+75+80=505所以答案應(yīng)當(dāng)是6武漢)Id

S

1

60

哈爾濱?2

70

長春

3

80

沈陽?4

50

北京

5

90

鄭州

75

武漢

80

長沙?8

90

廣東規(guī)定,請用一句SQL語句實現(xiàn)?*/?--創(chuàng)建表

CreateTableTB

(?

Id

IntIdentity(1,1)NotNull,

M

Int,?

S

varchar(50)

)?--測試數(shù)據(jù)?InsertIntoTBValues(60,'哈爾濱')?InsertIntoTBValues(70,'長春')

InsertIntoTBValues(80,'沈陽')?InsertIntoTBValues(50,'北京')

InsertIntoTBValues(90,'鄭州')

InsertIntoTBValues(75,'武漢')?InsertIntoTBValues(80,'長沙')

InsertIntoTBValues(90,'廣東')--------------------------實現(xiàn)方法兩種?1.?SELECTTOP1B.id,b.s,sum(A.m)s_sum

FROMTBA,?

TBB?

WHEREA.ID<=B.ID?

GROUPBYb.id,?

b.s?HAVINGsum(a.m)<=500?

ORDERBYb.idDESC?2.?SELECTTOP1ID,S,M_SUM

FROM(SELECT*,

(SELECTSUM(M)

FROMTB?

WHEREID>=1

ANDID<=A.ID)ASM_SUM?

FROMTBA)B?

WHEREM_SUM<=500?

ORDERBYIDDESC?

SQL面試題(二)有一張工資表,包含三列:員工編號(ID),部門編號(GROUPS),工資(SALARY)1..找到每個部門工資最高的人(涉及并列第一)2.找到每個部門工資最高的人(只選一個)SQL語句如下:1.select*from工資表asawherea.工資=(selectmax(b.工資)from工資表asbwherea.部門編號=b.部門編號)--2select*from工資表asawherea.工資=(selectmax(b.工資)from工資表asbwherea.部門編號=b.部門編號)anda.員工編號=(selectmax(c.員工編號)from工資表ascwherea.部門編號=c.部門編號)selectmin(員工編號)as員工編號,部門編號,工資from工資表asawherea.工資=(selectmax(b.工資)from工資表asbwherea.部門編號=b.部門編號)groupby部門編號,工資SQL面試題(一)有一個張員工工資表(SALARY),表有三列:員工編號(ID),工資(SALARY)1.查詢id反復(fù)記錄select*from工資表asawhere((selectcount(*)from工資表asbwherea.員工編號=b.員工編號)>1)SELECT*FROM工資表WHERE員工編號IN(SELECT員工編號FROM工資表GROUPBY員工編號HAVINGCOUNT(*)>1)2.刪除id反復(fù)記錄,只保存第一條(說明,不需要考慮表中存在完全相同紀(jì)錄的情況)SQL語句如下:CREATETABLESALARY(

IDINTNOTNULL,

SALARYMONEYNOTNULL)INSERTINTOSALARYSELECT1,1000UNIONALLSELECT1,800UNIONALLSELECT2,1200UNIONALLSELECT3,1100UNIONALLSELECT3,1200UNIONALLSELECT3,1300SELECT*FROMSALARY--1SELECT*FROMSALARYWHEREIDIN(SELECTIDFROMSALARYGROUPBYIDHAVINGCOUNT(*)>1)--2DELETETFROMSALARYTWHEREEXISTS(SELECT1FROMSALARYWHERET.ID=IDANDSALARY>T.SALARY)四、設(shè)計題(本大題共2小題,每小題10分,共20分)2、學(xué)生表:Student學(xué)生表(學(xué)號,姓名,性別,年齡,組織部門)

Course課程表(編號,課程名稱)

Sc選課表(學(xué)號,課程編號,成績)表結(jié)構(gòu)如下:(1).寫一個SQL語句,查詢選修了’計算機原理’的學(xué)生學(xué)號和姓名(2).寫一個SQL語句,查詢’周星馳’同學(xué)選修了的課程名字(3).寫一個SQL語句,查詢選修了5門課程的學(xué)生學(xué)號和姓名

(1)selectsno,snamefromstudentwheresnoin(selectsnofromscwherecno=(selectcnofromcoursewherecname='計算機原理'))

(2)

selectcnamefromcoursewherecnoin(selectcnofromscwheresno=(selectsnofromstudentwheresname='周星馳'))

(3)selectsno,snameFromstudentWheresnoin(selectsnofromscgroupbysnohavingcount(sno)=5)

一道凊華同方的SQL面試題?已知一個表的結(jié)構(gòu)為:

姓名科目成績

張三語文20?張三數(shù)學(xué)30

張三英語50?李四語文70?李四數(shù)學(xué)60?李四英語90

如何通過select語句把他變成以下結(jié)構(gòu):

姓名語文數(shù)學(xué)英語?張三203050

李四706090在Mysql上測試通過:

usetest;

droptableifexistsstudentscore;

createtablestudentscore(idintauto_incrementprimarykey,姓名varchar(20),科目varchar(20),成績varchar(20))defaultcharset=utf8;createviewteststudentasselectA.姓名,A.成績as語文,B.成績as數(shù)學(xué),C.成績as英語fromstudentscoreA,studentscoreB,studentscoreCwhereA.姓名=B.姓名andB.姓名=C.姓名andA.科目='語文'andB.科目='數(shù)學(xué)'

andC.科目='英語';

(2)金蝶的一道SQL筆試題,上個周六的時候去金蝶面試,出了這樣一道SQL題,共享之

給下面這樣的一個表記錄:?------

購物人

商品名稱

數(shù)量

A

2

B

4

C

1

A

2?B

5?給出所有購入商品為兩種或兩種以上的購物人記錄usetest;?droptableifexistsproduct;?createtableproduct(idintauto_incrementprimarykey,購物人varchar(20),商品名稱varchar(20),數(shù)量varchar(20));

insertintoproduct(id,購物人,商品名稱,數(shù)量)values

(1,'A','甲','2');?insertintoproduct(id,購物人,商品名稱,數(shù)量)values

(2,'B','乙','4');?insertintoproduct(id,購物人,商品名稱,數(shù)量)values

(3,'C','丙','1');

insertintoproduct(id,購物人,商品名稱,數(shù)量)values

(4,'A','丁','2');

insertintoproduct(id,購物人,商品名稱,數(shù)量)values

(5,'B','丙','5');?select*fromproductgroupby購物人havingcount(商品名稱)>=2;錯誤,由于結(jié)果是這樣的:A

2

B

4?

select*fromproductwhere購物人in(select購物人fromproductgroupby購物人havingcount(商品名稱)>=2)對的A

2?B

4?A

2?B

5?

sql語言實現(xiàn)查找成績排名10到20的學(xué)生

sql語句實現(xiàn):?查詢成績表中10名至20名的學(xué)生方法?selecttop11*fromscorewheresnonotin(selecttop9snofromscoreorderbyscdesc)orderbyscdesc補充說明:score,sc,sno

分別為成績表,成績和學(xué)號。這道冥思苦想了N久的題目本來只用一個top就搞定了,真是狂汗,看來還要看書。

HYPERLINK""

用一句SQL取出第m條到第n條記錄的方法

從Table

表中取出第

m

條到第

n

條的記錄:(Not

In

版本)

SELECT

TOP

n-m+1

*

FROM

Table

WHERE

(id

NOT

IN

(SELECT

TOP

m-1

id

FROM

Table

))

?

--從TABLE表中取出第m到n條記錄

(Exists版本)?

SELECT

TO(shè)P

n-m+1

*

FROM

TABLE

AS

WHERE

Not

Exists?

(Select

*

From

(Select

Top

m-1

From

TABLE

order

by

id)

b

Where

b.id=a.id

)

Order

by

id?

?

--m為上標(biāo),n為下標(biāo),例如取出第8到12條記錄,m=8,n=12,Table為表名

?

Select

Top

n-m+1

From

Table

Where

Id>(Select

Max(Id)

From

(Select

Top

m-1

Id

From

Table

Order

By

Id

Asc)

Temp)

Order

By

Id

Asc

直接取得數(shù)據(jù)庫中的分頁記錄前提是表中必須有主鍵

?取得第M條記錄之后的N條記錄:?SELECTTOPN*FROM[TABLE]WHERE(IDNOTIN(SELECTTOPMidFROM[TABLE]ORDERBY[ORDER]))ORDERBY[ORDER]?

Oracle中的實現(xiàn),取得第M到N條記錄:SELECT*FROM?(SELECT*,ROWNUMASCONFROM(SELECT*FROM[TABLE]ORDERBY[ORDER])WHEREROWNUM<=N)WHERECON>=M;查詢表中連續(xù)的某幾條記錄不要傳任何列的條件參數(shù),查詢表中連續(xù)的某幾條記錄?如:表A,id列為主鍵

idnamesexage?-----------

1luoyimale21?2yayafemale20?3lilifemale22?4wuyongmale25?...........?

這個表的記錄尚有很多,假如我想取第二、第三條記錄,不為別的,我就想要這兩條,這不僅在編程中會用到,并且在一些公司面試時也有類似考題(呵呵,我沒有碰到過),在oracle和mssqlserver中SQL代碼分別為:

?二、mssqlserver?在server中沒有minus,只能用類似于oracle的第二種方法

select*from(selecttop3*fromA)asbwhereb.idnotin(selecttop1idfromA)?三、繪制出來的結(jié)果為:

idnamesexage

---------------?2yayafemale20

3lilifemale22特點:一次查詢,數(shù)據(jù)庫只返回一頁的數(shù)據(jù)。而不是取出所有的數(shù)據(jù)。

說明:??pagesize:每頁顯示記錄數(shù)

cureentpage:當(dāng)前頁數(shù)?

select*from(selectTO(shè)Ppagesize*FROM(SELECTTOPpagesize*cureentpage*fromuser_tableORDERBYidASC)asaSysTableORDERBYidDESC)asbSysTableORDERBYidASC

??例子說明:

假如數(shù)據(jù)庫表如下:

user_table:?id:主鍵,自增

username:字符?password:字符?

假設(shè)有80條記錄,每頁顯示10條記錄,id從1到80現(xiàn)在按照id升序排列取出第三頁的數(shù)據(jù)應(yīng)當(dāng)為:所取得記錄的id應(yīng)當(dāng)為21到30。這時該語句應(yīng)當(dāng)為:??select*from(selectTOP10*FROM(SELECTTO(shè)P30*fromuser_tableORDERBYidASC)asaSysTableORDERBYidDESC)asbSysTableORDERBYidASC??原理如下:?先按照id從小到大升序取出30條記錄(3*10),也就是:id在1-30之間的記錄(SELECTTOP30*fromuser_tableORDERBYidASC)然后按照ID降序排列這30條記錄,得到記錄為id在:從30到1然后在這些30條記錄中取出前10條記錄:取得的記錄為:id在30-21之間。這就是我們需要的數(shù)據(jù),但這時是按照降序排列的,不符合規(guī)定。最后在重新排序得到最終我們需要的數(shù)據(jù)。id在21-30之間。隨機取出若干條記錄的SQL語句

Sqlserver:

selecttop20*from表orderbynewid()A、B兩個表擁有同樣的表結(jié)構(gòu),都以id為主鍵,如何將A表中存在而B表中不存在的記錄插入到B表中。

表結(jié)構(gòu)如下:createtableA(idintprimarykey,namevarchar(20),passwordvarchar(20))?A表記錄:ID

NAME

PASSWORD--1

Tom

1234

2

Mary

1234?3

Lucy

1234

Billy

1234

5

Henry

1234

B表記錄:ID

NAME

PASSWORD-----------1

Tom

1234?2

Mary

1234

3

Lucy

1234

SQL語句一(通過notin實現(xiàn)):

insertintoBselect*fromAwhereidnotin(selectidfromB)Sql語句二(通過notexists實現(xiàn)):insertintoBselect*fromAanotexists(select*fromBbwherea.id=b.id)

若兩表的記錄不同,如下:A表記錄:ID

NAME

PASSWORD-----1

Tom

1234

2

Mary

1234?3

Lucy

1234?4

Billy

2548?5

Henry

1234

B表記錄:ID

NAME

PASSWORD-----------1

Jojoy

1234?2

Mary

1234

Lucy

1234?4

Billy

1234

Henry

1234

找出兩表中的不同記錄,以下兩條SQL語句都能實現(xiàn)。

select*frombwherenamenotin(selectnamefroma)orpasswordnotin(selectpasswordfroma)

select*frombwherenotexists(select*fromawherea.name=b.nameanda.password=b.password)select*frombwherenotexists(select*fromawherea.name=b.nameanda.password=b.password)HYPERLINK""SQLServer不同行列相減實例解析

昨天技術(shù)主管面試新人時出了道數(shù)據(jù)庫編程題,自己也是新人,所以順便拿過來研究一下,題目如下:

數(shù)據(jù)庫表TEST,表結(jié)構(gòu)及數(shù)據(jù)如下:

CREATETABLETEST(IDchar(10)PRIMARYKEY,NAMEchar(10),AMOUNTnumeric(9))

ID

NAME

AMOUNT---101

dr

100

102

cr

200?101

cr

50

102

dr

150?101

dr

300

103

dr

300?103

cr

300?104

cr

345?104

dr

355?104

dr

225

105

dr

225105

cr

500用一條SQL語句得出以下查詢結(jié)果(規(guī)定SQL的查詢性能和效率為最高):ID

AMOUNT-----101

350?102

-50

103

0?104

235

105

-275要得出以上結(jié)果,先得分析一下,可以看出是將ID相同并且NAME為dr的AMOUNT減去NAME為cr的AMOUNT得出。

在不考慮效率的情況下,可使用以下SQL語句:selectid,amount=(selectsum(amount)fromtestwherename='dr'andid=t.id)-(selectsum(amount)fromtestwherename='cr'andid=t.id)fromtestt

groupbyid但這條語句還是有問題,例如:當(dāng)去掉ID

NAME

AMOUNT-----105

cr

500這條記錄后,查詢結(jié)果如下:ID

AMOUNT-101

350?102

-50?103

104

235

105

NULL

出現(xiàn)了一條空值,由于ID='105'的記錄只有一條,沒有與之相匹配的記錄。再看下面的語句:selectid,sum((casename

WHEN'dr'THEN1ELSE-1END)*amount)asamountfromtestgroupbyidselectid,sum(casename

WHEN'dr'THENamountELSE-amountEND)asamountfromtestgroupbyid這兩條語句的效率和查詢結(jié)果等同,也是我們所要的SQL語句。其實要獲得高效率的SQL語句,解題的思緒很重要,這里運用SQLServer的CASE函數(shù)實現(xiàn)將AMOUNT字段的值根據(jù)NAME的不同賦不同的值(加個負(fù)號),再用sum函數(shù)實現(xiàn)數(shù)據(jù)的相減??碱}:現(xiàn)有兩張表,以下為表結(jié)構(gòu)createtabledep(depidintidentityprimarykey,--部門號depnamevarchar(20)

--部門名稱)createtableemp(empidintidentityprimarykey,empnamevarchar(20),salarymoney,depidint)問題:1、請用一條sql語句查詢出各部門的平均工資。結(jié)果顯示為如下形式:

部門號

平均工資

------------

2500.4521

2

2845.0121這個比較簡樸,但是有幾種方式。正解1:?selectdepid部門號,avg(salary)平均工資fromempgroupbydepid正解2:?selectt1.depid部門號,avg(t2.salary)平均工資fromdept1innerjoinempt2ont1.depid=t2.depidgroupbyt1.depid正解3:?select部門號=depid,平均工資=avg(salary)fromempgroupbydepid2、請列出工資大于本部門平均工資的員工姓名和部門號以及記錄此部門的人數(shù)。結(jié)果顯示為如下形式:

EMPNAME

DEPID

部門人數(shù)?

-------------

ZHANGSAN

1

15

LISI

2

10這個有點難度,我試了半天都沒解決。正解1:SELECTT1.empname,T1.depid,T2.部門人數(shù)FROMdbo.empT1INNERJOIN(selectt1.depid,

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論