您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)oracle中sql試題有哪些,小編覺得挺實(shí)用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
待驗(yàn)證 1.創(chuàng)建一張學(xué)生信息表student_info,包含以下信息:學(xué)號、姓名、性別、生日、家庭住址、聯(lián)系電話;創(chuàng)建一張學(xué)生成績表student_score 包含學(xué)號、學(xué)科、成績。 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é)號,姓名,學(xué)科,成績 CREATE TABLE TEST AS SELECT a.id,a.name,b.subject,b.score FROM student_info a,student_score b; 3、將根據(jù)字符查詢轉(zhuǎn)換后結(jié)果,規(guī)則為:'A'轉(zhuǎn)換為'男','B'轉(zhuǎn)換為'女',其他字符轉(zhuǎn)換為‘未知’,試用一個SQL語句寫出。 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é)生張三的各科成績,需要以下信息:學(xué)號、姓名、學(xué)科、成績,且按成績的降序排序。 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é)生總成績由高到低排名,如果成績相同則排名一樣,輸出字段為:排名、學(xué)號、姓名、總成績。 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ù)返回一個唯一的值,當(dāng)碰到相同數(shù)據(jù)時,排名按照記錄集中記錄的順序依次遞增。 ②DENSE_RANK: Dense_rank函數(shù)返回一個唯一的值,除非當(dāng)碰到相同數(shù)據(jù)時,此時所有相同數(shù)據(jù)的排名都是一樣的。 ③RANK: Rank函數(shù)返回一個唯一的值,除非遇到相同的數(shù)據(jù)時,此時所有相同數(shù)據(jù)的排名是一樣的,同時會在最后一條相同記錄和下一條不同記錄的排名之間空出排名。 http://www.cnblogs.com/wuyisky/archive/2010/02/24/oracle_rank.html 6.題目1中,假設(shè)學(xué)科包含'語文','英語','數(shù)學(xué)','地理',請按以下格式輸出學(xué)生的成績 學(xué)號 姓名 語文 英語 數(shù)學(xué) 地理 總成績 xxx xxx 70 70 70 70 280 SELECT A.ID, A.NAME, SUM(DECODE(B.SUBJECT, '語文', SCORE, NULL)) AS 語文, --這里沒有單引號 SUM(DECODE(B.SUBJECT, '數(shù)學(xué)', SCORE, NULL)) AS 數(shù)學(xué), SUM(DECODE(B.SUBJECT, '英語', SCORE, NULL)) AS 英語, 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表中,求出各個學(xué)科的平均成績,要求降序排序 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; 符合這兩個條件的數(shù)據(jù)會被匯總到起來 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ù)被匯總起來,從其中取出符合下面數(shù)據(jù)的 9、有一張表TEST,只有一個字段COL,一共有4條記錄,分別是a,b,c,d,對應(yīng)四個球隊,現(xiàn)在四個球隊進(jìn)行比賽,用一條sql語句顯示所有可能的比賽組合。 select a.col,b.col from TEST a ,TEST b where a.col<b.col; 10、有表dm_acrm.test01,數(shù)據(jù)結(jié)構(gòu)為班級(class)、學(xué)號(id_number)、數(shù)學(xué)成績(math)、英語成績(English) 表內(nèi)數(shù)據(jù)如下: (備注:右下角打水印處被遮擋的是C02) 請匯總各班級的人數(shù)、數(shù)學(xué)平均成績、英語平均成績,并計算所有學(xué)生的人數(shù)、數(shù)學(xué)平均成績、英語平均成績(建議使用rollup)。 SELECT COUNT(id_number),AVG(match),AVG(english) FROM dm_acrm.test01 GROUP BY rollup(CLASS); http://blog.itpub.net/519536/viewspace-610995/ 11、有一張表TEST,有字段客戶ID(cust_id)和交易日期(txn_dte),表結(jié)構(gòu)如下 Create test( Cust_id numberic, Txn_dte date )distributed by(cust_id); 假設(shè)表中含有的數(shù)據(jù)量有千萬級以上(無法通過表自關(guān)聯(lián)),請生成一張表,里面存放客戶ID、交易日期以及上一次交易日期。 /* distributed by關(guān)鍵字查到是GP數(shù)據(jù)庫相關(guān)的,以后遇到再說 */ 某公司的數(shù)據(jù)開發(fā)初級工程師筆試題: 一、SQL語句 已知3張表的關(guān)系模式: S (SNO,SNAME) 學(xué)生關(guān)系。SNO 為學(xué)號,SNAME 為姓名 C (CNO,CNAME,CTEACHER) 課程關(guān)系。CNO 為課程號,CNAME 為課程名,CTEACHER 為任課教師 SC(SNO,CNO,SCGRADE) 選課關(guān)系。SCGRADE 為成績 要求實(shí)現(xiàn)如下5個處理: 1. 找出沒有選修過“李明”老師講授課程的所有學(xué)生姓名 2. 列出有二門以上(含兩門)不及格課程的學(xué)生姓名及其平均成績 3. 列出既學(xué)過“1”號課程,又學(xué)過“2”號課程的所有學(xué)生姓名 4. 列出“1”號課成績比“2”號同學(xué)該門課成績高的所有學(xué)生的學(xué)號 5. 列出“1”號課成績比“2”號課成績高的所有學(xué)生的學(xué)號及其“1”號課和“2”號課的成績 1. SELECT SNAME FROM S WHERE SNAME != (SELECT A.SNAME FROM S A, C B, SC C WHERE A.SNO = C.SNO AND B.CNO = C.CNO AND B.CTEACHER = '李明'); 2. SELECT A.SNAME, AVG(C.SCGRADE) FROM S A, C B, SC C WHERE A.SNO = C.SNO AND B.CNO = C.CNO AND (SELECT COUNT(C.CNO) FROM S A, C B, SC C WHERE A.SNO = C.SNO AND B.CNO = C.CNO AND C.SCGRADE < 60 GROUP BY A.SNAME) >= 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); 常問的面試題匯總: 1、怎么在存儲過程中使用臨時表? 2、口述一下存儲過程的寫法 3、你了解oracle表分區(qū)嗎?它有什么優(yōu)缺點(diǎn) 4、oracle表分區(qū)的分區(qū)類型有哪幾種?它們的操作方法你知道嗎? 5、談?wù)勀銓?zhí)行計劃的理解,你主要看執(zhí)行計劃的哪部分? 6、你對sql語句優(yōu)化有何看法,能說出幾種優(yōu)化方法嗎? 7、oracle優(yōu)化器內(nèi)部處理的表連接方式知道嗎?有哪幾種? 8、會使用開窗函數(shù)嗎?說一下你對開窗函數(shù)、聚合函數(shù)、分析函數(shù)的理解 9、游標(biāo)的屬性有哪幾種?顯式游標(biāo)和隱式游標(biāo)的使用方式分別是什么? 10、plsql塊怎么捕捉到異常?你能說出幾個常見的預(yù)定義異常嗎? 11、說一下自定義異常如何在plsql塊中實(shí)現(xiàn)? 12、你了解視圖嗎?視圖的優(yōu)缺點(diǎn)是什么? 13、假如讓你開發(fā)一張報表,數(shù)據(jù)量比較小,你會怎樣去實(shí)現(xiàn)它?讓報表的數(shù)據(jù)展現(xiàn)出來? 14、hash join聽說過嗎?(回答 了解過 后,繼續(xù)追問 還有幾種連接方式你知道嗎?說一下看看) (這個其實(shí)跟7是差不多的,哈希連接這個東西我面試4次被問了3次,印象深刻) 15、你在學(xué)校里有沒有接觸過數(shù)據(jù)庫?了解數(shù)據(jù)庫的體系結(jié)構(gòu)嗎? 16、你知道SGA和PGA分別是什么嗎? 17、有沒有試著寫過觸發(fā)器?觸發(fā)器的寫法能大致描述一下嗎? 18、函數(shù)和存儲過程有什么區(qū)別? 19、對函數(shù)了解嗎?說出幾個常用的函數(shù) 20、(說出SUM、COUNT、AVG等函數(shù)后)知道instr和substr嗎?他們的作用是什么? 22、(面試官拿出個本子)寫一下decode函數(shù)的基本結(jié)構(gòu)(decode(valus,if1,then1,if2,then2……)) 23、OLAP和OLTP分別指什么? 24、談?wù)勀銓λ饕睦斫? 25、delete和truncate有什么區(qū)別 26、授權(quán)和撤銷權(quán)限用的指令分別是? 27、rowid和rownum有什么不同? 28、分頁存儲過程里的分頁sql語句部分是怎么寫的?能不能直接先select * from table_name where rownum>=6 然后再rownum<=10。(回答不能之后被追問 為什么?) 29、oracle作業(yè)中用到的包是?(追問 運(yùn)行作業(yè)、刪除作業(yè)用到的包分別是?) 30、你的oracle的發(fā)展前景怎么看? 31、如果有一天甲骨文公司倒閉了,你會做出什么選擇? 32、你知道oracle的最高認(rèn)證是什么嗎?(回答:OCM,追問:你想到達(dá)這種高度嗎?回答:想,追問:但是你知道通過OCM的人中國有多少嗎?這樣的高度是高級DBA的高度,有些人終其一生都達(dá)不到,在你被現(xiàn)實(shí)逼迫的時候,你會選擇放棄嗎?PS:這個考官當(dāng)時很犀利,表情很嚴(yán)肅,內(nèi)心很激動,一層一層追問下去,問得我都想哭了,小小應(yīng)屆生,為了夢想而出來,容易么。。。)
關(guān)于“oracle中sql試題有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。