1.往navicat中注入下面程序:
/* Navicat Premium Data Transfer Source Server : sss Source Server Type : MySQL Source Server Version : 80019 Source Host : localhost:3306 Source Schema : db3 Target Server Type : MySQL Target Server Version : 80019 File Encoding : 65001 Date: 16/04/2020 14:49:22 */ SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for class -- ---------------------------- DROP TABLE IF EXISTS `class`; CREATE TABLE `class` ( `cid` int(0) NOT NULL AUTO_INCREMENT, `caption` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, PRIMARY KEY (`cid`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of class -- ---------------------------- INSERT INTO `class` VALUES (1, '三年级一班'); INSERT INTO `class` VALUES (2, '三年级二班'); INSERT INTO `class` VALUES (3, '三年级三班'); -- ---------------------------- -- Table structure for course -- ---------------------------- DROP TABLE IF EXISTS `course`; CREATE TABLE `course` ( `cid` int(0) NOT NULL AUTO_INCREMENT, `cname` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, `teacher_id` int(0) NOT NULL, PRIMARY KEY (`cid`) USING BTREE, INDEX `fk_cour_teach`(`teacher_id`) USING BTREE, CONSTRAINT `fk_cour_teach` FOREIGN KEY (`teacher_id`) REFERENCES `teacher` (`tid`) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of course -- ---------------------------- INSERT INTO `course` VALUES (1, '生物', 1); INSERT INTO `course` VALUES (2, '地理', 2); INSERT INTO `course` VALUES (3, '体育', 3); INSERT INTO `course` VALUES (4, '物理', 2); INSERT INTO `course` VALUES (5, '历史', 1); INSERT INTO `course` VALUES (6, '语文', 4); -- ---------------------------- -- Table structure for score -- ---------------------------- DROP TABLE IF EXISTS `score`; CREATE TABLE `score` ( `sid` int(0) NOT NULL AUTO_INCREMENT, `student_id` int(0) NOT NULL, `coruse_id` int(0) NOT NULL, `num` int(0) NOT NULL, PRIMARY KEY (`sid`) USING BTREE, INDEX `fk_score_student`(`student_id`) USING BTREE, INDEX `fk_score_course`(`coruse_id`) USING BTREE, CONSTRAINT `fk_score_course` FOREIGN KEY (`coruse_id`) REFERENCES `course` (`cid`) ON DELETE RESTRICT ON UPDATE RESTRICT, CONSTRAINT `fk_score_student` FOREIGN KEY (`student_id`) REFERENCES `student` (`sid`) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of score -- ---------------------------- INSERT INTO `score` VALUES (1, 1, 3, 56); INSERT INTO `score` VALUES (2, 3, 2, 64); INSERT INTO `score` VALUES (3, 1, 2, 89); INSERT INTO `score` VALUES (4, 2, 4, 45); INSERT INTO `score` VALUES (5, 3, 4, 89); INSERT INTO `score` VALUES (6, 1, 5, 65); INSERT INTO `score` VALUES (7, 2, 3, 78); INSERT INTO `score` VALUES (8, 4, 3, 89); INSERT INTO `score` VALUES (9, 5, 2, 99); INSERT INTO `score` VALUES (10, 6, 4, 85); INSERT INTO `score` VALUES (11, 5, 4, 77); INSERT INTO `score` VALUES (12, 2, 5, 66); INSERT INTO `score` VALUES (13, 1, 4, 54); INSERT INTO `score` VALUES (14, 1, 1, 89); INSERT INTO `score` VALUES (15, 1, 6, 47); INSERT INTO `score` VALUES (16, 2, 2, 85); INSERT INTO `score` VALUES (17, 3, 1, 86); INSERT INTO `score` VALUES (18, 3, 5, 76); INSERT INTO `score` VALUES (19, 5, 1, 88); INSERT INTO `score` VALUES (20, 6, 2, 35); -- ---------------------------- -- Table structure for student -- ---------------------------- DROP TABLE IF EXISTS `student`; CREATE TABLE `student` ( `sid` int(0) NOT NULL AUTO_INCREMENT, `sname` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, `gener` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL, `class_id` int(0) NOT NULL, PRIMARY KEY (`sid`) USING BTREE, INDEX `fk_cla_stu`(`class_id`) USING BTREE, CONSTRAINT `fk_cla_stu` FOREIGN KEY (`class_id`) REFERENCES `class` (`cid`) ON DELETE RESTRICT ON UPDATE RESTRICT ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of student -- ---------------------------- INSERT INTO `student` VALUES (1, '李华', '男', 2); INSERT INTO `student` VALUES (2, '陈虎', '男', 3); INSERT INTO `student` VALUES (3, '小明', '女', 1); INSERT INTO `student` VALUES (4, '李红', '男', 2); INSERT INTO `student` VALUES (5, '红花', '男', 3); INSERT INTO `student` VALUES (6, '莉莉', '女', 2); -- ---------------------------- -- Table structure for teacher -- ---------------------------- DROP TABLE IF EXISTS `teacher`; CREATE TABLE `teacher` ( `tid` int(0) NOT NULL AUTO_INCREMENT, `tname` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, PRIMARY KEY (`tid`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of teacher -- ---------------------------- INSERT INTO `teacher` VALUES (1, '李泽华'); INSERT INTO `teacher` VALUES (2, '余华'); INSERT INTO `teacher` VALUES (3, '蒋国'); INSERT INTO `teacher` VALUES (4, '马贵'); SET FOREIGN_KEY_CHECKS = 1;
2.寻找成绩中大于70的所有同学的姓名和id号:
SELECT student.sid,student.sname,score.num from score left JOIN student on score.student_id=student.sid where score.num>70;
3.查询平均成绩大于60分的铜须的学号和平时成绩:使用avg()
SELECT student_id ,AVG(num) from score GROUP BY student_id HAVING AVG(num)>60;
升级版本:里面用到了临时表:就是把某一次筛选的数据用括号括起来然后用as 从新名一个名字
SELECT B.student_id,student.sname,B.ccc FROM (SELECT student_id, avg( num ) as ccc FROM score GROUP BY student_id HAVING avg( num )> 60 ) AS B LEFT JOIN student ON B.student_id = student.sid;
4.查寻所有同学的学号、姓名、选课数、总成绩:(需要使用到临时表格、sum、count 、left join)
SELECT B.student_id,B.sum1,B.cou1,student.sname FROM (select student_id ,sum(num) as sum1,count(course_id) as cou1 from score GROUP BY student_id) as B left join student on B.student_id=student.sid
5.查询姓李老师的个数:
SELECT teacher.tname from teacher WHERE tname like '李%'
6.分组的一个测试实例:
SELECT score.sid,score.student_id,score.num ,course.cname from score left join course on score.course_id=course.cid where course.cname='生物';
7.查询没有学习过李华老师同学的学号和姓名: