3-面试题汇总-数据库相关._第1页
3-面试题汇总-数据库相关._第2页
免费预览已结束,剩余14页可下载查看

下载本文档

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

文档简介

1、北京市海淀区清河清景园3 号楼 1 单元 9 层 邮编:100085电话52717923 52717924http:/面试题汇总一一数据库相关1、写出三种以上 MySQL 数据库存储引擎的名称(提示:不区分大小写)2、说出你所知道的三种以上开源数据库的名称(提示:想想目前国外流行的开源数据库)3、 MySQL 数据库中的字段类型 varchar 和 char 的主要区别是什么?那种字段的查找效率要 高,为什么?4、说出 MySQL 4.0 和 MySQL 4.1 版本的最主要的两个区别。如果你使用过MySQL 5,请说说 MySQL 5 跟 MySQL 4 的主要区

2、别。(后半题选作)5、MySQL 数据库基本的三个优化法则是什么?(提示:从服务配置、应用、开发角度考虑)6、优化 MYSQL 数据库的方法。(1) .数据库设计方面,这是 DBA 和 Architect 的责任,设计结构良好的数据库,必要的时候,去正 规化(英文是这个:de normalize,中文翻译成啥我不知道),允许部分数据冗余,避免 JOIN 操作,以 提高查询效率(2) .系统架构设计方面,表散列,把海量数据散列到几个不同的表里面快慢表,快表只留最新数据,慢表是历史存档集群,主服务器 Read & write,从服务器 read only,或者 N 台服务器,各机器 互为

3、Master和超越 PHP Programmer 的要求了,会更好,不会没关系检查有没有少加索引(4) .写高效的 SQL 语句,看看有没有写低效的 SQL 语句,比如生成笛卡尔积的全连接啊,大量的 GroupBy 和 order by,没有 limit 等等.必要的时候,把数据库逻辑封装到 DBMS 端的存储过程 里面缓存查询结果,explain 每一个 sql 语句(5) .所得皆必须,只从数据库取必需的数据,比如查询某篇文章的评论数,select count(*) .where article_id = ? 就可以了 ,不要先 select * . where article_id =

4、?然后 msql_num_rows. 只传送必须的SQL 语句,比如修改文章的时候,如果用户只修改了标题,那就 update . set title =? where article_id = ?不要 set content = ?(大文本)(6) .必要的时候用不同的存储引擎.比如 InnoDB 可以减少死锁.HEAP 可以提高一个数量级的查询速度.7、谈谈事务处理如同是个编程语言都会有答应 Hello World 的例子一样,是本数据库的教材都会讲 A 给 B 的账 户转账 50美元的例子,回答这个就好了 .不过据我所知,用 MySQL 的企业,很少用 MySQL 来实 现事务处理.何况现

5、在 Oracle 收购了 InnoDB 的公司.答:事务就是一系列的操作,这些操作完成一项任务。只要这些操作里有一个操作没有成功 事务就操作失败,发生回滚事件。即撤消前面的操作,这样可以保证数据的一致性。而且可以把操作暂时放在缓存里,等所有操作都成功有提交数据库,这样保证费时的操作都是有效操作。北京星模实训学校培养 IT 界的明星模特北京市海淀区清河清景园3 号楼 1 单元 9 层 邮编:100085电话52717923 52717924http:/title 文章标题content 文章内容 category_id 文章分类 id hits 点击量创建上表,写出

6、MySQL 语句9、同样上述内容管理系统:表comment 记录用户回复内容,字段如下comment_id 回复 idid 文章 id,关联 message 表中的 idcomment_content 回复内容现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面文章 id 文章标题点击量 回复数量用一个 SQL 语句完成上述查询,如果文章没有回复则回复数量显示为010、 上述内容管理系统,表category 保存分类信息,字段如下category_id in t(4) n ot n ull auto_i ncreme nt;categroy_ name va

7、rchar(40) not n ull;用户输入文章时,通过选择下拉菜单选定文章分类写出如何实现这个下拉菜单11、数据库设计题:请设计一套图书馆借书管理系统的数据库表结构;可以记录基本的用户信息、图书信息、借还书信息;数据表的个数不超过6 个;请画表格描述表结构(需要说明每个字段的字段名、字段类型、字段含义描述);在数据库设计中应:a.保证每个用户的唯一性;b.保证每种图书的唯一性;每种图书对应不等本数的多本图书;保证每本图书的唯一性;c.借书信息表中,应同时考虑借书行为与还书行为,考虑借书期限;d.保证借书信息表与用户表、图书信息表之间的参照完整性;e.限制每个用户最大可借书的本数f.若有新

8、用户注册或新书入库,保证自动生成其唯一性标识g.为以下的一系列报表需求提供支持:北京星模实训学校培养 IT 界的明星模特&某内容管理系统中,表id 文章 idmessage 有如下字段北京市海淀区清河清景园3 号楼 1 单元 9 层 邮编:100085电话52717923 52717924http:/(无特定说明,不需编写实现语句,而需在数据库设计中,保证这些报表可以用最多一条SQL 语句实现)/ 北京星模实训学校培养 IT 界的明星模特北京市海淀区清河清景园3 号楼 1 单元 9 层 邮编:100085电话52717923 52

9、717924http:/XHSIGMOa)日统计报表:当日借书本数、当日还书本数报表;b)实时报表:i.当前每种书的借出本数、可借本数;ii.当前系统中所有超期图书、用户的列表及其超期天数iii. 当前系统中所有用户借书的本数,分用户列出(包括没有借书行为的用户);请编写实现此需求的 SQL 语句:数据库应用:请撰写一系列的 SQL 语句,分别描述完整的借书行为与还书行为;并保证这一系列的SQL语句的执行完整性下题是测验能力之最重要测试,如不能完成我们将无法给出评判结果!所以请写出详细的回答,并保证答案是可以执行的程序。在两日内将结果通过电子邮件寄到 邮箱结合第二题中你的设计,用一种数据库实现

10、,要求使用三层结构或者多层结构,要求采用面向对象的思想进行编程,有可能的话,设计一套模板机制来实现之。功能:列出当前借出图书的情况,按日期排列编号用户姓名书名书的编号借出日期1. 张进大染坊 12576587 2004-9-12. 刘兴 西游记 32131098 2004-9-212、 SQL 中 LEFT JOIN 的含义是 (16) 。 如果 tbl_user 记录了学生的姓名 (name) 和学号(ID) ,tbl_score记录了学生(有的学生考试以后被开除了,没有其记录)的学号(ID)和考试成绩(score)以及考试科目(subject),要想打印出各个学生姓名及对应的的各科总成绩,

11、则可以用 SQL 语句(17)。自然左外连接select n ame, coun t(score) as sum_score from tbl_user left join tbl_score ontbl_user.ID=tbl_score .ID group by tbl_user.IDcreate database php in terview; use php in terviewcreate table tbl_user(IDn ameprimary key (ID);intvarchar(50)not null,not n ull.北京市海淀区清河清景园3 号楼 1 单元 9 层 邮

12、编:100085电话52717923 52717924http:/create table tbl_scoreinsert into tbl_user (ID, n ame) values (1, beimu);insert into tbl_user (ID, n ame) values (2, aihui);insert into tbl_score (ID, score, subject) values (1, 90, 语文); insert into tbl_score (ID, score, subject)values (1, 80,数学); inser

13、t 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 sumscore from tbl_user A left join tbl_score B on A.ID=B.IDgroup by A.id13、 写出发贴数最多的十个人名字的SQL,利用下表:members(id,user name,posts,pass,email)14、 防止 SQL 注射漏洞一般

14、用 _ 函数。15、 查询在线人数,并能处理异常掉线的SQL.WHERE_16、MYSQL 取得当前时间的函数是?,格式化日期的函数是17、写出 SQL 语句的格式:插入,更新,删除(4 分)表名 UserName Tel Con te nt Date张三大专毕业 2006-10-11张三本科毕业 2006-10-15张四中专毕业 2006-10-15(a) 有一新记录(小王高中毕业 2007-05-06)请用 SQL 语句新增至表中(b) 请用 sql 语句把张三的时间更新成为当前系统时

15、间(c) 请写出删除名为张四的全部记录18、 请写出数据类型(int char varchar datetime text)的意思;请问 varchar 和 char 有什么区别19、MySQ 自增类型(通常为表 ID 字段)必需将其设为字段20、 取得查询结果集总数的函数是?北京星模实训学校培养 IT 界的明星模特(IDscoresubject);intdec(6,2)varchar(20)not null,not null,not n ull北京市海淀区清河清景园3 号楼 1 单元 9 层 邮编:100085电话52717923 52717924http:/21

16、、以下请用 PHPMYADMIN 完成(一) 创建新闻发布系统,表名为 message 有如下字段(3 分)id 文章 idtitle 文章标题content 文章内容category_id 文章分类 idhits 点击量(二) 同样上述新闻发布系统:表 comment 记录用户回复内容,字段如下(4 分)comment_id 回复 idid 文章 id,关联 message 表中的 idcomment_content 回复内容现通过查询数据库需要得到以下格式的文章标题列表,并按照回复数量排序,回复最高的排在最前面文章 id 文章标题点击量回复数量用一个 SQL 语句完成上述查询,如果文章没有

17、回复则回复数量显示为0(三) 上述内容管理系统,表category 保存分类信息,字段如下(3 分)category_id in t(4) not n ull auto_ in creme nt;categroy_ name varchar(40) not nu II;用户输入文章时,通过选择下拉菜单选定文章分类写出如何实现这个下拉菜单22、请简述数据库设计的范式及应用。一般第 3 范式就足以,用于表结构的优化,这样做既可以避免应用程序过于复杂同时也避免 了 SQL语句过于庞大所造成系统效率低下。23、一个表中的 Id 有多个记录,把所有这个id 的记录查出来,并显示共有多少条记录数,用SQL

18、 语句及视图、存储过程分别实现。r以下为引用的内容:DELIMITER /CREATE PROCEDURE ProcGet(IN ID_a INT(11)BEGINDECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN END;SELECT COUNT(*) AS Sum FROM News Where ID = ID_a;北京星模实训学校培养 IT 界的明星模特北京市海淀区清河清景园3 号楼 1 单元 9 层 邮编:100085电话52717923 52717924http:/END;/CALL ProcGet(88)24、表中有

19、A B C 三列,用 SQL 语句实现:当 A 列大于 B 列时选择 A 列否则选择 B 列,当 B 列大于C 列时选择 B 列否则选择 C 列。phperzcomDELIMITER /CREATE PROCEDURE ProcOut()BEGINDECLARE EXIT HANDLER FOR SQLEXCEPTION BEGIN END;DECLARE Sum_a INT(11);DECLARE Sum_b INT(11);DECLARE Sum_c INT(11);-获取 A 列中的总值-获取 B 列中的总值-获取 C 列中的总值 Sum_b THENSELECT A FROMtable

20、_name;ELSEIF Sum_b Sum_c THENSELECT B FROMtable_name;ELSESELECT C FROMtable_name;END IF;END;/CALL ProcOut()25、请简述项目中优化 sql 语句执行效率的方法,从哪些方面,sql 语句性能如何分析?26、两张表 city 表和 province 表。分别为城市与省份的关系表。city:idCityProvinceid1广州12深圳13惠州14长沙25-武汉3.广州provi nee:dProvince1广东2湖南3湖北(1)写一条 sql 语句关系两个表,实现:显示城市的基本信息。?(2)

21、显示字段:城市 id ,城市名,所属省份。如:Id (城市 id )Cityname(城市名)Privence(所属省份)OOOOOOOOOOOOOOOOOO/ 北京星模实训学校培养 IT 界的明星模特北京市海淀区清河清景园3 号楼 1 单元 9 层 邮编:100085电话52717923 52717924http:/北京市海淀区清河清景园3 号楼 1 单元 9 层 邮编:100085电话52717923 52717924http:/显示字段:省份 id,省份名,包含多少个城市。27、SQL 查询语句如下:select * from ta

22、ble 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 , i

23、id(用户选则的选项,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 为 的用户在当前时间的投票记录

24、到数据库的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 conn ection 的错误,请提供解决方案 方法一:加大 M

25、ySql 的最大连接数mysql 的最大连接数默认是100,这个数值对于并发连接很多的数据库应用是远远不够的,当连接请求大于默认连接数后,就会出现无法连接数据库的错误,因此我们需要把它适当调大一些,编辑my.i ni北京星模实训学校培养 IT 界的明星模特(2)如果要统北京市海淀区清河清景园3 号楼 1 单元 9 层 邮编:100085电话52717923 52717924http:/修改 max_c onn ecti on s=1000北京市海淀区清河清景园3 号楼 1 单元 9 层 邮编:100085电话52717923 527179

26、24http:/mysql 数据库,改为直接写文件,详细方法参照问题若非要用 mysql,还可方法三:由于用 mysql 语句调用数据库时,在每次之执行语句前,打开数据库,所以你在使用mysql 语句的时候,记得在每次调用完mysql 之后就关闭 mysql临时变量33、在成功解决连接数的问题后,发现程序运行缓慢,经查发现是mysql 并发太多,表被锁定的现象严重,请提供解决方案对于访问量大的,本来就不推荐使用数据库, 可以考虑直接写到文本中, 根据预测的访问量, 先定义假若是 100 个文件文件名依次为 1.txt,2.txt 100.txt,每有用户投票的时候,随 机往其中的一个文件中写入

27、投票信息。统计的时候,再对所有文本文件中的数据进行分析。必要的时候,再导入数据库。34、现在开始要求同一 ip 不能重复投票,请指出如何对数据表进行相应的修改把 IP 字段属性改为全局唯一就0K 了,用以下语句修改,若改之前先数据库中没有重复的记录则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 smalli

28、nt(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=MylSAM AUTO_INCREMENT=1 ;3,还原有效数据in sert into poll select from pollbak;/由于唯一约束,自动剔除重复的投票35、 原有数据已经有很多重复

29、ip 的数据了,所以我们把它导出为一个txt ,格式和上边的poll 一致,用 TAB 键间隔,请写一段程序,删除ip 有重复的记录,并统计每个投票选项的投票数不知道可用数据库不?不用数据库也可以实现。时间有限,只给出部分代码如下北京星模实训学校培养 IT 界的明星模特方法二,不用5会做一个临时的变量用来北京市海淀区清河清景园3 号楼 1 单元 9 层 邮编:100085电话52717923 52717924http:/假设导出的文件为 poll.txt;程序 poll.php 代码如下:北京市海淀区清河清景园3 号楼 1 单元 9 层 邮编:100085电话:01

30、0-81998356 52717923 52717924http:/XiriGMO?php/读取文本并放入数组$apoil = file( poll.txt ” );/对每一行数据进行分割,从而获取了一个二维数组for ($i=0;$icou nt($apoll);$i+)$poll$i = split(“ “ ,$apoll$i);/对该二维数组分析$temp_ip ;/用来保存出现过的 ip$temp_iid;用来保存出现过的投票编号$temp_iid_cou nt;用来保存出现过的编号对应的票数/若 ip 在前面出现过,则什么也不做for ($l=0;$lcou nt($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 数据库版本有一

温馨提示

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

评论

0/150

提交评论