数据库面试题Word文件下载.docx

上传人:b****3 文档编号:6938768 上传时间:2023-05-07 格式:DOCX 页数:52 大小:44.56KB
下载 相关 举报
数据库面试题Word文件下载.docx_第1页
第1页 / 共52页
数据库面试题Word文件下载.docx_第2页
第2页 / 共52页
数据库面试题Word文件下载.docx_第3页
第3页 / 共52页
数据库面试题Word文件下载.docx_第4页
第4页 / 共52页
数据库面试题Word文件下载.docx_第5页
第5页 / 共52页
数据库面试题Word文件下载.docx_第6页
第6页 / 共52页
数据库面试题Word文件下载.docx_第7页
第7页 / 共52页
数据库面试题Word文件下载.docx_第8页
第8页 / 共52页
数据库面试题Word文件下载.docx_第9页
第9页 / 共52页
数据库面试题Word文件下载.docx_第10页
第10页 / 共52页
数据库面试题Word文件下载.docx_第11页
第11页 / 共52页
数据库面试题Word文件下载.docx_第12页
第12页 / 共52页
数据库面试题Word文件下载.docx_第13页
第13页 / 共52页
数据库面试题Word文件下载.docx_第14页
第14页 / 共52页
数据库面试题Word文件下载.docx_第15页
第15页 / 共52页
数据库面试题Word文件下载.docx_第16页
第16页 / 共52页
数据库面试题Word文件下载.docx_第17页
第17页 / 共52页
数据库面试题Word文件下载.docx_第18页
第18页 / 共52页
数据库面试题Word文件下载.docx_第19页
第19页 / 共52页
数据库面试题Word文件下载.docx_第20页
第20页 / 共52页
亲,该文档总共52页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数据库面试题Word文件下载.docx

《数据库面试题Word文件下载.docx》由会员分享,可在线阅读,更多相关《数据库面试题Word文件下载.docx(52页珍藏版)》请在冰点文库上搜索。

数据库面试题Word文件下载.docx

还不行的话那就换个牛叉点的database。

3、写一个SQL存储过程,建立一个表USER字段是姓名,年龄,职位,权限,然后向里面插入6条数据,然后查询出年龄大于18的所有信息。

Createtableuser(

Namevarchar(20),

Ageint,

Positionvarchar(20)

Quanxianvarchar(20)

Insertintouservalues(‘111’,11,’11111’,’1111111’)

Insertintouservalues(‘112’,12,’11112’,’1111112’)

Insertintouservalues(‘113’,13,’11113’,’1111113’)

Insertintouservalues(‘114’,14,’11114’,’1111114’)

Insertintouservalues(‘115’,15,’11115’,’1111115’)

Insertintouservalues(‘116’,16,’11116’,’1111116’)

CreateprocedureselectUser

As

Select*fromuserwhereage>

18

4、1. 

 

 

你对哪种数据库最熟悉?

使用该数据库多少年?

简单描述对该数据库的理解.

答:

SQL,适合中小型企业使用

2. 

对其它较熟悉的商业数据库的了解及使用年限.

3. 

如何将数据库(实例)备份和还原?

(针对自己最熟悉的)

SQL,在企业管理器上右点要备份或还原的数据,从所有任务选择备份或还原。

4. 

如何知道一个表或视图的结构?

查询系统表sysobjects

5. 

描述INNERJOIN的功能和已在何种情况下使用INNERJOIN.

内联接是用比较运算符比较要联接列的值的联接,连接的2个表都要满足、

5、存储过程和SQL语句的优缺点

存储过程的优缺点:

优点:

1.由于应用程序随着时间推移会不断更改,增删功能,T-SQL过程代码会变得更复杂,StoredProcedure为封装此代码提供了一个替换位置。

2.执行计划(存储过程在首次运行时将被编译,这将产生一个执行计划--实际上是MicrosoftSQLServer为在存储过程中获取由T-SQL指定的结果而必须采取的步骤的记录。

)缓存改善性能。

……..但sqlserver新版本,执行计划已针对所有T-SQL批处理进行了缓存,而不管它们是否在存储过程中,所以没比较优势了。

3.存储过程可以用于降低网络流量,存储过程代码直接存储于数据库中,所以不会产生大量T-sql语句的代码流量。

4.使用存储过程使您能够增强对执行计划的重复使用,由此可以通过使用远程过程调用(RPC)处理服务器上的存储过程而提高性能。

RPC封装参数和调用服务器端过程的方式使引擎能够轻松地找到匹配的执行计划,并只需插入更新的参数值。

5.可维护性高,更新存储过程通常比更改、测试以及重新部署程序集需要较少的时间和精力。

6.代码精简一致,一个存储过程可以用于应用程序代码的不同位置。

7.更好的版本控制,通过使用MicrosoftVisualSourceSafe或某个其他源代码控制工具,您可以轻松地恢复到或引用旧版本的存储过程。

8.增强安全性:

a、通过向用户授予对存储过程(而不是基于表)的访问权限,它们可以提供对特定数据的访问;

b、提高代码安全,防止SQL注入(但未彻底解决,例如,将数据操作语言--DML,附加到输入参数);

c、SqlParameter类指定存储过程参数的数据类型,作为深层次防御性策略的一部分,可以验证用户提供的值类型(但也不是万无一失,还是应该传递至数据库前得到附加验证)。

缺点:

1.如果更改范围大到需要对输入存储过程的参数进行更改,或者要更改由其返回的数据,则您仍需要更新程序集中的代码以添加参数、更新GetValue()调用,等等,这时候估计比较繁琐了。

2.可移植性差

由于存储过程将应用程序绑定到SQLServer,因此使用存储过程封装业务逻辑将限制应用程序的可移植性。

如果应用程序的可移植性在您的环境中非常重要,则将业务逻辑封装在不特定于RDBMS的中间层中可能是一个更佳的选择。

Sql语句灵活,可移植性强,查询速度比存储过程慢些

6、为数据库创建索引都需要注意些什么?

1.索引能提高速度的关键就是索引所占的空间要比表小得多

2.注意索引的大小,有一些表可以建成索引组织表

3.索引的列不要太多,要选择一些selective比较低的列建B-tree索引,选择selective高的列建bitmap索引(在更新比较多的表不不要建bitmap索引)

4.将selective较低的列放在前面

5.在更新不多的表上建索引时,可以考虑用compress选择,以节约索引的空间

7、一组SQL相关操作面试题

1.在表A中有数据

ID 

MO

Y

N

请用一个SELECT语句写出,如果MO的值为“Y”,返回“YES”,为N返回“NO”

效果如下:

YES

NO

SELECTID,MO=CASE

WHENMO=’Y’THEN‘YES’

WHENMO=’N’THEN‘NO’

END

FROMAz

2.在表A中查询出自动增长列中31到40之间的数据(注意可能不是连续的)

select*fromAwhereidbetween31and40

3.有一个表table中有一个自动增长字段ID,如果在存储过程中向这个表插入一条记录后,如何获得新记录的ID.(写出获取新记录ID的函数即可)

CREATEFUNCTIONc_currentId()

RETURNSint

AS

BEGIN

declare@lastIdint

select@lastId=max(cid)fromc

RETURN(@lastId)

selecttempdb.dbo.c_currentId()as‘当前C表中最新的编号’

4.having的用法,是用来做什么的 

having用来对groupby分组后的记录进行过滤。

5.sql中的什么函数可以转换为时间 

selectconvert(datetime,’2000/01/01′) 

selectcast(’2001/02/02′asdatetime)

6.查询数据放入一张临时表 

select*into#AfromTest 

select*from#A

8、如何使用SQL进行模糊查询

LIKE条件一般用在指定搜索某字段的时候,通过”%_”通配符的作用实现模糊查找功能,通配符可以在前面也可以在后面或前后都有。

搜索以mian开头:

SELECT*FROMtebleWHEREtitleLIKE‘mian%’

搜索以mian结束:

SELECT*FROMtebleWHEREtitleLIKE‘%mian’

搜索包含mian:

SELECT*FROMtebleWHEREtitleLIKE‘%mian%’

注释:

%表示0个或多个字符构成的字符串

_表示单个字符

9、说一下mysql,oracle等常见数据库的分页实现方案?

1.Oracle:

select*from(selectrow_.*,rownumrownum_from(query_SQL)row_whererownum=<

max)whererownum_>

=min

2.SQLServer:

selecttop@pagesize*fromtablenamewhereidnotin(selecttop@pagesize*(@page-1)idfromtablenameorderbyid)orderbyid

3.MySQL

select*fromtablenamelimitposition,counter

4.DB2

select*from(select*,rownumber()asROW_NEXTfromtablename)whereROW_NEXTbetweenminandmax

——————————————————————————————–

1.分页方案一:

(利用NotIn和SELECTTOP分页)效率次之

语句形式:

SELECTTOP10*FROMTestTable

WHERE(IDNOTIN(SELECTTOP20 

idFROM 

TestTable 

ORDERBY 

id)) 

ORDERBYID

SELECT 

TOP页大小*FROMTestTable

WHERE(IDNOTIN (SELECT 

TOP 

每页大小-1*待查询页数-1 

id 

FROM 

表 ORDERBY 

id))ORDERBYID

思路:

先查询出待查询页之前的全部条数的id,查询ID不在这些ID中的指定数量条数

2.分页方案二:

(利用ID大于多少和SELECTTOP分页)效率最高

10* 

TestTable

WHERE(ID>

(SELECTMAX(id)FROM(SELECTTOP20id 

TestTableORDERBYid)AST))ORDERBYID

页大小*FROM 

(SELECTMAX(id)FROM(SELECTTOP每页大小*待查询页数-1 

idFROM表 

ORDERBYid)AST))ORDERBYID

先获得待查询页的之前全部条数id,获得它们当中最大的ID号,以此最大ID号为标志,查找比这个ID号大的指定条数

3.分页方案三:

SELECTTOPPageSize*FROM(SELECTTOPnPage*PageSize*fromYOURTABLEorderbyid)asaorderbyiddesc

SELECTTOP每页条数*FROM(SELECTTOP待查询页*每页条数)*fromYOURTABLEorderbyid)asaorderbyiddesc

先正排序查询出待查询页之前(包括当前页)的全部条数,然后将其倒排序,取指定条数

10、几道SQL面试题

1.解释一下SQL里面的null

答案:

null代表一个unknown的值或者一个不存在的值

2.如何用SQL判断一个值是不是null?

可以用isnull来判断一个值是不是null

所有包含null的计算表达式的返回结果都是null,这句话正确吗?

比如5+null返回null

正确

4.所有与null得比较运算都返回unknown正确吗?

5.(unknownortrue)=true正确吗?

6.(unknownorfalse)=unknown正确吗?

7.(unknownorunknown)=unknown正确吗?

8.(trueandunknown)=unknown正确吗?

9.(falseandunknown)=false正确吗?

10.(unknownandunknown)=unknown正确吗?

11. 

(notunknown)=unknown正确吗?

11、介绍一下游标

游标是从数据表中提取出来的数据,以临时表的形式存放在内存中,在游标中有一个数据指针,在初始状态下指向的是首记录,利用fetch语句可以移动该指针,从而对游标中的数据进行各种操作,然后将操作结果写回数据表中。

由SELECT语句返回的行集包括所有满足该语句WHERE子句中条件的行。

由语句所返回的这一完整的行集被称为结果集。

应用程序,特别是交互式联机应用程序,并不总能将整个结果集作为一个单元来有效地处理。

这些应用程序需要一种机制以便每次处理一行或一部分行。

游标就是提供这种机制的结果集扩展。

游标通过以下方式扩展结果处理:

允许定位在结果集的特定行。

从结果集的当前位置检索一行或多行。

支持对结果集中当前位置的行进行数据修改。

为由其他用户对显示在结果集中的数据库数据所做的更改提供不同级别的可见性支持。

提供脚本、存储过程和触发器中使用的访问结果集中的数据的Transact-SQL语句。

12、介绍一下SQLServer的全文索引

全文索引可以对存储在SQLServer数据库中的文本数据执行快速检索功能。

同LIKE谓词不同,全文索引只对字符模式进行操作,对字和语句执行搜索功能。

全文索引对于查询非结构化数据非常有效。

一般情况下,可以对char、varchar和nvarchar数据类型的列创建全文索引,同时,还可以对二进制格式的列创建索引,如image和varbinary数据类型列。

对于这些二进制数据,无法使用LIKE谓词。

为了对表创建全文索引,表必须包含单个、唯一、非空列。

当执行全文检索的时候,SQLServer搜索引擎返回匹配搜索条件的行的键值。

一般情况,使用sqlserver中的全文索引,经过大体4个步骤:

安装全文索引服务;

为数据表建立全文索引目录;

使全文索引与数据表内容同步;

使用全文索引进行查询。

13、什么是唯一索引

唯一索引可以确保索引列不包含重复的值。

在多列唯一索引的情况下,该索引可以确保索引列中每个值组合都是唯一的。

例如,如果在last_name、first_name和middle_initial列的组合上创建了唯一索引full_name,则该表中任何两个人都不可以具有相同的全名。

聚集索引和非聚集索引都可以是唯一的。

因此,只要列中的数据是唯一的,就可以在同一个表上创建一个唯一的聚集索引和多个唯一的非聚集索引。

只有当唯一性是数据本身的特征时,指定唯一索引才有意义。

如果必须实施唯一性以确保数据的完整性,则应在列上创建UNIQUE或PRIMARYKEY约束,而不要创建唯一索引。

例如,如果打算经常查询雇员表(主键为emp_id)中的社会安全号码(ssn)列,并希望确保社会安全号码的唯一性,则在ssn列上创建UNIQUE约束。

如果用户为一个以上的雇员输入了同一个社会安全号码,则会显示错误。

14、几道数据库笔试题

1.张表,学生表S,课程C,学生课程表SC,学生可以选修多门课程,一门课程可以被多个学生选修,通过SC表关联;

(SQL)

1)写出建表语句;

建表语句如下(mysql数据库):

createtables(idintegerprimarykey,namevarchar(20));

createtablec(idintegerprimarykey,namevarchar(20));

createtablesc(

sidintegerreferencess(id),

cidintegerreferencesc(id),

primarykey(sid,cid)

);

2)写出SQL语句,查询选修了所有选修课程的学生;

SQL语句如下:

selectstu.id,stu.namefromsstu

where(selectcount(*)fromscwheresid=stu.id)=

(selectcount(*)fromc);

3)写出SQL语句,查询选修了至少5门以上的课程的学生。

where(selectcount(*)fromscwheresid=stu.id)>

=5;

2.数据库表(Test)结构如下:

IDNAMEAGEMANAGER(所属主管人ID)

106A30104

109B19104

104C20111

107D35109

112E25120

119F45NULL

要求:

列出所有年龄比所属主管年龄大的人的ID和名字?

selectemployee.namefromtestemployeewhereemployee.age>

(selectmanager.agefromtestmanagerwheremanager.id=employee.manager);

3.有3个表(15分钟):

Student学生表(学号,姓名,性别,年龄,组织部门)

Course课程表(编号,课程名称)

Sc选课表(学号,课程编号,成绩)

表结构如下:

1)写一个SQL语句,查询选修了’计算机原理’的学生学号和姓名(3分钟)

selectstu.sno,stu.snamefromStudentstu

where(selectcount(*)fromscwheresno=stu.snoandcno=

(selectcnofromCoursewherecname=’计算机原理’))!

=0;

2)写一个SQL语句,查询’周星驰’同学选修了的课程名字(3分钟)

selectcnamefromCoursewherecnoin(selectcnofromscwheresno=(selectsnofromStudentwheresname=’周星驰’));

3)写一个SQL语句,查询选修了5门课程的学生学号和姓名(9分钟)

selectstu.sno,stu.snamefromstudentstu

where(selectcount(*)fromscwheresno=stu.sno)=5;

15、ORACLE面试题

1. 

解释FUNCTION,PROCEDURE和PACKAGE区别

function和procedure是PL/SQL代码的集合,通常为了完成一个任务。

procedure不需要返回任何值而function将返回一个值在另一方面,Package是为了完成一个商业功能的一组function和procedure的集合。

2. 

取某个序列的当前值的PL/SQL语句怎么写?

SELECT序列名.CURRVAL 

DUAL;

3. 

说明ORACLE数据库实例与ORACLE用户的关系?

实例可以包含多个用户,一个用户只能在一个实例下

4. 

创建数据库时,自动建立的tablespace名称?

SYSTEMtablespace

5. 

创建用户时,需要赋予新用户什么权限才能使它连上数据库?

CONNECT

6. 

IMPORT和SQL*LOADER这2个工具的不同点?

这两个ORACLE工具都是用来将数据导入数据库的。

区别是:

IMPORT工具只能处理由另一个ORACLE工具EXPORT生成的数据。

而SQL*LOADER可以导入不同的ASCII格式的数据源。

7.解释冷备份和热备份的不同点以及各自的优点?

热备份针对归档模式的数据库,在数据库仍旧处于工作状态时进行备份。

而冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库。

热备份的优点在于当备份时,数据库仍旧可以被使用并且可以将数据库恢复到任意一个时间点。

冷备份的优点在于它的备份和恢复操作相当简单,并且由于冷备份的数据库可以工作在非归档模式下,数据库性能会比归档模式稍好。

(因为不必将archivelog写入硬盘)

8.比较truncate和delete命令?

两者都可以用来删除表中所有的记录。

区别在于:

truncate是DDL(datadefininglanguage数据定义语言),它移动HWK,不需要rollbacksegment(处理事务回滚操作)而Delete是DML(datamanufacturinglanguage数据操作语言)操作,需要rollbacksegment(处理事务回滚操作)且花费较长时间。

9.给出数据的相关约束类型?

主键约束,外键约束,非空约束,唯一约束,检查约束。

10.说明索引的类型与作用?

索引类型上分

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2