北關(guān)網(wǎng)站制作百度推廣官方
你是否在面試中遇到過關(guān)于數(shù)據(jù)庫的筆試題?如何高效地準(zhǔn)備這些題目,提升自己的競爭力?本文將為你整理一些經(jīng)典的數(shù)據(jù)庫筆試題及其答案,助你備戰(zhàn)面試。
金三銀四馬上來了,測試年限較短難免會碰到筆試題,最近就收到一些求職小伙伴反饋過來的數(shù)據(jù)庫筆試題,說不太會做。特意做了下摘錄及答案整理,給大家做個分享。如果不想筆試受挫的寶子,一定要牢牢碼住!并多多練習(xí)!
在求職季節(jié),尤其是金三銀四期間,許多測試人員面臨數(shù)據(jù)庫相關(guān)的筆試題目。掌握常見的數(shù)據(jù)庫筆試題及其解答,對于提升面試通過率至關(guān)重要。
在實際面試中,數(shù)據(jù)庫相關(guān)的筆試題目常常考察候選人的SQL能力和邏輯思維。通過對經(jīng)典題目的練習(xí),能夠幫助我們更好地理解數(shù)據(jù)庫的應(yīng)用場景和解決方案。
一、已建立二張學(xué)生基本信息表,表的結(jié)構(gòu)如下:
est表
test1表
1)用SQL語句找出是計算機(jī)系并籍貫是北京的學(xué)生的所有記錄
2)用SQL語句把計算機(jī)系的學(xué)生的department改為信息學(xué)院
3)用SQL連接查詢找出成績大于等于75分的學(xué)生的no,name, grade,course字段的記錄
參考答案:
1)
select * from test where department='計算機(jī)系' and place='北京';
2)
UPDATE test SET department='信息學(xué)院' WHERE department='計算機(jī)系';
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、 列出總?cè)藬?shù)大于 4 的部門編號和該部門人數(shù)
問題2、 列出開發(fā)部和測試部的職工號,姓名
問題3、 顯示工資最高的前 3 名職工的職工號和姓名
問題4、 列出工資在 1000-2000 之間的所有職工姓名
參考答案:
1、
select dept_id, count() as '部門人數(shù)' 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 ('開發(fā)部','測試部');
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;
?
三、根據(jù)下面Student、StudentScore表編寫對應(yīng)的數(shù)據(jù)庫語句
1、查詢平均成績大于60的學(xué)生
2、用多表語句查詢ID為1的學(xué)生的各科成績
參考答案:
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編寫
參考答案:
SELECT prod_id, quantity FROM OrderItems WHERE quantity = 100 or prod_id LIKE 'BNBG%' ORDER BY prod_id ASC;
?
五、SQL基礎(chǔ):student(學(xué)生表)、class(班級表)
參考答案:
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的信息
從結(jié)果可以看出來題目是: 分別查出每年每月的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 aGROUP BY year;
七、企業(yè)表、用戶表、專屬司機(jī)表
企業(yè)表 t_orgnization: 企業(yè)id:org_id、企業(yè)名稱:org_name,注冊時間:created_time
用戶表 t_user: 用戶id:user_id,登錄賬號:login_name,密碼:pwd,真實姓名:real_name,所屬企業(yè)id:org_id,注冊時間:created_time
專屬司機(jī)表 t_my_driver: 手機(jī)號:mobile_no,司機(jī)姓名:name,車牌號:car_percel_no,歸屬用戶id:user_id
表之間的關(guān)系: 一個企業(yè)下可以注冊多個用戶,每個用戶可以為自己注冊多個專屬司機(jī)
問題1: 查詢所屬企業(yè)id=86639,有真實姓名的用戶信息,列出:登錄賬號,真實姓名,所屬企業(yè)名稱。
問題2: 查詢擁有自己專屬司機(jī)的用戶所對應(yīng)的企業(yè)信息,列出企業(yè)id,企業(yè)名稱,注意去重。
參考答案:
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_NameFROM t_orgnizationLEFT JOIN t_user on t_user.org_id = t_orgnization.org_idLEFT JOIN t_my_driver on t_my_driver.user_id = t_user.user_idWHERE t_my_driver.user_id is not null;
八、以下為學(xué)生表、課程表、成績表、教師表
Student(Sid,Sname,Sage,Ssex)學(xué)生表
Sid:學(xué)號
Sname:學(xué)生姓名
Sage:學(xué)生年齡
Ssex:學(xué)生性別
Course(Cid,Cname,Tid)課程表
Cid:課程編號
Cname:課程名稱
Tid:教師編號
Score(Sid,Cid,score)成績表
Sid:學(xué)號
Cid:課程編號
score:成績
Teacher(Tid,Tname)教師表
Tid:教師編號:
Tname:教師名字
試題1: 查詢平均成績大于60分的同學(xué)的學(xué)號和平均成績,成績保留兩位小數(shù)
試題2: 查詢姓‘章’的老師的個數(shù)
試題3: 查詢所有同學(xué)的學(xué)號、姓名、選課數(shù)、總成績
試題4: 查詢沒有學(xué)過“檸檬”老師課的同學(xué)的學(xué)號、姓名
試題5: 查詢“C001”課程比“C002”課程成績高的所有學(xué)生的學(xué)號、姓名
試題6: 查詢學(xué)過“C001”并且也學(xué)過編號“C002”課程的同學(xué)的學(xué)號、姓名
試題7: 查詢所有課程成績小于60的同學(xué)的學(xué)號、姓名
試題8: 查詢沒有學(xué)全所有課的同學(xué)的學(xué)號、姓名
試題9: 查詢學(xué)過“檸檬”老師所教的所有課的同學(xué)的學(xué)號、姓名
參考答案:
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 ainner join Score b on a.Sid = b.Sidinner join Score c on a.Sid = c.Sidwhere (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 = '楊冪'
)
);
隨著互聯(lián)網(wǎng)行業(yè)的快速發(fā)展,數(shù)據(jù)庫技術(shù)在軟件測試中的重要性日益凸顯。掌握扎實的數(shù)據(jù)庫知識,已成為測試人員必備的技能之一。
通過對經(jīng)典數(shù)據(jù)庫筆試題的學(xué)習(xí)和練習(xí),我們可以更好地掌握數(shù)據(jù)庫的核心概念和應(yīng)用技巧。持續(xù)的學(xué)習(xí)和實踐,將為我們的職業(yè)發(fā)展奠定堅實的基礎(chǔ)。