版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
28.
數(shù)據(jù)庫:抽出部門,平均工資,要求按部門的字符串順序排序,不能含有"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的最小值,但不許使用統(tǒng)計功能,如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)atabelcalled“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'ando=oselectcount(*)fromscwherecno=(selectcnofromcwhereame='db')
2成績最高的學(xué)生號selectsnofromscwheregrade=(selectmax(grade)fromsc)
3每科大于90分的人數(shù)selectame,count(*)fromc,scwhereo=oandsc.grade>90groupbyame
selectame,count(*)fromcjoinscono=oandsc.grade>90groupbyame
數(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í)行有限個步驟之后終止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、詳細(xì)設(shè)計D、程序編碼7.在軟件開發(fā)中,下面任務(wù)不屬于設(shè)計階段的是______。A、數(shù)據(jù)結(jié)構(gòu)設(shè)計B、給出系統(tǒng)模塊結(jié)構(gòu)C、定義模塊算法D、定義需求并建立系統(tǒng)模型8.數(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ù)的根本目標(biāo)是要解決數(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á)式是"部門",第二個分組表達(dá)式是"性別",第三個分組表達(dá)式是"基本工資",當(dāng)前索引的索引表達(dá)式應(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.數(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è)置"參照完整性",要求這兩個表______。A、是同一個數(shù)據(jù)庫中的兩個表B、不同數(shù)據(jù)庫中的兩個表C、兩個自由表D、一個是數(shù)據(jù)庫表另一個是自由表18.定位第一條記錄上的命令是______。A、GOTOPB、GOBOTTOMC、GO6D、SKIP19.在關(guān)系模型中,實現(xiàn)"關(guān)系中不允許出現(xiàn)相同的元組"的約束是通過______。A、候選鍵B、主鍵C、外鍵D、超鍵20.設(shè)當(dāng)前數(shù)據(jù)庫有10條記錄(記錄未進(jìn)行任何索引),在下列三種情況下,當(dāng)前記錄號為1時;EOF()為真時;BOF()為真時,命令?RECN()的結(jié)果分別是______。A、1,11,1B、1,10,1C、1,11,0D、1,10,021.下列表達(dá)式中結(jié)果不是日期型的是__CCBBA____。A、CTOD("2000/10/01")B、{^99/10/01}+365C、VAL("2000/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)該選擇的索引類型為______。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)在計算機(jī)存儲空間中的存放形式稱為數(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)該使用______短語。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、詳細(xì)設(shè)計D、程序編碼3.結(jié)構(gòu)化程序設(shè)計主要強調(diào)的是______。A、程序的規(guī)模B、程序的易讀性C、程序的執(zhí)行效率D、程序的可移植性4.在軟件生命周期中,能準(zhǔn)確地確定軟件系統(tǒng)必須做什么和必須具備哪些功能的階段是______。A、概要設(shè)計B、詳細(xì)設(shè)計C、可行性分析D、需求分析5.下列關(guān)于棧的敘述中正確的是______。A、在棧中只能插入數(shù)據(jù)B、在棧中只能刪除數(shù)據(jù)C、棧是先進(jìn)先出的線性表D、棧是先進(jìn)后出的線性表6.下面不屬于軟件設(shè)計原則的是______。A、抽象B、模塊化C、自底向上D、信息隱蔽7.對長度為N的線性表進(jì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表達(dá)式中,運算結(jié)果是邏輯真的是______。A、EMPTY(.NULL.)B、LIKE('acd','ac?')C、AT('a','123abc')D、EMPTY(SPACE(2))12.表達(dá)式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、用戶可以在組合框中進(jìn)行多重選擇B、用戶可以在列表框中進(jìn)行多重選擇C、用戶可以在一個選項組中選中多個選項按鈕D、用戶對一個表單內(nèi)的一組復(fù)選框只能選中其中一個23.確定列表框內(nèi)的某個條目是否被選定應(yīng)使用的屬性是______。A、ValueB、ColumnCountC、ListCountD、Selected24.設(shè)有關(guān)系R1和R2,經(jīng)過關(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",則下列表達(dá)式中值為.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ī)則框中輸入的表達(dá)式中類型是________。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.邏輯表達(dá)式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.INSERTINTOR(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條記錄顯示,請給出sqlcreatetablet(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ù).
M
字段為區(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)該是6武漢)Id
M
S
1
60
哈爾濱
2
70
長春
3
80
沈陽
4
50
北京
5
90
鄭州
6
75
武漢
7
80
長沙
8
90
廣東要求,請用一句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語句,查詢選修了’計算機(jī)原理’的學(xué)生學(xué)號和姓名(2).寫一個SQL語句,查詢’周星馳’同學(xué)選修了的課程名字(3).寫一個SQL語句,查詢選修了5門課程的學(xué)生學(xué)號和姓名
(1)selectsno,snamefromstudentwheresnoin(selectsnofromscwherecno=(selectcnofromcoursewherecname='計算機(jī)原理'))
(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就搞定了,真是狂汗,看來還要看書。
用一句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
TOP
n-m+1
*
FROM
TABLE
AS
a
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(selectTOPpagesize*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)該為:所取得記錄的id應(yīng)該為21到30。這時該語句應(yīng)該為:
select*from(selectTOP10*FROM(SELECTTOP30*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ù),但這時是按照降序排列的,不符合要求。最后在重新排序得到最終我們需要的數(shù)據(jù)。id在21-30之間。隨機(jī)取出若干條記錄的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
PASSWORD1
Tom
1234
2
Mary
1234
3
Lucy
1234
4
Billy
1234
5
Henry
1234
B表記錄:ID
NAME
PASSWORD1
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
PASSWORD1
Tom
1234
2
Mary
1234
3
Lucy
1234
4
Billy
2548
5
Henry
1234
B表記錄:ID
NAME
PASSWORD1
Jojoy
1234
2
Mary
1234
3
Lucy
1234
4
Billy
1234
5
Henry
1234
找出兩表中的不同記錄,以下兩條SQL語句都能實現(xiàn)。
select*frombwherenamenotin(selectnamefroma)orpasswordnotin(selectpasswordfroma)
select*frombwherenotexists(select*fromawhere=anda.password=b.password)select*frombwherenotexists(select*fromawhere=anda.password=b.password)SQLServer不同行列相減實例解析
昨天技術(shù)主管面試新人時出了道數(shù)據(jù)庫編程題,自己也是新人,所以順便拿過來研究一下,題目如下:
數(shù)據(jù)庫表TEST,表結(jié)構(gòu)及數(shù)據(jù)如下:
CREATETABLETEST(IDchar(10)PRIMARYKEY,NAMEchar(10),AMOUNTnumeric(9))
ID
NAME
AMOUNT101
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é)果(要求SQL的查詢性能和效率為最高):ID
AMOUNT101
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
AMOUNT105
cr
500這條記錄后,查詢結(jié)果如下:ID
AMOUNT101
350
102
-50
103
0
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é)果顯示為如下形式:
部門號
平均工資
1
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、請列出工資大于本部門平均工資的員工姓名和部門號以及統(tǒng)計此部門的人數(shù)。結(jié)果顯示為如下形式:
EMPNAME
DEPID
部門人數(shù)
ZHANGSAN
1
15
LISI
2
10這個有點難度,我試了半天都沒解決。正解1:SELECTT1.empname,T1.depid,T2.部門人數(shù)FROMdbo.empT1INNERJOIN(selectt1.depid,avg(t2.salary)ASsalary,COUNT(empid)AS部門人數(shù)fromdept1innerjoindbo.empt2ont1.depid=t2.depidgroupbyt1.depid)T2ONT1.depid=T2.depidWHERET1.salary>T2.salary正解2:
selectempname,emp.depid,s部門人數(shù)fromempInnerJoin(selectdepid,avg(salary)a,count(1)sfromempgroupbydepid)bonemp.depid=b.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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 外墻清洗與維護(hù)措施方案
- 建筑施工勞動力管理方案
- 糧庫倉儲管理流程再造方案
- 基坑開挖施工安全評估方案
- 川大口腔頜面外科學(xué)練習(xí)題及答案12先天性唇、面裂和腭裂
- 燃?xì)庀到y(tǒng)維護(hù)手冊編制方案
- 可持續(xù)景觀實踐技術(shù)方案
- 我最喜歡的動物中山市石岐中心小學(xué)劉允霞專業(yè)知識講座
- 支氣管哮喘護(hù)理課件
- 文庫發(fā)布:技術(shù)設(shè)計題
- GB/T 8607-2024專用小麥粉
- 2024版惡性腫瘤患者營養(yǎng)治療指南解讀
- 新版外國人永久居住身份證考試試題
- 2024年中考數(shù)學(xué)復(fù)習(xí):瓜豆原理講解練習(xí)
- 高一歷史期末試題中國近現(xiàn)代史
- (高清版)DZT 0210-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 硫鐵礦
- 《光熱透鏡法弱吸收率測試儀》(征求意見稿)
- QC080000體系內(nèi)部審核檢查表
- 鋼結(jié)構(gòu)課程設(shè)計-鋼結(jié)構(gòu)平臺設(shè)計
- 化纖有限公司財務(wù)流程及制度手冊
- GRR表格MSA第四版完整版
評論
0/150
提交評論