zoukankan      html  css  js  c++  java
  • Mysql练习

    /*
     Navicat Premium Data Transfer
    
     Source Server         : localhost
     Source Server Type    : MySQL
     Source Server Version : 50624
     Source Host           : localhost
     Source Database       : sqlexam
    
     Target Server Type    : MySQL
     Target Server Version : 50624
     File Encoding         : utf-8
    
     Date: 10/21/2016 06:46:46 AM
    */
    
    SET NAMES utf8;
    SET FOREIGN_KEY_CHECKS = 0;
    
    -- ----------------------------
    --  Table structure for `class`
    -- ----------------------------
    DROP TABLE IF EXISTS `class`;
    CREATE TABLE `class` (
      `cid` int(11) NOT NULL AUTO_INCREMENT,
      `caption` varchar(32) NOT NULL,
      PRIMARY KEY (`cid`)
    ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    --  Records of `class`
    -- ----------------------------
    BEGIN;
    INSERT INTO `class` VALUES ('1', '三年二班'), ('2', '三年三班'), ('3', '一年二班'), ('4', '二年九班');
    COMMIT;
    
    -- ----------------------------
    --  Table structure for `course`
    -- ----------------------------
    DROP TABLE IF EXISTS `course`;
    CREATE TABLE `course` (
      `cid` int(11) NOT NULL AUTO_INCREMENT,
      `cname` varchar(32) NOT NULL,
      `teacher_id` int(11) NOT NULL,
      PRIMARY KEY (`cid`),
      KEY `fk_course_teacher` (`teacher_id`),
      CONSTRAINT `fk_course_teacher` FOREIGN KEY (`teacher_id`) REFERENCES `teacher` (`tid`)
    ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    --  Records of `course`
    -- ----------------------------
    BEGIN;
    INSERT INTO `course` VALUES ('1', '生物', '1'), ('2', '物理', '2'), ('3', '体育', '3'), ('4', '美术', '2');
    COMMIT;
    
    -- ----------------------------
    --  Table structure for `score`
    -- ----------------------------
    DROP TABLE IF EXISTS `score`;
    CREATE TABLE `score` (
      `sid` int(11) NOT NULL AUTO_INCREMENT,
      `student_id` int(11) NOT NULL,
      `course_id` int(11) NOT NULL,
      `num` int(11) NOT NULL,
      PRIMARY KEY (`sid`),
      KEY `fk_score_student` (`student_id`),
      KEY `fk_score_course` (`course_id`),
      CONSTRAINT `fk_score_course` FOREIGN KEY (`course_id`) REFERENCES `course` (`cid`),
      CONSTRAINT `fk_score_student` FOREIGN KEY (`student_id`) REFERENCES `student` (`sid`)
    ) ENGINE=InnoDB AUTO_INCREMENT=53 DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    --  Records of `score`
    -- ----------------------------
    BEGIN;
    INSERT INTO `score` VALUES ('1', '1', '1', '10'), ('2', '1', '2', '9'), ('5', '1', '4', '66'), ('6', '2', '1', '8'), ('8', '2', '3', '68'), ('9', '2', '4', '99'), ('10', '3', '1', '77'), ('11', '3', '2', '66'), ('12', '3', '3', '87'), ('13', '3', '4', '99'), ('14', '4', '1', '79'), ('15', '4', '2', '11'), ('16', '4', '3', '67'), ('17', '4', '4', '100'), ('18', '5', '1', '79'), ('19', '5', '2', '11'), ('20', '5', '3', '67'), ('21', '5', '4', '100'), ('22', '6', '1', '9'), ('23', '6', '2', '100'), ('24', '6', '3', '67'), ('25', '6', '4', '100'), ('26', '7', '1', '9'), ('27', '7', '2', '100'), ('28', '7', '3', '67'), ('29', '7', '4', '88'), ('30', '8', '1', '9'), ('31', '8', '2', '100'), ('32', '8', '3', '67'), ('33', '8', '4', '88'), ('34', '9', '1', '91'), ('35', '9', '2', '88'), ('36', '9', '3', '67'), ('37', '9', '4', '22'), ('38', '10', '1', '90'), ('39', '10', '2', '77'), ('40', '10', '3', '43'), ('41', '10', '4', '87'), ('42', '11', '1', '90'), ('43', '11', '2', '77'), ('44', '11', '3', '43'), ('45', '11', '4', '87'), ('46', '12', '1', '90'), ('47', '12', '2', '77'), ('48', '12', '3', '43'), ('49', '12', '4', '87'), ('52', '13', '3', '87');
    COMMIT;
    
    -- ----------------------------
    --  Table structure for `student`
    -- ----------------------------
    DROP TABLE IF EXISTS `student`;
    CREATE TABLE `student` (
      `sid` int(11) NOT NULL AUTO_INCREMENT,
      `gender` char(1) NOT NULL,
      `class_id` int(11) NOT NULL,
      `sname` varchar(32) NOT NULL,
      PRIMARY KEY (`sid`),
      KEY `fk_class` (`class_id`),
      CONSTRAINT `fk_class` FOREIGN KEY (`class_id`) REFERENCES `class` (`cid`)
    ) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    --  Records of `student`
    -- ----------------------------
    BEGIN;
    INSERT INTO `student` VALUES ('1', '', '1', '理解'), ('2', '', '1', '钢蛋'), ('3', '', '1', '张三'), ('4', '', '1', '张一'), ('5', '', '1', '张二'), ('6', '', '1', '张四'), ('7', '', '2', '铁锤'), ('8', '', '2', '李三'), ('9', '', '2', '李一'), ('10', '', '2', '李二'), ('11', '', '2', '李四'), ('12', '', '3', '如花'), ('13', '', '3', '刘三'), ('14', '', '3', '刘一'), ('15', '', '3', '刘二'), ('16', '', '3', '刘四');
    COMMIT;
    
    -- ----------------------------
    --  Table structure for `teacher`
    -- ----------------------------
    DROP TABLE IF EXISTS `teacher`;
    CREATE TABLE `teacher` (
      `tid` int(11) NOT NULL AUTO_INCREMENT,
      `tname` varchar(32) NOT NULL,
      PRIMARY KEY (`tid`)
    ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    --  Records of `teacher`
    -- ----------------------------
    BEGIN;
    INSERT INTO `teacher` VALUES ('1', '张磊老师'), ('2', '李平老师'), ('3', '刘海燕老师'), ('4', '朱云海老师'), ('5', '李杰老师');
    COMMIT;
    
    SET FOREIGN_KEY_CHECKS = 1;
    查询每门课程被选修的次数
    SELECT course_id,COUNT(course_id) FROM score GROUP BY course_id
    
    查询之选修了一门课程的学生姓名和学号
    SELECT sname,sid FROM student WHERE sid IN (
    SELECT student_id FROM score GROUP BY student_id HAVING COUNT(course_id)=1)
    
    查询所有学生考出的成绩并按从高到低排序(成绩去重)
    SELECT student_id,SUM(num) FROM score GROUP BY student_id ORDER BY SUM(num) DESC
    
    查询平均成绩大于85的学生姓名和平均成绩
    SELECT sname,AVG(num) FROM student INNER JOIN score ON student.sid=score.student_id GROUP BY student_id HAVING AVG(num)>85
    
    查询生物成绩不及格的学生姓名和对应生物分数
    SELECT sname,num FROM student INNER JOIN (SELECT * FROM score WHERE course_id=1) a ON student.sid=a.student_id WHERE num<60
    
    查询在所有选修了李平老师课程的学生中,这些课程(李平老师的课程,不是所有课程)平均成绩最高的学生姓名
    -- SELECT cid FROM course WHERE teacher_id IN(SELECT tid FROM teacher WHERE tname LIKE '李平%')
    -- SELECT * FROM score WHERE course_id IN(SELECT cid FROM course WHERE teacher_id IN(SELECT tid FROM teacher WHERE tname LIKE '李平%'))
    -- SELECT * FROM student INNER JOIN (SELECT * FROM score WHERE course_id IN(SELECT cid FROM course WHERE teacher_id IN(SELECT tid FROM teacher WHERE tname LIKE '李平%'))) A ON student.sid=A.student_id
    SELECT sname FROM (SELECT * FROM student INNER JOIN (SELECT * FROM score WHERE course_id IN(SELECT cid FROM course WHERE teacher_id IN(SELECT tid FROM teacher WHERE tname LIKE '李平%'))) A ON student.sid=A.student_id) B GROUP BY B.student_id ORDER BY AVG(num) DESC LIMIT 1
    
     “李平”老师课程的学生姓名以及选修的课程名称;
    -- SELECT tid FROM teacher WHERE tname LIKE '李平%'
    -- SELECT cid FROM course WHERE teacher_id IN (SELECT tid FROM teacher WHERE tname LIKE '李平%')
    -- SELECT student_id,course_id FROM score WHERE course_id IN (SELECT cid FROM course WHERE teacher_id IN (SELECT tid FROM teacher WHERE tname LIKE '李平%'))
    -- SELECT * FROM student INNER JOIN (SELECT student_id,course_id FROM score WHERE course_id IN (SELECT cid FROM course WHERE teacher_id IN (SELECT tid FROM teacher WHERE tname LIKE '李平%'))) A ON student.sid=A.student_id
    
    SELECT sname,cname FROM (SELECT * FROM student INNER JOIN (SELECT student_id,course_id FROM score WHERE course_id IN (SELECT cid FROM course WHERE teacher_id IN (SELECT tid FROM teacher WHERE tname LIKE '李平%'))) A ON student.sid=A.student_id) B
    INNER JOIN course ON B.course_id=course.cid
    
    查询所有选修了学号为1的同学选修过的一门或者多门课程的同学学号和姓名;
    SELECT sname,student_id FROM student INNER JOIN score ON student.sid=score.student_id WHERE course_id IN (SELECT course_id FROM score WHERE student_id=1
    )
    
    任课最多的老师中学生单科成绩最高的学生姓名
    -- SELECT tid FROM teacher INNER JOIN course ON teacher.tid=course.teacher_id GROUP BY tname ORDER BY COUNT(tname) DESC LIMIT 1
    -- SELECT cid FROM course WHERE teacher_id=(SELECT tid FROM teacher INNER JOIN course ON teacher.tid=course.teacher_id GROUP BY tname ORDER BY COUNT(tname) DESC LIMIT 1))
    -- SELECT * FROM score WHERE course_id IN(SELECT cid FROM course WHERE teacher_id=(SELECT tid FROM teacher INNER JOIN course ON teacher.tid=course.teacher_id GROUP BY tname ORDER BY COUNT(tname) DESC LIMIT 1))
    -- SELECT student_id FROM student INNER JOIN (SELECT * FROM score WHERE course_id IN(SELECT cid FROM course WHERE teacher_id=(SELECT tid FROM teacher INNER JOIN course ON teacher.tid=course.teacher_id GROUP BY tname ORDER BY COUNT(tname) DESC LIMIT 1))) a
    -- ON student.sid=a.student_id ORDER BY num DESC LIMIT 1
    
    SELECT sname FROM student WHERE sid=(SELECT student_id FROM student INNER JOIN (SELECT * FROM score WHERE course_id IN(SELECT cid FROM course WHERE teacher_id=(SELECT tid FROM teacher INNER JOIN course ON teacher.tid=course.teacher_id GROUP BY tname ORDER BY COUNT(tname) DESC LIMIT 1))) a ON student.sid=a.student_id ORDER BY num DESC LIMIT 1)
  • 相关阅读:
    autoresizing代码实现
    控制器的view的加载优先级
    iOS控制器的创建方式
    关于深复制和浅复制
    关于textField
    h5页面列表滚动加载数据
    数据库中存储过程和函数的区别
    Docker搭建Portainer可视化界面
    Docker部署springboot,从简单Eureka开始
    docker安装rabbitmq
  • 原文地址:https://www.cnblogs.com/c491873412/p/7246771.html
Copyright © 2011-2022 走看看