SQL经典案例(学生表,课程表,选课表,教师表) 练习
生活随笔
收集整理的這篇文章主要介紹了
SQL经典案例(学生表,课程表,选课表,教师表) 练习
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
一·創(chuàng)建表
課程表 DROP TABLE IF EXISTS `course`; CREATE TABLE `course` (`CNO` int(10) NOT NULL COMMENT '課程號(hào)',`CNAME` char(30) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL COMMENT '課程名稱',`TNO` int(10) NOT NULL COMMENT '授課教師編號(hào)',`CREDIT` float(10, 1) NOT NULL COMMENT '學(xué)分',PRIMARY KEY (`CNO`, `TNO`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = gbk COLLATE = gbk_chinese_ci ROW_FORMAT = Dynamic;INSERT INTO `course` VALUES (1101, 'Java程序設(shè)計(jì)', 1, 3.0); INSERT INTO `course` VALUES (1102, '人工智能概述', 1, 3.0); INSERT INTO `course` VALUES (1103, 'MySQL數(shù)據(jù)庫(kù)', 3, 1.0); INSERT INTO `course` VALUES (2201, '多元統(tǒng)計(jì)分析', 3, 3.5); INSERT INTO `course` VALUES (2202, '經(jīng)濟(jì)計(jì)量分析', 2, 2.5); INSERT INTO `course` VALUES (2203, '宏觀經(jīng)濟(jì)統(tǒng)計(jì)分析', 5, 2.0); INSERT INTO `course` VALUES (3301, '大學(xué)語(yǔ)文', 4, 2.0); INSERT INTO `course` VALUES (3302, '四進(jìn)四信', 6, 1.0); INSERT INTO `course` VALUES (3303, '形式與政策', 7, 0.2); 教師表 DROP TABLE IF EXISTS `newteacher`; CREATE TABLE `newteacher` (`TNO` int(10) NOT NULL COMMENT '教師編號(hào)',`TNAME` char(8) CHARACTER SET gbk COLLATE gbk_chinese_ci NOT NULL COMMENT '教師姓名',PRIMARY KEY (`TNO`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = gbk COLLATE = gbk_chinese_ci ROW_FORMAT = Dynamic;INSERT INTO `newteacher` VALUES (1, '張卓'); INSERT INTO `newteacher` VALUES (2, '范英兵'); INSERT INTO `newteacher` VALUES (3, '孫麗男'); INSERT INTO `newteacher` VALUES (4, '閆晶'); INSERT INTO `newteacher` VALUES (5, '羅曉媛'); INSERT INTO `newteacher` VALUES (6, '王靜'); INSERT INTO `newteacher` VALUES (7, '李紅紅'); 選課表 DROP TABLE IF EXISTS `sc`; CREATE TABLE `sc` (`SNO` int(10) NOT NULL COMMENT '學(xué)號(hào)',`CNO` int(10) NOT NULL COMMENT '課程號(hào)',`GRADE` int(10) NOT NULL,PRIMARY KEY (`SNO`, `CNO`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = gbk COLLATE = gbk_chinese_ci ROW_FORMAT = Dynamic; 學(xué)生表 DROP TABLE IF EXISTS `student`; CREATE TABLE `student` (`SNO` int(10) NOT NULL AUTO_INCREMENT COMMENT '學(xué)號(hào)',`SNAME` varchar(30) CHARACTER SET gbk COLLATE gbk_chinese_ci NULL DEFAULT NULL,`SEX` char(2) CHARACTER SET gbk COLLATE gbk_chinese_ci NULL DEFAULT NULL COMMENT '性別',`age` int(20) NOT NULL,PRIMARY KEY (`SNO`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 16 CHARACTER SET = gbk COLLATE = gbk_chinese_ci ROW_FORMAT = Dynamic;操作題目
將Student 表中的第一條記錄的AGE數(shù)據(jù)修改成比原來(lái)大兩歲; UPDATE student SET age=20+2 WHERE SNO=1; 將學(xué)生選課表SC中的成績(jī) GRADE屬性名改為:NEWGRADE; ALTER TABLE sc CHANGE COLUMN GRADE NEWGRADE int(10); desc sc; 刪除STUDENT 表中的最后一條記錄。 DELETE FROM student WHERE SNO=15; 查詢成績(jī)?cè)?0 到 89 之間的所有學(xué)生選課記錄,查詢結(jié)果按成績(jī)的降序排列,并為課程號(hào)起別名。 SELECT SNO,CNO AS '課程號(hào)',NEWGRADE FROM sc WHERE NEWGRADE BETWEEN 60 AND 89 ORDER BY NEWGRADE DESC; 左連接查詢所有學(xué)生的選課信息。 SELECT c.SNO,stu.SNAME,c.CNO,c.NEWGRADE FROM sc c LEFT JOIN student stu ON c.SNO=stu.SNO; 右連接查詢選課的學(xué)生的基本信息。 SELECT stu.SNO, stu.SNAME, stu.SEX, stu.age, c.CNO, c.NEWGRADE FROM sc c RIGHT JOIN student stu ON c.SNO=stu.SNO; 查詢選修課成績(jī)?cè)?0分以下的學(xué)生姓名、性別、年齡。 SELECT SNAME,SEX,age FROM student WHERE SNO IN (SELECT SNO FROM sc WHERE NEWGRADE>60); 查詢各門(mén)課程取得最高成績(jī)的學(xué)生姓名及其成績(jī)。 SELECT s.SNAME,c.CNO,c.NEWGRADE FROM (SELECT CNO,max(NEWGRADE) maxg FROM sc GROUP BY CNO) a,student s,sc c WHERE a.CNO=c.CNO AND a.maxg=c.NEWGRADE AND c.SNO=s.SNO; 查詢選修了某門(mén)課程的學(xué)生的基本信息。 SELECT s.SNO,s.SNAME,s.SEX,s.age,c.CNO FROM student s,sc c WHERE c.CNO IN(SELECT CNO FROM sc WHERE CNO=課程號(hào)) AND s.SNO=c.SNO; 查詢選修了某位老師開(kāi)設(shè)的課程的學(xué)生的信息以及相應(yīng)的成績(jī)。 SELECT s.SNAME,s.SEX,s.age,c.NEWGRADE,e.CNAME FROM (SELECT TNO,TNAME FROM newteacher WHERE TNAME='老師' GROUP BY TNO) n,student s,sc c,course e WHERE n.TNO=e.TNO AND e.CNO=c.CNO AND c.SNO=s.SNO; 當(dāng)某一門(mén)課程的平均成績(jī)大于85分時(shí),查詢選擇該門(mén)課程學(xué)生的基本信息,否則不查詢 SELECT s.SNAME,s.SEX,s.age FROM (SELECT SNO,avg(NEWGRADE) avgg FROM sc GROUP BY SNO) a,student s,sc c,course e WHERE a.SNO=c.SNO AND a.avgg=c.NEWGRADE AND c.SNO=s.SNO AND c.CNO=e.CNO;總結(jié)
以上是生活随笔為你收集整理的SQL经典案例(学生表,课程表,选课表,教师表) 练习的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 算法2.4.24:查找链表二叉树节点
- 下一篇: 在 SQL Server 中使用日历表