【金三银四】分享数据库笔试题及答案~~

你是否在面试中遇到过关于数据库的笔试题?如何高效地准备这些题目,提升自己的竞争力?本文将为你整理一些经典的数据库笔试题及其答案,助你备战面试。

金三银四马上来了,测试年限较短难免会碰到笔试题,最近就收到一些求职小伙伴反馈过来的数据库笔试题,说不太会做。特意做了下摘录及答案整理,给大家做个分享。如果不想笔试受挫的宝子,一定要牢牢码住!并多多练习!

在求职季节,尤其是金三银四期间,许多测试人员面临数据库相关的笔试题目。掌握常见的数据库笔试题及其解答,对于提升面试通过率至关重要。

在实际面试中,数据库相关的笔试题目常常考察候选人的SQL能力和逻辑思维。通过对经典题目的练习,能够帮助我们更好地理解数据库的应用场景和解决方案。

一、已建立二张学生基本信息表,表的结构如下:

est表

图片.png

test1表

图片.png

1)用SQL语句找出是计算机系并籍贯是北京的学生的所有记录

2)用SQL语句把计算机系的学生的department改为信息学院

3)用SQL连接查询找出成绩大于等于75分的学生的no,name, grade,course字段的记录

参考答案:

1)

select * from test where department='计算机系' and place='北京';

2)

UPDATE test SET department='信息学院' WHERE department='计算机系';

3)

select distinct test.no,test.name,test1.grade,test1.course from test,test1 where test.no=test1.no and test1.grade>=75;

二、请按照如下题目要求编写 SQL

部门表 departments(dept_id, dept_name)

员工表 employees(emp_id,emp_name, sex, dept_id, jobs)

薪水表 salary (salary_id, emp_id, money)

问题1、 列出总人数大于 4 的部门编号和该部门人数

问题2、 列出开发部和测试部的职工号,姓名

问题3、 显示工资最高的前 3 名职工的职工号和姓名

问题4、 列出工资在 1000-2000 之间的所有职工姓名

参考答案:

1、

select dept_id, count() as '部门人数' from employees e group by dept_id having count()>4;

2、

select e.emp_id,e.emp_name from employees e inner join departments d on e.dept_id = d.dept_id where d.dept_name in ('开发部','测试部');

3、

select e.emp_id, e.emp_name,s.money from salary s inner join employees e on s.emp_id = e.emp_id order by s.money desc limit 3;

4、

select e.emp_name,s.money from salary s inner join employees e on s.emp_id = e.emp_id where s.money between 1000 and 2000;

 

三、根据下面Student、StudentScore表编写对应的数据库语句

图片.png

1、查询平均成绩大于60的学生

2、用多表语句查询ID为1的学生的各科成绩

参考答案:

1、

select Student.* from Student, StudentScore where Student.ID = StudentScore.ID group by StudentScore.ID having avg(StudentScore.Score) > 60;

2、

select Student.ID, Student.name, StudentScore.C#, StudentScore.Score from 

Student,StudentScore where Student.ID = StudentScore.ID and Student.ID = 1;

四、表OrderItems如下,按要求完成sql编写

图片.png

图片.png

参考答案:

SELECT prod_id, quantity FROM OrderItems WHERE quantity = 100 or prod_id LIKE 'BNBG%' ORDER BY prod_id ASC;

 

五、SQL基础:student(学生表)、class(班级表)

图片.png

图片.png

图片.png

参考答案:

1、

select class.name as c_Name,student.name,sex,score from student left join class on 

student.c_id = class.id where score = (select max(score) from student);

2、

SELECT c.NAME AS C_Name,COUNT(s.Id) AS Rs,AVG(s.Score) AS Score FROM student s JOIN class c 

ON s.c_Id=c.Id WHERE c.NAME IN ('一班','二班') GROUP BY c.NAME ORDER BY Score DESC;

 

六、下图表a的信息,写sql得出图2的信息

图片.png

从结果可以看出来题目是: 分别查出每年每月的amount值;

SELECT year,

SUM(IF(month='1', amount, 0)) as 'm1',

SUM(IF(month='2', amount, 0)) as 'm2',

SUM(IF(month='3', amount, 0)) as 'm3',

SUM(IF(month='4', amount, 0)) as 'm4'

FROM a

GROUP BY year;

七、企业表、用户表、专属司机表

企业表 t_orgnization: 企业id:org_id、企业名称:org_name,注册时间:created_time

用户表 t_user: 用户id:user_id,登录账号:login_name,密码:pwd,真实姓名:real_name,所属企业id:org_id,注册时间:created_time

专属司机表 t_my_driver: 手机号:mobile_no,司机姓名:name,车牌号:car_percel_no,归属用户id:user_id

表之间的关系: 一个企业下可以注册多个用户,每个用户可以为自己注册多个专属司机

问题1: 查询所属企业id=86639,有真实姓名的用户信息,列出:登录账号,真实姓名,所属企业名称。

问题2: 查询拥有自己专属司机的用户所对应的企业信息,列出企业id,企业名称,注意去重。

参考答案:

1、

SELECT t_user.login_name,t_user.real_name,t_orgnization.org_name FROM t_user LEFT JOIN t_orgnization ON t_orgnization.org_id=t_user.org_id WHERE t_user.org_id=86639 AND t_user.real_name IS NOT NULL;

2、

SELECT DISTINCT t_orgnization.org_id,t_orgnization.org_Name

FROM t_orgnization

LEFT JOIN t_user on t_user.org_id = t_orgnization.org_id

LEFT JOIN t_my_driver on t_my_driver.user_id = t_user.user_id

WHERE t_my_driver.user_id is not null;

八、以下为学生表、课程表、成绩表、教师表

Student(Sid,Sname,Sage,Ssex)学生表

Sid:学号

Sname:学生姓名

Sage:学生年龄

Ssex:学生性别

Course(Cid,Cname,Tid)课程表

Cid:课程编号

Cname:课程名称

Tid:教师编号

Score(Sid,Cid,score)成绩表

Sid:学号

Cid:课程编号

score:成绩

Teacher(Tid,Tname)教师表

Tid:教师编号:

Tname:教师名字

试题1: 查询平均成绩大于60分的同学的学号和平均成绩,成绩保留两位小数

试题2: 查询姓‘章’的老师的个数

试题3: 查询所有同学的学号、姓名、选课数、总成绩

试题4: 查询没有学过“柠檬”老师课的同学的学号、姓名

试题5: 查询“C001”课程比“C002”课程成绩高的所有学生的学号、姓名

试题6: 查询学过“C001”并且也学过编号“C002”课程的同学的学号、姓名

试题7: 查询所有课程成绩小于60的同学的学号、姓名

试题8: 查询没有学全所有课的同学的学号、姓名

试题9: 查询学过“柠檬”老师所教的所有课的同学的学号、姓名

参考答案:

1、

select Sid,ROUND(AVG(score), 2) from Score group by Sid having avg(score)>60;

2、

select count(Tname) from Teacher where Tname like '章%';

3、

select Student.Sid,Student.Sname,count(Score.Cid),sum(Score.score) from Student left join Score on Student.Sid=Score.Sid group by Student.Sname,Student.Sid;

4、

select Sid,Sname from Student where Sid not in (Select Score.Sid from Teacher,Score,Course where Course.Cid = Score.Cid and Course.Tid = Teacher.Tid and Teacher.Tname = '杨幂');

5、

Select a.Sid,a.Sname from Student a

inner join Score b on a.Sid = b.Sid

inner join Score c on a.Sid = c.Sid

where (b.Cid = 'C001'and c.Cid ='C002') and b.score > c.score;

6、

select a.Sid,a.Sname from Student a inner join Score b on a.Sid=b.Sid inner join Score c on a.Sid=c.Sid where (b.Cid='c001' and c.Cid='c002');

7、

select Student.Sid,Student.Sname from Student,Score where Student.Sid = Score.Sid group by Score.Sid having max(Score.score)<60;

8、

SELECT S.Sid ,S.Sname FROM Student S LEFT JOIN Score Sc ON S.Sid=Sc.Sid GROUP BY S.Sid,S.Sname HAVING COUNT(DISTINCT Sc.Cid)< ( SELECT COUNT(*) FROM Course);

9、

SELECT Sid, Sname FROM Student WHERE Sid IN (
SELECT Score.Sid
FROM Score
JOIN Course ON Course.Cid = Score.Cid
JOIN Teacher ON Course.Tid = Teacher.Tid
WHERE Teacher.Tname = '杨幂'
GROUP BY Score.Sid
HAVING COUNT(DISTINCT Course.Cid) = (
SELECT COUNT(*)
FROM Course join Teacher
On Course.Tid = Teacher.Tid where Teacher.Tname = '杨幂'
)
);

随着互联网行业的快速发展,数据库技术在软件测试中的重要性日益凸显。掌握扎实的数据库知识,已成为测试人员必备的技能之一。

通过对经典数据库笔试题的学习和练习,我们可以更好地掌握数据库的核心概念和应用技巧。持续的学习和实践,将为我们的职业发展奠定坚实的基础。


### 软件测试面试题及答案 #### 数据和数据库完整性测试 在评估应用程序的数据处理能力时,确保数据的一致性和准确性至关重要。这涉及到验证输入到系统的数据能否被正确存储、检索以及更新而不会丢失或损坏[^1]。 #### 功能测试 此类型的测试旨在确认各个功能模块按照预期工作。例如,在电子商务网站上购买商品的功能应该能够成功完成交易流程中的每一步骤,包括选择产品、填写配送信息直至支付过程结束。 #### 用户界面测试 用户体验对于任何应用的成功都非常重要。通过模拟真实用户的操作行为来进行UI/UX方面的审查可以发现潜在的设计缺陷并提高产品的易用性水平。 #### 性能评测与负载测试 为了衡量系统在不同条件下的响应速度和服务质量,通常会实施性能评测;而在高并发情况下考察服务器承受压力的能力则属于负载测试范畴。这类活动有助于识别瓶颈所在从而优化资源配置策略以满足业务需求。 #### 安全性和访问控制测试 保护敏感资料免受未授权访问是至关重要的。因此需要定期开展针对权限管理机制的有效性检验——即检查只有经过适当认证后的合法用户才能获取特定资源,并且防止内部人员滥用职权造成的信息泄露风险。 #### 故障转移和恢复测试 当发生意外中断事件(如硬件故障)之后,快速恢复正常运行状态是一项基本要求。为此设计专门方案用于演练灾难场景下应急措施的效果评价就显得尤为必要了。 #### 配置测试 不同的环境设置可能会影响程序的表现形式及其稳定性表现。所以有必要针对多种部署模式展开全面细致的研究分析以便及时调整参数设定达到最佳兼容效果。 #### 加密测试 随着网络安全威胁日益严峻,保障通信链路的安全传输成为不可忽视的任务之一。这就意味着要对采用的各种加密算法进行严格检测确保其强度足以抵御外部攻击者破解企图的同时不影响正常使用体验。 #### 可用性测试 从最终消费者的角度出发考量整个交互过程是否流畅自然也是不可或缺的一个环节。它不仅限于页面加载时间长短这样的硬指标还包括视觉呈现美观度在内的软因素共同作用决定着整体满意度得分高低。 #### 版本验证测试 每当有新的迭代发布之前都要经历一轮详尽的质量把控工序来保证新旧特性之间不存在冲突矛盾之处并且所有已知问题均已得到妥善解决才允许上线推广给广大受众群体试用反馈意见收集整理待改进事项清单持续完善产品质量管理体系循环往复不断提升竞争力优势地位稳固保持行业领先水平不断超越自我追求卓越品质永无止境地探索未知领域创造无限可能性未来可期。 #### 文档测试 良好的技术文档可以帮助开发者更好地理解项目的架构和技术细节,同时也方便后续维护和支持工作的顺利开展。因此,应当仔细审核各类手册指南是否存在错误遗漏等问题影响实际工作效率提升。 ```python import unittest class TestExample(unittest.TestCase): def test_addition(self): self.assertEqual(1 + 1, 2) if __name__ == '__main__': unittest.main() ``` 上述代码展示了如何利用Python内置库`unittest`创建简单的单元测试案例并通过调用`.main()`方法启动执行流程实现自动化校验目的[^2]。 关于具体项目经验分享方面,则可以从以下几个角度入手准备回答: - 描述所参与的具体项目名称及其背景意义; - 解释团队结构构成情况比如成员数量角色分工协作方式等要素; - 提供有关开发周期长度里程碑规划进度安排等方面的信息说明; - 统计编写了多少条测试用例发现了几个Bug等相关量化成果展示个人贡献价值所在[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值