![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAjM2EzLcd3LcJzLcJzdllmVldWYtl2Pn5GcuYGMzY2MxEGMjFTO5YjMjhjN1QDOyEWZmZDNkVWM1ATZvw1M5MzM1kjNtUGall3LcVmdhNXLwRHdo9CXt92YucWbpRWdvx2Yx5yazF2Lc9CX6MHc0RHaiojIsJye.png)
【面試題】
有三張表:“學生表”、“課程表”、“學生選課表”。“學生表”的主鍵是“學号”
“課程表”的主鍵是“課程号”
“學生選課表”的主鍵是“學号”和“課程号”
問題1:寫出“學生表”的建表語句,其中學号屬性不能為空,并且其值是唯一的
問題2:在“學生表”中查詢“所在系”是“計算機”的學生所有資訊,并按“學号”從小到大排序
問題3:基于以上三張表,查詢“學分”為5并且“成績”大于60的學生資訊,包括學号、姓名和性别
【解題步驟】
建表的SQL文法如下
最基礎的建表語句中包含5個資訊:
1)表的名稱;
2)字段名稱;
3)每個字段對應的資料類型;
4)非空辨別:not null,加了非空辨別的字段的值不能為空,否則會報錯;
5)主鍵辨別:primary key,選擇一個字段作為主鍵,不能重複、不能為空,用于唯一辨別表中的每一條資料。
把上面建表語句的5個資訊對應到要建的學生表如下圖
問題1:寫出“學生表”的建表語句,其中學号屬性不能為空,并且其值是唯一的
“學生表”的建表語句為:
問題2:在“學生表”中查詢“所在系”是“計算機”的學生所有資訊,并按“學号”從小到大排序
排序文法如下:
order by 是查詢子產品中的排序語句,可以使得排序結果按一個或多個字段排序。
asc辨別從小到大排序,desc表示從大到小排序,預設是從小到大排序。
問題2的答案為:
問題3:基于以上三張表,查詢“學分”為5并且“成績”大于60的學生資訊,包括學号、姓名和性别
“學分”在“課程表”中,“成績”在“學生選課表”中,“學生資訊”在“學生表”中。這個問題涉及到三張表,需要用到多表聯結,三個表的關系如下圖:
查詢結果:
【本題考點】
1.考查對建表語句的了解
2.考查對基礎查詢語句的了解
3.考查對多表聯結的靈活使用
推薦:從零學會SQL?