3mysql第三天 查询的指令补充

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;
View Code

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; 
View Code

3.查询平均成绩大于60分的铜须的学号和平时成绩:使用avg()

SELECT student_id ,AVG(num) from score  GROUP BY student_id HAVING AVG(num)>60;
View Code

  升级版本:里面用到了临时表:就是把某一次筛选的数据用括号括起来然后用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;
View Code

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
View Code

5.查询姓李老师的个数:

SELECT teacher.tname from teacher WHERE tname  like '李%'
View Code

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='生物';
View Code

7.查询没有学习过李华老师同学的学号和姓名:

猜你喜欢

转载自www.cnblogs.com/ab461087603/p/12715534.html