面试题汇总数据库相关.doc_第1页
面试题汇总数据库相关.doc_第2页
面试题汇总数据库相关.doc_第3页
面试题汇总数据库相关.doc_第4页
面试题汇总数据库相关.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

北京星模实训学校 培养IT界的明星模特 面试题汇总数据库相关1、写出三种以上MySQL数据库存储引擎的名称(提示:不区分大小写)2、说出你所知道的三种以上开源数据库的名称(提示:想想目前国外流行的开源数据库)3、MySQL数据库中的字段类型varchar和char的主要区别是什么?那种字段的查找效率要高,为什么?4、说出MySQL 4.0和MySQL 4.1版本的最主要的两个区别。如果你使用过MySQL 5,请说说MySQL 5跟MySQL 4的主要区别。(后半题选作)5、 MySQL数据库基本的三个优化法则是什么?(提示:从服务配置、应用、开发角度考虑)6、 优化MYSQL数据库的方法。(1).数据库设计方面,这是DBA和Architect的责任,设计结构良好的数据库,必要的时候,去正规化(英文是这个:denormalize,中文翻译成啥我不知道),允许部分数据冗余,避免JOIN操作,以提高查询效率(2).系统架构设计方面,表散列,把海量数据散列到几个不同的表里面.快慢表,快表只留最新数据,慢表是历史存档.集群,主服务器Read & write,从服务器read only,或者N台服务器,各机器互为Master(3).(1)和(2)超越PHP Programmer的要求了,会更好,不会没关系.检查有没有少加索引(4).写高效的SQL语句,看看有没有写低效的SQL语句,比如生成笛卡尔积的全连接啊,大量的Group By和order by,没有limit等等.必要的时候,把数据库逻辑封装到DBMS端的存储过程里面.缓存查询结果,explain每一个sql语句(5).所得皆必须,只从数据库取必需的数据,比如查询某篇文章的评论数,select count(*) . where article_id = ? 就可以了,不要先select * . where article_id = ?然后msql_num_rows.只传送必须的SQL语句,比如修改文章的时候,如果用户只修改了标题,那就update . set title = ? where article_id = ?不要set content = ?(大文本)(6).必要的时候用不同的存储引擎.比如InnoDB可以减少死锁.HEAP可以提高一个数量级的查询速度.7、 谈谈事务处理如同是个编程语言都会有答应Hello World的例子一样,是本数据库的教材都会讲A给B的账户转账50美元的例子,回答这个就好了.不过据我所知,用MySQL的企业,很少用MySQL来实现事务处理.何况现在Oracle收购了InnoDB的公司.答:事务就是一系列的操作,这些操作完成一项任务。只要这些操作里有一个操作没有成功,事务就操作失败,发生回滚事件。即撤消前面的操作,这样可以保证数据的一致性。而且可以把操作暂时放在缓存里,等所有操作都成功有提交数据库,这样保证费时的操作都是有效操作。8、某内容管理系统中,表message有如下字段id 文章idtitle 文章标题content 文章内容category_id 文章分类idhits 点击量创建上表,写出MySQL语句9、同样上述内容管理系统:表comment记录用户回复内容,字段如下comment_id 回复idid 文章id,关联message表中的idcomment_content 回复内容现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面文章id 文章标题 点击量 回复数量用一个SQL语句完成上述查询,如果文章没有回复则回复数量显示为010、上述内容管理系统,表category保存分类信息,字段如下category_id int(4) not null auto_increment;categroy_name varchar(40) not null;用户输入文章时,通过选择下拉菜单选定文章分类写出如何实现这个下拉菜单11、数据库设计题:请设计一套图书馆借书管理系统的数据库表结构;可以记录基本的用户信息、图书信息、借还书信息;数据表的个数不超过6个;请画表格描述表结构(需要说明每个字段的字段名、字段类型、字段含义描述);在数据库设计中应:a 保证每个用户的唯一性;b 保证每种图书的唯一性;每种图书对应不等本数的多本图书;保证每本图书的唯一性;c 借书信息表中,应同时考虑借书行为与还书行为,考虑借书期限;d 保证借书信息表与用户表、图书信息表之间的参照完整性;e 限制每个用户最大可借书的本数f 若有新用户注册或新书入库,保证自动生成其唯一性标识g 为以下的一系列报表需求提供支持:(无特定说明,不需编写实现语句,而需在数据库设计中,保证这些报表可以用最多一条SQL语句实现)a) 日统计报表:当日借书本数、当日还书本数报表;b) 实时报表:i. 当前每种书的借出本数、可借本数;ii. 当前系统中所有超期图书、用户的列表及其超期天数iii. 当前系统中所有用户借书的本数,分用户列出(包括没有借书行为的用户);请编写实现此需求的SQL语句:数据库应用:请撰写一系列的SQL语句,分别描述完整的借书行为与还书行为;并保证这一系列的SQL语句的执行完整性下题是测验能力之最重要测试,如不能完成我们将无法给出评判结果!所以请写出详细的回答,并保证答案是可以执行的程序。在两日内将结果通过电子邮件寄到邮箱结合第二题中你的设计,用一种数据库实现,要求使用三层结构或者多层结构,要求采用面向对象的思想进行编程,有可能的话,设计一套模板机制来实现之。功能:列出当前借出图书的情况 ,按日期排列编号 用户姓名 书名 书的编号 借出日期1. 张进 大染坊 12576587 2004-9-12. 刘兴 西游记 32131098 2004-9-212、 SQL 中LEFT JOIN的含义是(16)。如果 tbl_user记录了学生的姓名(name)和学号(ID),tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject),要想打印出各个学生姓名及对应的的各科总成绩,则可以用SQL语句(17)。自然左外连接select name , count(score) as sum_score from tbl_user left join tbl_score on tbl_user.ID=tbl_score.ID group by tbl_user.IDcreate database phpinterview;use phpinterviewcreate table tbl_user( ID int not null, name varchar(50) not null, primary key (ID);create table tbl_score( ID int not null, score dec(6,2) not null, subject varchar(20) not null);insert into tbl_user (ID, name) values (1, beimu);insert into tbl_user (ID, name) values (2, aihui);insert into tbl_score (ID, score, subject) values (1, 90, 语文);insert into tbl_score (ID, score, subject) values (1, 80, 数学);insert into tbl_score (ID, score, subject) values (2, 86, 数学);insert into tbl_score (ID, score, subject) values (2, 96, 语文);select A.id,sum(B.score) as sumscorefrom tbl_user A left join tbl_score Bon A.ID=B.IDgroup by A.id13、写出发贴数最多的十个人名字的SQL,利用下表:members(id,username,posts,pass,email)14、 防止SQL注射漏洞一般用_函数。15、查询在线人数,并能处理异常掉线的SQL.WHERE _ 16、MYSQL取得当前时间的函数是?,格式化日期的函数是17、写出 SQL语句的格式 : 插入 ,更新 ,删除 (4分)表名UserNameTelContentDate张三大专毕业 2006-10-11张三本科毕业 2006-10-15张四中专毕业 2006-10-15(a) 有一新记录(小王高中毕业 2007-05-06)请用SQL语句新增至表中(b) 请用sql语句把张三的时间更新成为当前系统时间(c) 请写出删除名为张四的全部记录18、请写出数据类型(int char varchar datetime text)的意思; 请问varchar和char有什么区别19、MySQ自增类型(通常为表ID字段)必需将其设为(?)字段20、取得查询结果集总数的函数是?21、以下请用PHPMYADMIN完成(一)创建新闻发布系统,表名为message有如下字段 (3分)id 文章idtitle 文章标题content 文章内容category_id 文章分类idhits 点击量(二)同样上述新闻发布系统:表comment记录用户回复内容,字段如下 (4分)comment_id 回复idid 文章id,关联message表中的idcomment_content 回复内容现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面文章id 文章标题 点击量 回复数量用一个SQL语句完成上述查询,如果文章没有回复则回复数量显示为0(三)上述内容管理系统,表category保存分类信息,字段如下 (3分)category_id int(4) not null auto_increment;categroy_name varchar(40) not null;用户输入文章时,通过选择下拉菜单选定文章分类写出如何实现这个下拉菜单22、请简述数据库设计的范式及应用。一般第3范式就足以,用于表结构的优化,这样做既可以避免应用程序过于复杂同时也避免了SQL语句过于庞大所造成系统效率低下。23、一个表中的Id有多个记录,把所有这个id的记录查出来,并显示共有多少条记录数,用SQL语句及视图、存储过程分别实现。 以下为引用的内容:DELIMITER / CREATE PROCEDURE ProcGet( IN ID_aINT(11)BEGIN DECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN END; SELECTCOUNT(*) AS SumFROMNewsWhereID = ID_a;END;/CALL ProcGet(88)/24、表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。phperzcom DELIMITER /CREATE PROCEDURE ProcOut()BEGIN DECLAREEXIT HANDLERFORSQLEXCEPTIONBEGINEND;DECLARE Sum_a INT(11);DECLARE Sum_b INT(11);DECLARE Sum_c INT(11);- 获取A列中的总值 -DECLAREcur_1CURSORFORSELECTSUM(A)FROMtable_name; OPENcur_1;FETCHcur_ 1INTOSum_a;CLOSEcur_1;- 获取B列中的总值 -DECLAREcur_2CURSORFORSELECTSUM(B)FROMtable_name;OPENcur_2;FETCHcur_ 2INTOSum_b;CLOSEcur_2;- 获取C列中的总值 Sum_bTHEN SELECTA FROMtable_name; ELSEIFSum_b Sum_c THEN SELECTBFROMtable_name;ELSE SELECTCFROMtable_name;END IF;END;/CALL ProcOut()/25、请简述项目中优化sql语句执行效率的方法,从哪些方面,sql语句性能如何分析?26、两张表 city表和province表。分别为城市与省份的关系表。city:idCityProvinceid1广州12深圳13惠州14长沙25武汉3.广州province:idProvince1广东2湖南3湖北.(1) 写一条sql语句关系两个表,实现:显示城市的基本信息。?(2) 显示字段:城市id ,城市名, 所属省份 。如:Id(城市id)Cityname(城市名)Privence(所属省份)。(2)如果要统计每个省份有多少个城市,请用group by 查询出来。? 显示字段:省份id ,省份名,包含多少个城市。27、SQL查询语句如下:select * from table where (ID = 10) or (ID = 32) or (ID = 22) or (ID = 76) or (ID = 13) or (ID = 44) 让结果按10,32,22,76,13,44的顺序检索出来,请问如何书写? (sql能力) 28、创建一个数据库,里面有一张表(见后面),并将其授权给所有192.168.1.*网段的用户 表需求:每天文件访问情况,包括文件名、访问IP、访问时间、客户端浏览器名称,考虑如何高效地查找每天什么时段访问量最高29、创建poll表,用于记录单选投票用户的数据字段包括 id Autoincreace , ip , time , iid(用户选则的选项,int型)写出create上述table的完整sql语句建表语句如下,但是,搞不明白,怎么用time关键字?CREATE TABLE poll (id SMALLINT( 12 ) UNSIGNED NOT NULL AUTO_INCREMENT ,ip VARCHAR( 16 ) NOT NULL ,time DATETIME DEFAULT now() NOT NULL , iid INT( 15 ) NOT NULL ,PRIMARY KEY ( id ); 30、写出将一个选择2号选项的ip为的用户在当前时间的投票记录到数据库的SQLinsert into poll (id,ip,time,iid) values(,,now(),2);31、写出满足下边条件的SQL语句item表的结构为 id(就是poll表中的iid) , descp(用户选择的选项的文字)请查询并返回10条记录,包括ip和用户选择的选项的文字select ip,descp from poll,item where poll.iid = item.id limit 1032、现在因为投票人数太多,网站时常出现too many connection的错误,请提供解决方案方法一:加大MySql的最大连接数 mysql的最大连接数默认是100, 这个数值对于并发连接很多的数据库应用是远远不够的,当连接请求大于默认连接数后,就会出现无法连接数据库的错误,因此我们需要把它适当调大一些,编辑my.ini 修改 max_connections=1000方法二,不用mysql数据库,改为直接写文件,详细方法参照问题5若非要用 mysql,还可方法三:由于用mysql语句调用数据库时,在每次之执行语句前,会做一个临时的变量用来打开数据库,所以你在使用mysql语句的时候,记得在每次调用完mysql之后就关闭mysql临时变量33、在成功解决连接数的问题后,发现程序运行缓慢,经查发现是mysql并发太多,表被锁定的现象严重,请提供解决方案对于访问量大的,本来就不推荐使用数据库,可以考虑直接写到文本中,根据预测的访问量,先定义假若是100个文件文件名依次为1.txt,2.txt100.txt,每有用户投票的时候,随机往其中的一个文件中写入投票信息。统计的时候,再对所有文本文件中的数据进行分析。必要的时候,再导入数据库。34、现在开始要求同一ip不能重复投票 ,请指出如何对数据表进行相应的修改把IP字段属性改为全局唯一就OK了,用以下语句修改,若改之前先数据库中没有重复的记录则ALTER TABLE poll ADD UNIQUE (ip );有重复记录则做一下操作,a改名备份数据CREATE DATABASE pollbak ;RENAME TABLE poll.poll TO pollbak.poll ;DROP DATABASE poll ; b.建一新表 CREATE TABLE poll ( id smallint(12) unsigned NOT NULL auto_increment, ip varchar(16) NOT NULL default ”, time datetime NOT NULL default 0000-00-00 00:00:00, iid int(15) NOT NULL default 0, PRIMARY KEY (id), UNIQUE KEY ip (ip) TYPE=MyISAM AUTO_INCREMENT=1 ; 3,还原有效数据insert into poll select from pollbak;/由于唯一约束,自动剔除重复的投票35、原有数据已经有很多重复ip的数据了,所以我们把它导出为一个txt,格式和上边的poll一致,用TAB键间隔,请写一段程序,删除ip有重复的记录,并统计每个投票选项的投票数不知道可用数据库不?不用数据库也可以实现。时间有限,只给出部分代码如下假设导出的文件为poll.txt;程序poll.php代码如下:?php/读取文本并放入数组$apoll = file(“poll.txt”);/对每一行数据进行分割,从而获取了一个二维数组 for ($i=0;$icount($apoll);$i+) $poll$i = split(“ “,$apoll$i);/对该二维数组分析$temp_ip ;/用来保存出现过的ip$temp_iid;/用来保存出现过的投票编号$temp_iid_count;用来保存出现过的编号对应的票数/若ip在前面出现过,则什么也不做for ($l=0;$lcount($temp_ip);$l+) if ($poll$i1=$temp_ip$l) $ip_repeat=1;if ($ip_repeat!=1) /ip在前面没有重复过,可以处理相应的流程 $temp_ip=$poll$i1; /判断投票类型在前面有没有出现过 for($ii=0;$ii 若可以用数据库,处理就相对简单了一点,前部分处理跟前一段代码同。主要就是用for循环把每一行的数据加入数据表,添加前先判断该IP在数据库中有无记录。有则不操作。数据导入数据库后,要得到投票信息就再简单不过了,不过也跟mysql数据库版本有一定关系,感觉,题目中最指定是那个版本的数据库。36、聚集索引和非聚集索引的本质区别37、sql的联合查询38、左连

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论