一、數據准備
1、創建表結構及數據
-- ---------------------------- -- Table structure for course -- ---------------------------- DROP TABLE IF EXISTS `course`; CREATE TABLE `course` ( `Cno` int(11) NOT NULL COMMENT '課程編號', `Cname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '課程名稱', `Tno` int(11) NULL DEFAULT NULL COMMENT '老師編號', PRIMARY KEY (`Cno`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of course -- ---------------------------- INSERT INTO `course` VALUES (1, '數學', 1); INSERT INTO `course` VALUES (2, '語文', 2); INSERT INTO `course` VALUES (3, '英文', 1); -- ---------------------------- -- Table structure for sc -- ---------------------------- DROP TABLE IF EXISTS `sc`; CREATE TABLE `sc` ( `Sno` int(11) NOT NULL COMMENT '學號', `Cno` int(11) NOT NULL COMMENT '課程編號', `score` int(255) NULL DEFAULT NULL COMMENT '分數', PRIMARY KEY (`Sno`, `Cno`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of sc -- ---------------------------- INSERT INTO `sc` VALUES (1, 1, 99); INSERT INTO `sc` VALUES (1, 2, 80); INSERT INTO `sc` VALUES (1, 3, 50); INSERT INTO `sc` VALUES (2, 1, 70); INSERT INTO `sc` VALUES (2, 2, 90); INSERT INTO `sc` VALUES (3, 1, 90); INSERT INTO `sc` VALUES (4, 1, 60); INSERT INTO `sc` VALUES (4, 2, 50); INSERT INTO `sc` VALUES (4, 3, 40); -- ---------------------------- -- Table structure for student -- ---------------------------- DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( `Sno` int(255) NOT NULL COMMENT '學號', `Sname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '姓名', `Sage` int(255) NULL DEFAULT NULL COMMENT '年齡', `Ssex` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '性別', PRIMARY KEY (`Sno`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of student -- ---------------------------- INSERT INTO `student` VALUES (1, '張三豐', 108, '男'); INSERT INTO `student` VALUES (2, '李小龍', 20, '男'); INSERT INTO `student` VALUES (3, '小龍女', 17, '女'); INSERT INTO `student` VALUES (4, '白發魔女', 18, '女'); INSERT INTO `student` VALUES (5, '韋小寶', 19, '男'); -- ---------------------------- -- Table structure for teacher -- ---------------------------- DROP TABLE IF EXISTS `teacher`; CREATE TABLE `teacher` ( `Tno` int(11) NOT NULL COMMENT '老師編號', `Tname` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '老師名稱', PRIMARY KEY (`Tno`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of teacher -- ---------------------------- INSERT INTO `teacher` VALUES (1, '無崖子'); INSERT INTO `teacher` VALUES (2, '孤獨求敗'); INSERT INTO `teacher` VALUES (3, '洪七公'); SET FOREIGN_KEY_CHECKS = 1;
表結構:
a學生表,b成績表,c課程表,d老師表
2、面試題
2.1 單表查詢
#1 查詢年齡小於18歲的學員信息
select * from student a where a.Sage < 18;
2.2 雙表查詢
# 2 查詢無崖子授課信息
select * from teacher d inner join course c on d.tno = c.tno where d.tname = '無崖子';
# 3 查詢沒有參與任意課程的學生信息
select * from student a left join sc b on a.sno = b.sno where b.sno is null;
2.3 三表查詢
#4 查詢無崖子每個授課課程的學員人數 統計 + 分組
select c.cno, c.cname, count( * ) from teacher d inner join course c on d.tno = c.tno inner join sc b on b.cno = c.cno where d.tname = '無崖子' group by c.cno, c.cname;
#5 查詢張三豐數學成績
select * from student a inner join sc b on a.sno = b.sno inner join course c on c.cno = b.cno where a.sname = '張三豐' and c.cname = '數學';
#6 查詢出語文最高分
select max( b.score ), c.cname from student a inner join sc b on a.sno = b.sno inner join course c on b.cno = c.cno where c.cname = '語文';
#7 查詢沒有參與語文考試的學生信息
# 先查詢出參加了語文課程學生
select * from course c inner join sc b on c.cno = b.cno and c.cname = '語文' right join student a on a.sno = b.sno where b.sno is null;
#8 查詢語數外三門成績的平均分
select c.cno, c.cname, avg( b.score ) from student a inner join sc b on a.sno = b.sno inner join course c on b.cno = c.cno group by c.cno, c.cname;
2.4 四表查詢
#9 查詢報名孤獨求敗老師課程的學生信息
select * from student a inner join sc b on a.sno = b.sno inner join course c on b.cno = c.cno inner join teacher d on c.tno = d.tno where d.tname = '孤獨求敗';
#10 沒有報名孤獨求敗老師課程的學生信息
select * from teacher d inner join course c on d.tno = c.tno and d.tname = '孤獨求敗' inner join sc b on c.cno = b.cno right join student a on a.sno = b.sno where b.sno is null;
*******請大家尊重原創,如要轉載,請注明出處:轉載自:https://www.cnblogs.com/shouhu/,謝謝!!*******