数据库程序员面试分类真题27.docx
《数据库程序员面试分类真题27.docx》由会员分享,可在线阅读,更多相关《数据库程序员面试分类真题27.docx(12页珍藏版)》请在课桌文档上搜索。
1、数据库程序员面试分类真题27倚答题1.Oracle和MySQ1.中的分组(GROUPBY)有什么区别?正确答案:OraCIe对于GROUPBY是严格的,所有要SE1.ECT出来的字段必须在GRO(江南博哥)UPBY后边出现,否则会报错:u0R-00979:notaGROUPBYexpressiono而MySQ1.则不同,如果SE1.ECT出来的字段在GRoUPBY后面没有出现,那么会随机取出一个值,而这样查询出来的数据不准确,语义也不明确。所以,作者建议在写SQ1.语句的时候,应该给数据库一个非常明确的指令,而不是让数据库去猜测,这也是写SQ1.语句的一个非常良好的习惯。下面给出一个示例。有一
2、张T_MAX_1.HR表,数据如下图所示,有3个字段ARTIC1.E.AUTHOR和PRICE。请选出每个AUTHOR的PRICE最高的记录(要包含所有字段)。ARTIC1.EAUTHORPRICE0001B3.99000210.990003C1.690004B19.9500056.96首先给出建表语句:CREATETAB1.ET_MAX_1.HR(ARTIC1.EVRCHR2(30),AUTHORVARCHR2(30),PRICENUMBER)OracteCREATETAB1.ET_MAX_1.HK(ARTIC1.EVARCHAR(30),AUTHORVARCHAR(30),PRICEF1.
3、OAT);MySQ1.OraCIe通用INSERTINTOT_MAX_1.HRVA1.UES(0001,B,3.99);INSERTINTOT_MAX_1.HKVA1.UES(,0002,A,10,99);INSERTINTOT_MAX_1.HRVA1.UESC0003,C,.1.69);INSERTINTOT_MAX_1.HRVA1.UESC0004,B,19.95);INSERTINTOT_MAX_1.HRVA1.UESC0005,A,6.96);COMMIT;SE1.ECT*FROMTMAX1.HR;在OraCIe中的数据:-AUTHORBRlCE1.HRgOrchSnSE1.ECTFR
4、OM1.MAX_1.HRlAKiK1.EAUTHORPRICEOOOIB3.99OOO2A10.990003CIJ0004B19.95啷A6.96在MySQ1.中的数据:mysqlSE1.ECT,FROMT_MAX_1.HR;IARn(IE:.U三Fffl(IIIIMIselnw11O;wsion5.6.21-HiteTprise-Coeercial-advanced-logmjqSE1.ECTTAKnC1.ElAIJrHOKMAXlT,PR1CE)FROMT_MAX_1.HRTGROUPBY1.ITIIOR:三IOEA11三WX(T-PRICE)MO2A10.99MOIB19.95W03!C
5、1.693rowsint(Q(Osa)11i)SlSE1.ECT*FROMT_MAX_1.HRTGROUPBYTA(JTHOR;IARIiafIIIM三IKICE100Q2IA,111!10.99,100oiIBI199I三!C1.693Wiinjet(0.00sec)虽然执行不报错,可以查询出数据,但是从结果来看数据并不是最终想要的结果,甚至数据是错乱的。卜.面给出几种正确的写法(在OraCle和IMySQ1.中均可执行:(1)使用相关子查询SE1.ECT*1ROMT_MAX_1.HKTWHERE(T.AUTHOR.T.PRICE)IN(SE1.ECTNT.AUTHOR,MAX(NT.PRI
6、CE)PRICE1ROMT_MAX_1.HRNTGROUPBYNT.AUTHOR)ORDERBYT.ARTIC1.E;SE1.ECT*FROMT_MAX_1.HRTWHERET.PRICE=(SE1,ECTMAX(NT.PRICE)PRICEFROMT_MAX_1.HRNTWHERET.AUTlIOR=NT.AUTHOR)ORDERBYT.ARTIC1.E;(2)使用非相关子查询SE1.ECTT.*FROMT_MAX_IJIRTJOIN(SE1.ECTNT.AUTHOR,MAX(NT.PRICE)PRICEFROMT_MAX_1.HRNTGROUPBYNT.AUTHOR)TlONT.AUTHO
7、R=T1.AUTHORANDT.PRlCE=Tl.PRICEORDERBYT.ARTIC1.E;(3)使用1.EFTJOIN语句SE1.ECTT.*FR0MT_MAX_1.HRT1.EFTOUTERJOINT_MAX_1.HRTlONT.AUTHOR=T1.AUTHORANDT.PRICESE1.三T.2 FRoM1.MW1.HRT3 1.EFTourERJOlN1.MAX-UiRTI4 ONrAirnKS-TlJWnKOR5 ANDTJ,RiaSE1.ECTT.,- FRoM1.MAX一1.HRT- 1.HT0U三JOINT_MAX_1.HRTI- ONT.AIIHOR-TlAUTHOR-
8、Andtprkktlpiuce- Wheretiarticieisnull- ORDERBYTAKnC1.E;,IiARTIQfIMWIPRICEI(三Ia10.99;Ic1.69OW!B务i119.96,Jnwshsct(O.OOjcc)2.Oracle和MySQ1.中的分组(GRO1.PBY)后的聚合函数分别是什么?正确答案:在OraCIe中,可以用Wb1.CoNCAT函数或1.lSTAGG分析函数:在MySQ1.中可以使用GRoUP_C0NCAT函数。示例如下:首见给出建表语句:CREATETAB1.ETJIXJJIR(ARTIC1.EVRCHAR2(30),AUTHORVRCHAR2(
9、30),PRICENUMBER);Oracle-CREATETAB1.ET_MAX_1.HR(ARTIC1.EVARCHAR(30),AUTHORVRCHAR(30),PRICEF1.OAT)MySQ1.OraCIe通用INSERTINTOTMAX1.HRVA1.UES(,000,B,3.99);INSERTINTOTMAX1.HRVA1.UES(,0002,A,10.99)INSERTINTOT_MAX_1.HRVA1.UES(,00031,C,1.69);INSERTINTOT_MAX_1.HRVA1.UES(,00041,B,19.95)INSERTINTOT_MAX_1.HRVA1.U
10、ES(,0005,*/V,6.96);COMMIT;SE1.ECT*ROMT_MAX_1.HK;在MySQ1.中:11wSelecttauihor,GROUPlONCATfrARn(IE)IGROU”oNcAT(TpRKl)-FROM1.MAX_1.HRT-Groupbytauthor;.TOGROl?.(三T(T.ARTIOD;三P.三T(T.PRICE)00Q2,W)5I1(199,6.%0001.0CW,I199,19.950003I1.69Srousinitt(O-Wsoc)在OraCle中:1.HRgcrdBnPSaECrTAUnIOR.啊。赋机TARME)ARTIeIEtWM一CO
11、NCATn,PR1CT)PRICE2 FROM1.M必1.HRT3 GRoIPBYTA加OR;AlTOARTIC1.EPRICEAOXe.000510.W,6.96B0!,00043.99.19.95COKe1.691.HRgorcUsnSE1.ECT!AUTHOR.2 UsTAGG(1.ARTIC1.E.)WlnHNGROtTORDERBYTfRlCE).ARTIC1.E,3 USTAOHT.PRKI,:iWTTHINGRWrderBYTfRlCE)PRICE4 FRoM1.MAI1.HRT5 GRO1.TBYTOfcMWARTIC1.EPRIdAOoO5.00026.96,Id99B000
12、1,0013.99,19.95C00031.693. MySQ1.的分区表是什么?如何查询MySQ1.是否支持分区?正确答案:表分区是指根据一定规则,将数据库中的一张表分解成多个更小的、容易管理的部分。从逻辑上看,只有一张表,但是底层却是由多个物理分区组成,每个分区都是一个独立的对象。分区有利于管理大表,体现了“分而治之”的理念。一个表最多支持1024个分区。在MySQ1.5.6.1之前可以通过命令showvariableslike,%have_partitioning%,来查看MySQ1.是否支持分区。若have_partintioning的值为YES,则表示支持分区。从VySQ1.5.6.
13、1开始,该参数已经被去掉1.而是用SHOWP1.UGINS来代替0若有partition行且STATUS列的值为ACTIVE,则表示支持分区,如下:0ldbSHOWP1.UGINS;o?:SuusIType1.ihrarr1.iceisepartitionAaDESKRAGEDCINEXlllPKffiIETARY此外,也可以使用表INFORMATlON_SCHEMA.P1.UGINS来查询,如下:m)SE1.ECTP1.UG(NKMEASNAME- P1.1.GW_VTRSIONASVERSION.- PUG凡STATUSASSTA1US- FROMINFORMXnON_SCHEMA.P1.
14、UGINSA- WHEREP1.UGINjYPEnlSTORAGEENGiNF- ANDAT1.UGNAME=卿i(MNAJE郦STARSIpartition1.0ACTDE4. MySQ1.的分区表有哪些?正确答案:MySQ1.支持的分区类型主要包括RANGE分区、1.lST分区、HASH分区和KEY分区。分区表中对每个分区再次分割就是子分区(SUbPartitiOning),又称为复合分区。在MySQ1.5.5中引入了CO1.UMNS分区,细分为RANGECO1.UMNS1.ISTCO1.UMNS分区。引入CO1.UMNS分区解决了MySQ1.5.5版本之前RANGE分区和1.IST分区只
15、支持整数分区,从而导致需要额外的函数计算得到整数或者通过额外的转换表来转换为整数再分区的问题.KEY分区类似HASH分区,HASH分区允许使用用户自定义的表达式,但KEY分区不允许使用用户自定义的表达式。HASH仅支持整数分区,而KEY分区支持除了B1.OB和TEXT的其他类型的列作为分区键。KEY分区语法为PARTITIONBYKEY(EXP)PARTlTK)NS4;EXP是零个或多个字段名的列表在进行KEY分区的时候,EXP可以为空,如果为空,那么默认使用主键作为分区键。若没有主键则会选择非空唯一键作为分区键。MySQ1.允许分区键值为NU1.1.,分区键可能是个字段或者一个用户定义的衣达
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 程序员 面试 分类 27

链接地址:https://www.desk33.com/p-1416080.html