這篇文章將為大家詳細(xì)講解有關(guān)oracle中sql試題有哪些,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶(hù)創(chuàng)新互聯(lián)還提供了青岡免費(fèi)建站歡迎大家使用!
待驗(yàn)證 1.創(chuàng)建一張學(xué)生信息表student_info,包含以下信息:學(xué)號(hào)、姓名、性別、生日、家庭住址、聯(lián)系電話;創(chuàng)建一張學(xué)生成績(jī)表student_score 包含學(xué)號(hào)、學(xué)科、成績(jī)。 CREATE TABLE student_info( ID INT, NAME VARCHAR2(10), sex VARCHAR2(4), brithday DATE, address VARCHAR2(50), phone INT); CREATE TABLE student_score( ID INT, subject VARCHAR2(20), score NUMBER(4,1)); 2、根據(jù)題目中的兩張表,創(chuàng)建一張新表test,包含以下信息:學(xué)號(hào),姓名,學(xué)科,成績(jī) CREATE TABLE TEST AS SELECT a.id,a.name,b.subject,b.score FROM student_info a,student_score b; 3、將根據(jù)字符查詢(xún)轉(zhuǎn)換后結(jié)果,規(guī)則為:'A'轉(zhuǎn)換為'男','B'轉(zhuǎn)換為'女',其他字符轉(zhuǎn)換為‘未知’,試用一個(gè)SQL語(yǔ)句寫(xiě)出。 INSERT INTO student_info VALUES (1100,'aaa','A',to_date('1990/3/3 12:12:12','yyyy/mm/dd hh34:mi:ss'),'asdg',333); SELECT DECODE(sex,'A','男','B','女','其他') FROM student_info; 4、提取題目1表中,學(xué)生張三的各科成績(jī),需要以下信息:學(xué)號(hào)、姓名、學(xué)科、成績(jī),且按成績(jī)的降序排序。 SELECT a.id,a.name,b.subject,b.score FROM student_info a,student_score b WHERE a.id=b.id AND a.name='張三' ORDER BY b.score DESC; 5、題目1表中,按學(xué)生總成績(jī)由高到低排名,如果成績(jī)相同則排名一樣,輸出字段為:排名、學(xué)號(hào)、姓名、總成績(jī)。 SELECT dense_rank() OVER(ORDER BY sum(b.score) DESC) dense_rank,a.id,a.name,sum(b.score) total FROM student_info a,student_score b WHERE a.id=b.id GROUP BY a.name,a.id ①ROW_NUMBER: Row_number函數(shù)返回一個(gè)唯一的值,當(dāng)碰到相同數(shù)據(jù)時(shí),排名按照記錄集中記錄的順序依次遞增。 ②DENSE_RANK: Dense_rank函數(shù)返回一個(gè)唯一的值,除非當(dāng)碰到相同數(shù)據(jù)時(shí),此時(shí)所有相同數(shù)據(jù)的排名都是一樣的。 ③RANK: Rank函數(shù)返回一個(gè)唯一的值,除非遇到相同的數(shù)據(jù)時(shí),此時(shí)所有相同數(shù)據(jù)的排名是一樣的,同時(shí)會(huì)在最后一條相同記錄和下一條不同記錄的排名之間空出排名。 http://www.cnblogs.com/wuyisky/archive/2010/02/24/oracle_rank.html 6.題目1中,假設(shè)學(xué)科包含'語(yǔ)文','英語(yǔ)','數(shù)學(xué)','地理',請(qǐng)按以下格式輸出學(xué)生的成績(jī) 學(xué)號(hào) 姓名 語(yǔ)文 英語(yǔ) 數(shù)學(xué) 地理 總成績(jī) xxx xxx 70 70 70 70 280 SELECT A.ID, A.NAME, SUM(DECODE(B.SUBJECT, '語(yǔ)文', SCORE, NULL)) AS 語(yǔ)文, --這里沒(méi)有單引號(hào) SUM(DECODE(B.SUBJECT, '數(shù)學(xué)', SCORE, NULL)) AS 數(shù)學(xué), SUM(DECODE(B.SUBJECT, '英語(yǔ)', SCORE, NULL)) AS 英語(yǔ), SUM(DECODE(B.SUBJECT, '地理', SCORE, NULL)) AS 地理, SUM(B.SCORE) TOTAL FROM STUDENT_INFO A, STUDENT_SCORE B WHERE A.ID = B.ID GROUP BY A.NAME, A.ID; http://blog.163.com/magicc_love/blog/static/185853662201371481247696/ 7、題目1表中,求出各個(gè)學(xué)科的平均成績(jī),要求降序排序 SELECT b.subject,AVG(b.score) average FROM student_info a,student_score b WHERE a.id=b.id GROUP BY b.subject ORDER BY average DESC 8、下面兩端代碼有什么區(qū)別 select CUST.* ,POS.bus_desc from dw_ods.s00_sema_scmcustp CUST left join dw_pdm.t99_pos_code POS on CUST.cust_pos_code=POS.pos_code and CUST.dw_etl_date='2013-07-31'::date; 符合這兩個(gè)條件的數(shù)據(jù)會(huì)被匯總到起來(lái) select CUST.* ,POS.bus_desc from dw_ods.s00_sema_scmcustp CUST left join dw_pdm.t99_pos_code POS on CUST.cust_pos_code=POS.pos_code where CUST.dw_etl_date='2013-07-31'::date; 符合上面條件的數(shù)據(jù)被匯總起來(lái),從其中取出符合下面數(shù)據(jù)的 9、有一張表TEST,只有一個(gè)字段COL,一共有4條記錄,分別是a,b,c,d,對(duì)應(yīng)四個(gè)球隊(duì),現(xiàn)在四個(gè)球隊(duì)進(jìn)行比賽,用一條sql語(yǔ)句顯示所有可能的比賽組合。 select a.col,b.col from TEST a ,TEST b where a.col= 2 GROUP BY A.SNAME 3. SELECT A.SNAME FROM S A, C B, SC C WHERE A.SNO = C.SNO AND B.CNO = C.CNO AND (SELECT B.CNO FROM S A, C B, SC C WHERE A.SNO = C.SNO AND B.CNO = C.CNO) = 1 AND (SELECT B.CNO FROM S A, C B, SC C WHERE A.SNO = C.SNO AND B.CNO = C.CNO) = 2; 4. SELECT A.SNO FROM S A, C B, SC C WHERE A.SNO = C.SNO AND B.CNO = C.CNO AND (SELECT C.SCGRADE FROM SC) > (SELECT C.SCGRADE FROM S A, C B, SC C WHERE A.SNO = C.SNO AND B.CNO = C.CNO AND A.SNO = 2 AND B.CNO = 1) 5. SELECT A.SNO, C.SCGRADE FROM S A, C B, SC C WHERE A.SNO = C.SNO AND B.CNO = C.CNO AND A.SNO = (SELECT A.SNO FROM S A, C B, SC C WHERE A.SNO = C.SNO AND B.CNO = C.CNO AND (SELECT C.SCGRADE FROM SC WHERE CNO = 1) > (SELECT C.SCGRADE FROM SC WHERE CNO = 2)) AND C.CNO IN (1, 2); 常問(wèn)的面試題匯總: 1、怎么在存儲(chǔ)過(guò)程中使用臨時(shí)表? 2、口述一下存儲(chǔ)過(guò)程的寫(xiě)法 3、你了解oracle表分區(qū)嗎?它有什么優(yōu)缺點(diǎn) 4、oracle表分區(qū)的分區(qū)類(lèi)型有哪幾種?它們的操作方法你知道嗎? 5、談?wù)勀銓?duì)執(zhí)行計(jì)劃的理解,你主要看執(zhí)行計(jì)劃的哪部分? 6、你對(duì)sql語(yǔ)句優(yōu)化有何看法,能說(shuō)出幾種優(yōu)化方法嗎? 7、oracle優(yōu)化器內(nèi)部處理的表連接方式知道嗎?有哪幾種? 8、會(huì)使用開(kāi)窗函數(shù)嗎?說(shuō)一下你對(duì)開(kāi)窗函數(shù)、聚合函數(shù)、分析函數(shù)的理解 9、游標(biāo)的屬性有哪幾種?顯式游標(biāo)和隱式游標(biāo)的使用方式分別是什么? 10、plsql塊怎么捕捉到異常?你能說(shuō)出幾個(gè)常見(jiàn)的預(yù)定義異常嗎? 11、說(shuō)一下自定義異常如何在plsql塊中實(shí)現(xiàn)? 12、你了解視圖嗎?視圖的優(yōu)缺點(diǎn)是什么? 13、假如讓你開(kāi)發(fā)一張報(bào)表,數(shù)據(jù)量比較小,你會(huì)怎樣去實(shí)現(xiàn)它?讓報(bào)表的數(shù)據(jù)展現(xiàn)出來(lái)? 14、hash join聽(tīng)說(shuō)過(guò)嗎?(回答 了解過(guò) 后,繼續(xù)追問(wèn) 還有幾種連接方式你知道嗎?說(shuō)一下看看) (這個(gè)其實(shí)跟7是差不多的,哈希連接這個(gè)東西我面試4次被問(wèn)了3次,印象深刻) 15、你在學(xué)校里有沒(méi)有接觸過(guò)數(shù)據(jù)庫(kù)?了解數(shù)據(jù)庫(kù)的體系結(jié)構(gòu)嗎? 16、你知道SGA和PGA分別是什么嗎? 17、有沒(méi)有試著寫(xiě)過(guò)觸發(fā)器?觸發(fā)器的寫(xiě)法能大致描述一下嗎? 18、函數(shù)和存儲(chǔ)過(guò)程有什么區(qū)別? 19、對(duì)函數(shù)了解嗎?說(shuō)出幾個(gè)常用的函數(shù) 20、(說(shuō)出SUM、COUNT、AVG等函數(shù)后)知道instr和substr嗎?他們的作用是什么? 22、(面試官拿出個(gè)本子)寫(xiě)一下decode函數(shù)的基本結(jié)構(gòu)(decode(valus,if1,then1,if2,then2……)) 23、OLAP和OLTP分別指什么? 24、談?wù)勀銓?duì)索引的理解 25、delete和truncate有什么區(qū)別 26、授權(quán)和撤銷(xiāo)權(quán)限用的指令分別是? 27、rowid和rownum有什么不同? 28、分頁(yè)存儲(chǔ)過(guò)程里的分頁(yè)sql語(yǔ)句部分是怎么寫(xiě)的?能不能直接先select * from table_name where rownum>=6 然后再rownum<=10。(回答不能之后被追問(wèn) 為什么?) 29、oracle作業(yè)中用到的包是?(追問(wèn) 運(yùn)行作業(yè)、刪除作業(yè)用到的包分別是?) 30、你的oracle的發(fā)展前景怎么看? 31、如果有一天甲骨文公司倒閉了,你會(huì)做出什么選擇? 32、你知道oracle的最高認(rèn)證是什么嗎?(回答:OCM,追問(wèn):你想到達(dá)這種高度嗎?回答:想,追問(wèn):但是你知道通過(guò)OCM的人中國(guó)有多少嗎?這樣的高度是高級(jí)DBA的高度,有些人終其一生都達(dá)不到,在你被現(xiàn)實(shí)逼迫的時(shí)候,你會(huì)選擇放棄嗎?PS:這個(gè)考官當(dāng)時(shí)很犀利,表情很?chē)?yán)肅,內(nèi)心很激動(dòng),一層一層追問(wèn)下去,問(wèn)得我都想哭了,小小應(yīng)屆生,為了夢(mèng)想而出來(lái),容易么。。。)
關(guān)于“oracle中sql試題有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。