• 重温mysql


    -- 新建学生表
    CREATE TABLE student(
    sno VARCHAR(20),
    sname VARCHAR(10),
    ssex VARCHAR(10),
    sbirthday DATETIME,
    class VARCHAR(20)
    )
    INSERT INTO student VALUES (108,'曾华','男',19770901,95033);
    INSERT INTO student VALUES (105,'匡明','男',19751002,95031);
    INSERT INTO student VALUES (107,'王丽','女',19760123,95033);
    INSERT INTO student VALUES (101,'李军','男',19760220,95033);
    INSERT INTO student VALUES (109,'王芳','女',19750210,95031);
    INSERT INTO student VALUES (103,'陆君','男',19740603,95031);
    
    -- 新建课程表
    CREATE TABLE course (
        cno VARCHAR(20),
        cname VARCHAR(10),
        tno VARCHAR(20)
    )
    INSERT INTO course VALUES( '3-205','计算机导论',825);
    INSERT INTO course VALUES( '9-245','操作系统',804);
    INSERT INTO course VALUES( '6-166','数字电路',856);
    INSERT INTO course VALUES( '9-888','高等数学',831);
    
    -- 新建成绩表
    CREATE TABLE score(
        sno VARCHAR(20),
        cno VARCHAR(20),
        degree DECIMAL(4,1)
    )
    INSERT INTO score VALUE (103,'3-245',86);
    INSERT INTO score VALUE (105,'3-245',75);
    INSERT INTO score VALUE (109,'3-245',68);
    INSERT INTO score VALUE (103,'3-105',92);
    INSERT INTO score VALUE (105,'3-105',88);
    INSERT INTO score VALUE (109,'3-105',76);
    INSERT INTO score VALUE (101,'3-105',64);
    INSERT INTO score VALUE (107,'3-105',91);
    INSERT INTO score VALUE (108,'3-105',78);
    INSERT INTO score VALUE (101,'6-166',85);
    INSERT INTO score VALUE (107,'6-166',79);
    INSERT INTO score VALUE (108,'6-166',81);
    
    -- 新建教师表
    CREATE TABLE teacher (
        tno VARCHAR(20),
        tname VARCHAR(10),
        tsex VARCHAR(20),
        tbirthday DATETIME,
        prof VARCHAR(20),
        depart VARCHAR(20)
    )
    INSERT INTO teacher VALUE (804,'李诚','男',19581202,'副教授','计算机系');
    INSERT INTO teacher VALUE (856,'张旭','男',19690312,'讲师','电子工程系');
    INSERT INTO teacher VALUE (825,'王萍','女',19770814,'助教','计算机系');
    INSERT INTO teacher VALUE (831,'刘冰','女',19770814,'助教','电子工程系');
    
    -- 1查询Student表中的所有记录的Sname、Ssex和Class列
    SELECT sname,ssex,class FROM student; 
    -- 2查询教师所有的单位即不重复的Depart列
    SELECT DISTINCT depart FROM teacher;
    -- 3查询Student表的所有记录
    SELECT * FROM student;
    -- 4查询Score表中成绩在60到80之间的所有记录
    SELECT * FROM score WHERE degree>=60 AND degree<=80;
    -- 5查询Score表中成绩为85,86或88的记录
    SELECT * FROM score WHERE degree=85 OR degree=86 OR degree=88;
    -- 6 查询Student表中“95031”班或性别为“女”的同学记录
    SELECT * FROM student WHERE class=95031 OR ssex='女';
    -- 7以Class降序查询Student表的所有记录
    SELECT * FROM student ORDER BY class DESC;
    -- 8以Cno升序、Degree降序查询Score表的所有记录
    SELECT * FROM score ORDER BY cno ASC, degree DESC;
    -- 9查询“95031”班的学生人数
    SELECT COUNT(*) FROM student WHERE class=95031;
    -- 10查询每门课的平均成绩
    SELECT cno,AVG(degree) FROM score GROUP BY cno; 
    -- 11、查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。
    SELECT AVG(degree) FROM score WHERE cno LIKE '3%' GROUP BY cno HAVING COUNT(cno)>4
    SELECT AVG(Degree) FROM score WHERE Cno IN 
    (SELECT Cno FROM score GROUP BY Cno HAVING COUNT(*)>5)
     AND Cno LIKE '3%' GROUP BY Cno
    SELECT AVG(Degree) FROM score WHERE Cno LIKE '3%' 
    GROUP BY Cno HAVING COUNT(*)>5
    -- 12、查询分数大于70,小于90的Sno列。
    SELECT sno AS '分数' FROM score WHERE degree BETWEEN 70 AND 90
    -- 13、查询所有学生的Sname、Cno和Degree列。
    SELECT sname,cno,degree FROM  student JOIN score ON 
    student.Sno=score.Sno
    -- 15、查询所有学生的Sname、Cname和Degree列。
    SELECT * FROM student JOIN score ON
    student.`sno`=score.`sno` JOIN course ON 
    score.`cno` = course.`cno`
    -- 16、查询“95033”班学生的平均分。
    SELECT  AVG(degree) AS '平均分'FROM score 
    WHERE sno IN
    (SELECT sno FROM student WHERE class='95033')
    -- 17、查询和学号为108的同学同年出生的所有学生的Sno、Sname和Sbirthday列。
    SELECT sno AS '编号',sname AS '姓名',sbirthday AS '出生日期' FROM student 
    WHERE YEAR(student.`sbirthday`)=(SELECT YEAR(sbirthday) 
    FROM student WHERE sno='108')
    -- 18、查询“张旭“教师任课的学生成绩(姓名)。
    SELECT degree AS '分数'FROM score,teacher,course 
    WHERE teacher.tname='张旭' AND teacher.`tno`=course.`tno` 
    AND course.`cno`=score.`cno`
    SELECT tno FROM teacher WHERE tname='张旭'
    SELECT cno FROM course WHERE tno=856
    SELECT sno,degree FROM score JOIN student
    ON score.`sno` WHERE cno='6-116'
    -- 19、查询考计算机导论的学生成绩
    SELECT sno,cno,degree FROM score WHERE cno IN (SELECT cno FROM course WHERE tno IN (SELECT tno FROM teacher WHERE depart='计算机系'))
    -- 20、查询李诚老师教的课程名称
    
    -- 21、教高等数学的老师是哪个系的
    
    
    -- 22、查询选修某课程的同学人数多于5人的教师姓名。
    SELECT tname FROM teacher WHERE tno IN (selecet tno FROM course WHERE cno IN(SELECT cno FROM score GROUP BY cno HAVING COUNT(*)>5))
    
    -- 23、查询95033班和95031班全体学生的记录。
    SELECT * FROM Student WHERE Class IN('95031','95033')
    
    -- 24、查询存在有85分以上成绩的课程Cno.
    SELECT DISTINCT Cno FROM Score WHERE Degree > 85
    -- 25、查询出“计算机系“教师所教课程的成绩表。
    
    SELECT * FROM Score WHERE Cno IN(SELECT Cno FROM Course 
    WHERE Tno IN(SELECT Tno FROM Teacher WHERE depart = '计算机系'))
    
    -- 26、 查询所有教师和同学的name、sex和birthday.
    SELECT Sname,Ssex,Sbirthday FROM Student UNION
    SELECT Tname,Tsex,Tbirthday FROM Teacher
    
    
    -- 27、查询所有“女”教师和“女”同学的name、sex和birthday.
    
    SELECT Sname,Ssex,Sbirthday FROM Student WHERE Ssex='女' UNION
    SELECT Tname,Tsex,Tbirthday FROM Teacher WHERE Tsex='女'
    
    
    -- 28、 查询所有任课教师的Tname和Depart.
    SELECT tname,depart FROM teacher WHERE tname  IN (SELECT DISTINCT tname FROM teacher,course,score 
    WHERE teacher.`tno`=course.`tno` AND course.cno=score.`cno`)
    -- 29、查询所有未讲课的教师的Tname和Depart. 
    
    SELECT Tname,depart FROM Teacher WHERE Tno IN(SELECT Tno FROM Course 
    WHERE Cno NOT IN(SELECT Cno FROM Score))
    -- 30、查询至少有2名男生的班号。
    SELECT class AS '班级'班号 FROM student WHERE ssex='男' GROUP BY class HAVING COUNT(*)>1
    
    -- 31、查询Student表中不姓“王”的同学记录。
    
    SELECT * FROM student WHERE sname NOT LIKE (‘王%’)
    
    -- 32、查询Student表中每个学生的姓名和年龄。
    SELECT Sname,YEAR(NOW())-YEAR(Sbirthday) FROM Student
    -- 33、查询Student表中最大和最小的Sbirthday日期值。
    SELECT MAX(Sbirthday) FROM Student UNION SELECT MIN(Sbirthday) FROM Student
    -- 34、以班号和年龄从大到小的顺序查询Student表中的全部记录。
    SELECT * FROM Student ORDER BY Class DESC,Sbirthday
    -- 35、查询“男”教师及其所上的课程。
    SELECT * FROM Teacher JOIN Course ON Teacher.Tno = Course.Tno 
    WHERE Teacher.Tsex='男'
    -- 36、查询最高分同学的Sno、Cno和Degree列。
    SELECT * FROM Score WHERE Degree = (SELECT MAX(Degree) FROM Score )
    -- 37、查询和“李军”同性别的所有同学的Sname.
    SELECT Sname FROM Student WHERE Ssex = (SELECT Ssex FROM Student WHERE Sname='李军')
    -- 38、查询和“李军”同性别并同班的同学Sname.
    SELECT Sname FROM Student WHERE Ssex = (SELECT Ssex FROM Student WHERE Sname='李军') 
    AND Class=(SELECT Class FROM Student WHERE Sname = '李军')
    -- 39、查询所有选修“计算机导论”课程的“男”同学的成绩表。
    SELECT * FROM Score WHERE Sno IN(SELECT Sno FROM Student WHERE Ssex='男')
    AND Cno IN(SELECT Cno FROM Course WHERE Cname='计算机导论')
  • 相关阅读:
    chrome浏览器postman 插件安装
    使用poi解决导出excel内下拉框枚举项较多的问题
    Nginx(三)------nginx 反向代理
    webpack 内存溢出 Allocation failed
    Postman 安装及使用入门教程 (谷歌浏览器插件版)
    jquery 控制 video 视频播放和暂停
    百度编辑器ueditor 光标位置的坐标
    mkdocs 生成帮助文档
    js 日期 相关
    vue-cli3 第三版安装搭建项目
  • 原文地址:https://www.cnblogs.com/zs0322/p/10809351.html
Copyright © 2020-2023  润新知