软件测试之数据库面试题

第一期:

学生表(学生id,姓名,性别,分数) )student(s_id, name, sex, score)

班级表(班级id,班级名称) class(c_id, c_name)

学生班级表(班级id,学生id) student_class(s_id,c_id)

1.查询一班得分在80分以上或者等于60,61,62的学生

2.査询所有班级的名称,和所有版中女生人数和女生的平均分。

答案: 

(1)SELECT s.s_id,s.name,s.score,sc.c_id,c.c_name from student s LEFT JOIN student_class sc on s.s_id = sc.s_id LEFT JOIN class c on sc.c_id=c.c_id where (s.score>80 or s.score in(60,61,62)) and c.c_name='一班';

(2)SELECT sc.s_id,c.c_name,COUNT(s.sex),AVG(s.score) from student_class sc LEFT JOIN class c on sc.c_id=c.c_id LEFT JOIN student s on sc.s_id = s.s_id where s.sex='女' group BY c.c_name ORDER BY c.c_id asc;

第二期:

sql语句应该考虑哪些安全性? 

答案:

(1)防止sql注入,对特殊字符进行转义,过滤或者使用预编译的sql语句绑定变量。 
(2)最小权限原则,特别是不要用root账户,为不同的类型的动作或者组建使用不同的账户。 
(3)当sql运行出错时,不要把数据库返回的错误信息全部显示给用户,以防止泄漏服务器和数据库相关信息。

第三期:

用一条 SQL语句查询出每门课都大于 80 分的学生姓名?

答案:

select name from student where name not in (select  name from student where fenshu <=80);

第四期:

MySQL外连接、内连接的区别?

答案:

内连接 

连接的数据表相对应的匹配字段完全相等的连接。连接关键字是 inner join

外连接

分为左外连接与右外连接、全连接。

左连接的结果集包括指定的左表全部数据与匹配的右表数据,右表中没匹配的全为空值.关键字 left join

右连接的结果集包含指定的右表全部数据与匹配的左边数据,左边中没匹配的全为空值.关键字 right join

全连接返回左右数据表的所有行.关键字 full join

第五期:

什么是数据库事务?

答案:

单个逻辑单元执行的一系列操作,这些操作要么全做要么全不做,是不可分割的.事务的开始和结束用户是可以控制的,如果没控制则由数据库默认的划分事务.事务具有以下性质:

(1)原子性

    指一个事务要么全执行,要么全不执行.也就是说一个事务不可能执行到一半就停止了.比如:你去买东西,钱付掉了,东西没拿.这两步必须同时执行 ,要么都不执行.

(2)一致性

   指事务的运行并不改变数据库中的一致性.比如 a+b=10;a改变了,b也应该随之改变.

(3)独立性

   两个以上的事务不会出现交替运行的状态,因为这样可能导致数据的不一致

(4)持久性

   事务运行成功之后数据库的更新是永久的

第六期:

union 与union all的区别?

答案: 

union 在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排 序运算,删除重复的记录再返回结果。

 union all 则会显示重复结果,只是简单的两个结果合并并返回.所以效率比union高,在保证没有重复数据的情况下用union all.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

魔都飘雪

您的1毛奖励是我创作的源源动力

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

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

打赏作者

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

抵扣说明:

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

余额充值