数据库基础的试题汇总 下

众所周知,在软件测试中,数据库是必备知识,也基础中的基础。今天小编继续整理了关于数据库基础的试题汇总,希望和大家一起分享,现在赶紧来看看吧在这里插入图片描述
一、数据库的优化?

1.优化索引、SQL 语句、分析慢查询;

2.设计表的时候严格根据数据库的设计范式来设计数据库;

3.使用缓存,把经常访问到的数据而且不需要经常变化的数据放在缓 存中,能节约磁盘 IO

4.优化硬件;采用 SSD,使用磁盘队列技术(RAID0,RAID1,RDID5)等

5.采用 MySQL 内部自带的表分区技术,把数据分层不同的文件,能够提高磁盘的读取效率;

6.垂直分表;把一些不经常读的数据放在一张表里,节约磁盘 I/O;

7.主从分离读写;采用主从复制把数据库的读操作和写入操作分离开来;

8.分库分表分机器(数据量特别大),主要的的原理就是数据路由;

9.选择合适的表引擎,参数上的优化

10.进行架构级别的缓存,静态化和分布式;

11.不采用全文索引;

12.采用更快的存储方式,例如 NoSQL 存储经常访问的数据。

二、Sql 注入是如何产生的,如何防止?

程序开发过程中不注意规范书写 sql 语句和对特殊字符进行过滤, 导致客户端可以通过全局变量POST 和 GET 提交一些 sql 语句正常执行。产生 Sql 注入。下面是防止办法:

a.过滤掉一些常见的数据库操作关键字,或者通过系统函数来进行过滤。

b.在 PHP 配置文件中将 Register_globals=off;设置为关闭状态

c.SQL语句书写的时候尽量不要省略小引号(tab 键上面那个)和单引号

d.提高数据库命名技巧,对于一些重要的字段根据程序的特点命名, 取不易被猜到的 e.对于常用的方法加以封装,避免直接暴漏 SQL 语句开启 PHP 安全模式:Safe_mode=on;

打开 magic_quotes_gpc 来防止 SQL 注入

h.控制错误信息:关闭错误提示信息,将错误信息写到系统日志。

i.使用 mysqli 或 pdo 预处理。

三、NoSQL 和关系数据库的区别?

a.SQL 数据存在特定结构的表中;而 NoSQL 则更加灵活和可扩展, 存储方式可以省是 JSON 文档、哈希表 或者其他方式。

b.在 SQL 中,必须定义好表和字段结构后才能添加数据,例如定义表的主键(primary key),索引(index),触发 器(trigger),存储过程(stored procedure)等。表结构可以在被定义之后更新,但是如果有比较大的结构变更的话就会 变得比较复杂。在 NoSQL 中,数据可以在任何时候任何地方添加,不需要先定义表。

c.SQL 中如果需要增加外部关联数据的话,规范化做法是在原表中增加一个外键,关联外部数据表。而在 NoSQL 中除了这种规范化的外部数据表做法以外,我们还能用如下的非规范化方式把外部数据直接 放到原数据集 中,以提高查询效率。缺点也比较明显,更新审核人数据的时候将会比较麻烦。

d.SQL 中可以使用 JOIN 表链接方式将多个关系数据表中的数据用一条简单的查询语句查询出来。NoSQL 暂未提供类似 JOIN 的查询方式对多个数据集中的数据做查询。所以大部分 NoSQL 使用非规范化的 数据存储方式存储数据。

e.SQL 中不允许删除已经被使用的外部数据,而 NoSQL 中则没有这种强耦合的概念,可以随时删除任何数据。

f.SQL 中如果多张表数据需要同批次被更新,即如果其中一张表更新失败的话其他表也不能更新成 功。这种场景可以通过事务来控制, 可以在所有命令完成后再统一提交事务。而 NoSQL 中没有事务这个概念,每一个数据集的操作都是原子级的。

g.在相同水平的系统设计的前提下,因为 NoSQL 中省略了 JOIN查询的消耗,故理论上性能上是优于 SQL 的。

四、Mysql 数据库中怎么实现分页?

select * from table limit (start-1)*limit,limit; 其中 start 是页码,limit 是每页显示的条数。

五、Mysql 数据库的操作

修改表-修改字段,重命名版:

alter table 表名 change 原名新名类型及约束;

alter table students change birthday birth datetime not null;

修改表-修改字段,不重名版本:

alter table 表名 modify 列名类型和约束; alter table students modify birth date not null 全列插入:insert into 表名 values(…)

insert into students values(0,“郭靖”, 1,“内蒙”,“2017-6”);

部分插入:值的顺序与给出的列顺序对应:

insert into students(name, birthday) values(“黄蓉”,“2017-8”);

修改:update 表名 set 列 1=值 1,列 2=值 2.。。where update students set gender=0, homwtown=“古墓”, where id = 5; 备份:mysqldump -uroot -p数据库名 > python.sql,

恢复:mysql -uroot -p数据库名< python.sql

六、存储过程和函数的区别?

相同点:存储过程和函数都是为了可重复的执行操作数据库的 sql 语句的集合。 1)存储过程和函数都是一次编译,就会被缓存起来, 下次使用就直接命中已经编译好的 sql语句,不需要重复使用。减少网络交互,减少网络访问流量。

不同点: 标识符不同, 函数的标识符是 function , 存储过程是proceduce。

1)函数中有返回值,且必须有返回值,而过程没有返回值,但是可以通过设置参数类型(in,out)来实现多个参数或者返回值。

2)存储函数使用 select 调用,存储过程需要使用 call 调用。

3)select 语句可以在存储过程中调用,但是除了 select…into 之外的select 语句都不能在函数中使用。

4)通过 in out 参数,过程相关函数更加灵活,可以返回多个结果。

七、Mysql 开启 General-log 日志

Show variables like ‘general%’; Set global general_log=1; Set global general_log=0;

以上就是所有整理出来有关数据库基础的试题汇总,都是干货,大家赶紧收藏吧!

干货分享

如果你已经工作但是经常觉得难点很多,觉得自己测试方面学的不够精想要继续学习的,想转行怕学不会的,都可以关注我【软件测试小dao】,公众号内可领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码小怡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值