軟件測試之數據庫面試題


第一期:

學生表(學生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.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM