《数据库程序员面试分类真题24.docx》由会员分享,可在线阅读,更多相关《数据库程序员面试分类真题24.docx(9页珍藏版)》请在课桌文档上搜索。
1、数据库程序员面试分类真题24简答题1. 如何确定MySQ1.是否处于运行状态?如何开启MySQ1.服务?正确答案:分为1.inux和Windows来讨论。1)在1.inUX卜启动MySQ1.服务:(江南博哥)Irooigtesdb,pJaViamysqlSUmSERROR!tm,sqlisnoys5tttdb.pidmysqlJMI29384319:30网)0).flO09rSbininysqldteso=-srdiBdir=,vjr1ib,mysql-p)upn(fr-,MHbysqa-USElysqlTogtrra=Hr现却1血).6-pid-filr=r,ar.1ibmysqlits41
2、.pdroot30%234201%OP(So0000X0gripmyl在1.inUX下,也可以通过netstat-nipIgrepInySqId”来查看MySQ1.服务的状态:ErootQtestdb/#netstat-nipgrepmysqldtcp00:3306:*1.ISTEN13853/mysqldunix2CCSTREM1.ISTENING3851113853/mysqldvar1ib/mysq157/mysq1.sock也可以使用mysqld_safe命令启动MySQ1.数据库,通过mysqladmin来关闭MySQ1.数据库:nxxiMib#哂IaiInnUrOevPlhrSh岫
3、Wnm)5lid11三NimingUsi球aPMsWOnian&axnnmJ辰i11rtxeOBbeMCUre.roo(gtdb牛帅qld_sfc&I4rooic5idb胪2017-Ce-23TlftQ2;38.?MWmysqld_safe1.oggingu1,s5711nsl5719.llog11yjqldi3g,.20l7-08-2JT1WE38.726(C9ZmysqldsafcStansgmjnqld(bnceWiIhduas(resHarli)M57,ysql57l9fdw在数据库启动的时候可以加上从指定参数文件进行启动,如下:mysqldsafe-defaults-file=etc
4、f&2)在Windows下启动MySQ1.服务:D:MySQ1.MySQI-advanced-5.6.21-win32binnctstartmysqlMySQ1.服务正在启动.MySQ1.服务已经启动成功。进入Windows的服务可以看到:fWaMV)Mc(三)8*5-QHSSfttM155tt三MkroioftSharePcntWo*kxcAudH-手动McrotohSowaCREATEDATABASENEW1.HRCHARACTERSETGBK;QuenOK.ITOW就xta!(0.13see)哪qlSHOWCREATEDATABASENEWURIteUbaSeCreateEabasene
5、t!hrC三1ENTA三nelhr*!401W三UCIwWCIHl三gfekI11y*insd(2sa)考点创建数据库3. 如何查看当前数据库里有哪些用户?正确答案:可以通过查询mysql.user表来查询数据库的用户。考点创建数据库4. 如何查看数据库的版本、当前登录用户和当前的数据库名称?正确答案:通过VERSION()函数可以查询版本,通过USERo函数可以杳询当前登录数据库的用户,通过DATABASEo函数可以获取当前连接的数据库名称,如下:mysqlSE1.ECTVERSIONOgVERSloNUSERoDXrABASE(XT3SICK()IWVEKIm1.SfflO;阳邮E()i6
6、l21-cnte!prisrcBfrcial-adranced-og;5.6.21-rterprisrco三rciai-advand!ogrtlloltostaj-sqllr*inrootSd6ftr-pmjq-Vm河r14.14trib5.621,for1.inux(x86_M)usingEM三e*11pp考点创建数据库5. 如何连接到MySQ1.数据库?正确答案:连接到MySQ1.数据库有多种写法,假设MySQ1.服务器的地址为192.168.59.130,可以通过如下几种方式来连接VySQ1.数据库:1)mysql-p02)nysql-uroot-Po3)mysql-uroot-hl92
7、.168.59.130-po考点连接数据库6. 哪个命令可以查看所有数据库?也确答案:运行命令:showdatabases;4.考点连接数据库7. 如何切换到某个特定的数据库?正确答案:运行命令:usedatabase_name;”的作用是什么?正确答案:比较运算符“V=”表示安全的等于,这个运算符和“=”类似,都执行相同的比较操作,不过“可以用来判断NU1.1.值,在两个操作数均为NU1.1.时,其返回值为1而不为NU1.1.,而当一个操作数为NU1.1.时,其返回值为0而不为NU1.1.。示例如下:m5qlslttll=X),Z2,NU1.1.MJ1.kl0I,2,2:三iWU1.1.I考
8、点数据类型H.MySQ1.数据类型有哪些属性?正确答案:数据类型的属性包括auto_increment、binary、default-,index,notnull、null、primarykey.UniqUe和ZerOfi11,具体见下表。属性列l)auto_increment能为新插入的行赋予一个唯一的整数标识auto_increment符,该属性只用于整数类型2)auto_increment一般从1开始,每行增加1可以通过binarydefaultindexnotnullnul1primarykey“A1.TERTAB1.ETBNAMEAUTOINCREMENT=n;语句强制设置H动增长列
9、的初始值,但是该强制的默认值是保留在内存中的。如果该值在使用之前数据库重新启动,那么这个强制的默认值就会丢失,需要在数据库启动以后重新设置3)可以使用1.ASTNSERTID()查洵当前线程最后插入记录使用的值。如果次相入了多条记录,那么返回的是第一条记录使用的自动增长值4)MySQ1.要求将auto_increment属性用于作为主键的列5)每个表只允许有一个auto_increment列6)自动增长列可以手工插入,但是插入的值如果是空或者0,那么实际插入的将是自动增长后的值7)对于InnODB表,自动增长列必须是索引。如果是组合索引,也必须是组合索引的第一列,但是对于MylSAM表,H动增
10、长列可以是组合索引的其他列,这样插入记录后,自动增长列是按照组合索引的前几列进行排序后递增的binary属性只用于CHAR和VRCHR值。当为列指定了该属性时,将以区分大小写的方式排序和比较default属性确保在没有任何值可用的情况下,赋予某个常量值,这个值必须是常量,因为MySQ1.不允许插入函数或表达式值。此外,此属性无法用于B1.OB或TEXT列。如果已经为此列指定/NU1.1.属性,那么当没有指定默认值时默认值将为讹1.1.,否则默认值将依赖于字段的数据类型如果所有其他因素都相同,要加速数据库查询,那么使用索引通常是最重要的一个步骤。索引一个列会为该列创建一个有序的键数组,每个键指向
11、其相应的表行。以后针对输入条件可以搜索这个有序的键数组,与搜索整个未索引的表相比,这将在性能方面得到极大的提升如果将一个列定义为notnull,那么将不允许向该列插入nul1值。建议在重要情况下始终使用notnull属性,因为它提供了一个基本验证,确保已经向奁洵传递了所有必要的值为列指定null属性时,该列可以保持为空,而不论行中其他列是否已经被填充。null精确的说法是“无”,而不是空字符串或0primarykey属性用于确保指定行的唯一性。指定为主健的列中,值不能重复,也不能为空。为指定为主键的列赋予auto_increment属性是很常见的,因为此列不必与行数据有任何关系,而只是作为一个
12、唯一标识符。主健又分为以下两种:1)单字段主键.如果输入数据库中的每行都已经有不可修改的唯一标识符,一般会使用单字段主键。注意,此主键一旦设置就不能再修改2)多字段主键。如果记录中任何一个字段都不可能保证唯一性,那么就可以使用多字段主键。这时,多个字段联合起来确保唯一性。如果出现这种情况,那么指定一个auto_increment整数作为主键是更好的办法被赋予unique属性的列将确保所有值都有不同的值,只是uniquenull值可以重复。一般会指定一个列为UniqUe,以确保该列的所有值都不同Zerofill属性可用于任何数值类型,用0填充所有剩余字段空zerofill间。例如,无符号ini的
13、默认宽度是10;因此,当“零填充”的int值为4时,将表示它为OooOoOoo04考点数据类型12. UySQI.如何实现插入时,如果不存在则插入,如果存在则更新的操作?正确答案:在Oracle中由MERGEINTO来实现记录已存在就更新的操作,mysql没有MERGEINTo语法,但是有REP1.ACEIT0的写法,同样实现记录已存在就更新的操作。SQ1.Server中的实现方法是ifnotexists(select1fromtwhereid=l)insertintot(id,update_time)values(1,getdate()elseupdatetsetupdate_time=ge
14、tdateOwhereid=lMySQ1.的REP1.ACEINTO有3种形式:1. REP1.ACEINTOTB1._NAUE(CO1.NAME)VA1.UES(,)2. REP1.ACEINTOTBI._NAME(CO1._NAME)SE1.ECT3. REP1.ACEINTOTBl-NAMESETCO1._NAME=VA1.UE其中,“INTO”关键2可以省略,不过最好加上“IT0”,这样意思更加直观。另外,对于那些没有给予值的列,MySQ1.将自动为这些列赋上默认值。13. 用哪些命令可以查看MySQ1.数据库中的表结构?正确答案:查看MySQ1.表结构的命令有如下几种:I)DESC表
15、名。2) SHOWCO1.UMNSFROM表名。3) DESCRlBE表名。4) SHOWCREATETAB1.E表名。5)USEINFORMATION-SCHEMo14. 如何创建TABB表,完整拷贝TABA表的结构和索引,而且不要数据?正确答案:CRETETAB1.ETABB1.IKETABj15. 如何查看某一用户的权限?正确答案:SHOWGRANTSFORUSERNAME;16. 如何得知当前BINARY1.OG文件和POSITION值?正确答案:SHOWMASTERSTATUS;017. 用什么命令切换BlNARY1.oG?正确答案:F1.USH1.OGS;o18. 用什么命令整理表
16、数据文件的碎片?正确答案:OPTIMIZETAB1.ETAB1.ENAME;19. 如何得到TA_1.HR表的建表语句?正确答案:SHOWCREATETAB1.ETA_1.HR;。20. MySQ1.和Oracle如何修改命令提示符?正确答案:MySQ1.的默认提示符为“mysql,可以使用prompt命令来修改,如F:全局:exportMYSQ1._PSl=(uh)d兰前会话:PromPt(u0h)dR:m:s_其中,“u”代表用户名,“h”代表服务器地址,“d”代表当前数据库,”代表时分秒,例如,23:10:10OraCle的默认命令提示符为“SQ1.”,可以使用“SETSQ1.PRoMP
17、T”命令来修改,如下:sqlshowSqlpromptsqlpromptSQ1.SQ1.setsqlprompt_usew_CONNECt_iDENTlFIErSYSlhrdbSYSlhrdbSH0WSQ1.PROVPTsqlprompt_user0_connect_identifierw在以上结果SYS表示用户,Ihrdb表示数据库。注意,以上提示符的后有一个空格。如果想全局生效,那么可以修改文件:$0RAC1.E-H0ME/sqlplusadminglogin.sql.在glogin.sql文件中添加如下的内容:setSqlprombtuser.connectidentifier”这样,每次登录SQ1.*IlusM时候,SQ1.提示符就会变为设置的内容。