常规技术面试题(数据库)

21. 对一个投入使用的在线事务处理表格有过多索引需要有什么样的性能考虑?

对一个表格的索引越多,数据库引擎用来更新、插入或者删除数据所需要的时间就越多,因为在数据操控发生的时候索引也必须要维护。

22. 你可以用什么来确保表格里的字段只接受特定范围里的值?

可以使用Check约束,它在数据库表格里定义,用来限制输入该列的值。

触发器也可以被用来限制数据库表格里的字段能够接受的值,但是这种办法要求触发器在表格里被定义,可能会在某些情况下影响到性能。

23. 概述存储过程及其优缺点。

存储过程是一个预编译的sql语句 ,编译后可多次使用

优势:响应时间上来说有优势,可以给我们带来运行效率提高的好处,且使用存储过程的系统更加稳定

缺点:维护性较差,相对于简单sql,存储过程并没有什么优势,并且在进行调试时比较困难

24. 什么是相关子查询?如何使用这些查询?

相关子查询是一种包含子查询的特殊类型的查询。查询里包含的子查询会请求外部查询的值,从而形成一个类似于循环的状况。

25. 什么是SQL注入式攻击?

所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。

比如:攻击者在用户名字和密码输入框中输入"‘或’1’='1"之类的内容。最后得到的SQL命令可能变成:SELECT * from Users WHERE login = ‘’ or ‘1’=‘1’ AND password = ‘’ or ‘1’=‘1’。这时,已经不能真正验证用户身份,所以系统会错误地授权给攻击者。

26. 如何防范SQL注入式攻击?

只要在利用表单输入的内容构造SQL命令之前,把所有输入内容过滤一番就可以了。过滤输入内容可以按多种方式进行。

⑴ 对于动态构造SQL查询的场合,可以使用下面的技术:

第一:替换单引号,即把所有单独出现的单引号改成两个单引号,防止攻击者修改SQL命令的含义。

第二:删除用户输入内容中的所有连字符。

第三:对于用来执行查询的数据库帐户,限制其权限。

⑵ 用存储过程来执行所有的查询。

⑶ 限制表单或查询字符串输入的长度。

⑷ 检查用户输入的合法性,确信输入的内容只包含合法的数据。

⑸ 将用户登录名称、密码等数据加密保存。

⑹ 检查提取数据的查询所返回的记录数量。

27. 默认的系统数据库有哪些?

1)master数据库(主);2)tempdb数据库(临时);3)model 数据库(模板);4)msdb数据库(计划任务);

28. 默认创建一个数据库,会生成哪些文件?

1)主文件(.mdf),2)日志文件(.ldf),无次要文件(.ndf)。

29. 创建数据库时,能不能把数据文件和日志文件分开?

可以分开,起到优化作用。把数据文件放到高速读写区,把日志文件放到低速读写区。

30. 什么是索引覆盖(Index Covering)查询?

索引覆盖(Index Covering)查询是指数据可以只通过索引获取,而不用接触表。

小剧场:今天加油,一切顺利。Come on today, everything is going well.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值