测试面试之数据库

本文详细介绍了MySQL数据库的相关知识,包括建表、插入、更新语句,以及一系列的SQL查询习题,涵盖联表查询、分组统计、排序、索引等。还涉及到数据库的字段添加、数据表结构查看、DDL语句、数据库引擎比较、事务隔离级别、锁的类型、ACID特性、主从同步原理等核心概念,并讨论了SQL优化策略。
摘要由CSDN通过智能技术生成

Mysql:
建表语句?
CREATE TABLE grade (
no int(11) NOT NULL,
id int(11) NOT NULL,
kemu varchar(255) DEFAULT NULL,
score int(11) DEFAULT NULL,
PRIMARY KEY (no)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE student (
id int(11) NOT NULL,
name varchar(255) DEFAULT NULL,
age int(11) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

插入语句?
INSERT INTO student.grade (no, id, kemu, score) VALUES (1, 1001, ‘语文’, 85);
INSERT INTO student.grade (no, id, kemu, score) VALUES (2, 1001, ‘数学’, 86);
INSERT INTO student.grade (no, id, kemu, score) VALUES (3, 1002, ‘英语’, 98);
INSERT INTO student.grade (no, id, kemu, score) VALUES (4, 1002, ‘语文’, 94);
INSERT INTO student.grade (no, id, kemu, score) VALUES (5, 1002, ‘数学’, 98);
INSERT INTO student.grade (no, id, kemu, score) VALUES (6, 1003, ‘数学’, 56);
INSERT INTO student.grade (no, id, kemu, score) VALUES (7, 1003, ‘语文’, 69);
INSERT INTO student.grade (no, id, kemu, score) VALUES (8, 1003, ‘英语’, 68);
INSERT INTO student.grade (no, id, kemu, score) VALUES (9, 1004, ‘英语’, 99);
INSERT INTO student.grade (no, id, kemu, score) VALUES (10, 1004, ‘数学’, 97);

INSERT INTO student.student (id, name, age) VALUES (1001, ‘张三’, 18);
INSERT INTO student.student (id, name, age) VALUES (1002, ‘张四’, 19);
INSERT INTO student.student (id, name, age) VALUES (1003, ‘张五’, 20);
INSERT INTO student.student (id, name, age) VALUES (1004, ‘张六’, 19);

更新语句?
UPDATE student.student SET id=‘1001’, name=‘张三’, age=‘18’ WHERE (id=‘1001’);

#习题
#1.查询所有学生的数学成绩,显示学生姓名 name, 分数, 由高到低
select t1.name,t2.score ,t2.kemu from student t1 INNER JOIN grade t2 where t1.id = t2.id and t2.kemu = “数学” ORDER BY score desc;

#2.统计每个学生的总成绩,显示字段:姓名,总成绩
select t1.name , sum(t2.score) from student t1 INNER JOIN grade t2 WHERE t1.id = t2.id group BY t1.name;

#3.统计每个学生的总成绩(由于学生可能有重复名字),显示字段:学生 id,姓名,总成绩

select a.id , a.name ,c.sum_score from student a INNER JOIN ( select b.id,SUM(b.score) as sum_score from grade b group by id ) c where a.id = c.id ORDER BY c.sum_score desc;

#4.列出各门课程成绩最好的学生, 要求显示字段: 学号,姓名,科目,成绩

select t3.id,t3.name, t2.kemu ,t2.max_score from student t3 inner join ( select t1.id , t1.kemu,max(t1.score) as max_score from grade t1 GROUP BY t1.kemu) t2 where t3.id = t2.id;

#5.列出各门课程成绩最好的 2 位学生, 要求显示字段: 学号,姓名, 科目,成绩

select t1.id,t2.name,t1.kemu,t1.score from grade t1 inner JOIN student t2 where (select count(*) from grade t3 where t1.kemu = t3.kemu and t3.score > t1.score ) < 2 and t2.id = t1.id ORDER BY t1.kemu,t1.score desc;

#1.计算每个人的平均成绩, 要求显示字段: 学号,姓名,平均成绩
select t1.id , t1.name, avg(t2.score) as avg_score from student t1 inner JOIN grade t2 where t1.id = t2.id GROUP BY t1.name;

#2.计算每个人的成绩,总分数,平均分,

数据库在软件测试中扮演着重要的角色。它存储着应用程序的数据,并且在测试过程中,我们需要确保数据库的稳定性、数据的一致性和准确性。以下是一些与数据库相关的常见面试问题: 1. 什么是数据库测试数据库测试是指验证数据库是否按照预期工作的过程。它涉及对数据库的各种功能进行测试,包括数据插入、更新、删除、查询等操作。 2. 你在测试数据库时会关注哪些方面? 在测试数据库时,我们通常会关注以下方面: - 数据准确性和一致性:确保数据的正确性和一致性。 - 数据完整性:验证数据库中的数据是否完整。 - 数据库性能:测试数据库的响应时间、并发处理能力等性能指标。 - 数据库安全性:验证数据库的安全措施,如权限控制和加密等。 3. 你在数据库测试中使用过哪些工具? 在数据库测试中,常用的工具包括: - SQL查询工具(如SQL Server Management Studio、MySQL Workbench等):用于执行SQL查询,检查数据结果。 - 数据库比较工具(如Beyond Compare、DBComparer等):用于比较两个数据库之间的差异。 - 数据生成工具(如DataFactory、Mockaroo等):用于生成测试数据,以覆盖各种情况。 4. 你如何测试数据库的性能? 测试数据库性能时,可以采取以下措施: - 压力测试:模拟多个并发用户对数据库进行操作,以评估其在高负载情况下的表现。 - 性能监测:使用性能监测工具,如SQL Server Profiler或MySQL Performance Schema,监视数据库的性能指标(如查询执行时间、磁盘IO等)。 - 数据库索引优化:通过分析查询执行计划和索引统计信息,对数据库索引进行优化,提高查询性能。 这些都是数据库测试中的一些常见问题和技巧,希望对你的面试有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值