Navicat与MySQL使用

#MySQL中的注释 有两种
    --
    #

#在navicat中如何快速的注释和解注释
    ctrl + ?  加注释
    ctrl + ?  基于上述操作再来一次就是解开注释
    如果你的navicat版本不一致还有可能是
    ctrl + shift + ?解开注释

 练习题:

 

 

"""
-- 1、查询所有的课程的名称以及对应的任课老师姓名
-- SELECT
--     course.cname,
--     teacher.tname 
-- FROM
--     course
--     INNER JOIN teacher ON course.teacher_id = teacher.tid;

-- 2、查询平均成绩大于八十分的同学的姓名和平均成绩   
-- SELECT
--     student.sname,
--     t1.avg_num 
-- FROM
--     student
--     INNER JOIN (
--     SELECT
--         score.student_id,
--         avg( num ) AS avg_num 
--     FROM
--         score
--         INNER JOIN student ON score.student_id = student.sid 
--     GROUP BY
--         score.student_id 
--     HAVING
--         AVG( num ) > 80 
--     ) AS t1 ON student.sid = t1.student_id;     #将联表查询结果as t1起别名


-- 3、 查询没有报李平老师课的学生姓名
# 分步操作
# 1 先找到李平老师教授的课程id
# 2 再找所有报了李平老师课程的学生id
# 3 之后去学生表里面取反 就可以获取到没有报李平老师课程的学生姓名
-- SELECT
--     student.sname 
-- FROM
--     student 
-- WHERE
--     sid NOT IN (
--     SELECT DISTINCT
--         score.student_id 
--     FROM
--         score 
--     WHERE
--         score.course_id IN ( SELECT course.cid FROM teacher INNER JOIN course ON teacher.tid = course.teacher_id WHERE teacher.tname = '李平老师' ) 
--     );

-- 4、 查询没有同时选修物理课程和体育课程的学生姓名
--     (只要选了一门的 选了两门和没有选的都不要)
# 1 先查物理和体育课程的id
# 2 再去获取所有选了物理和体育的学生数据
# 3 按照学生分组 利用聚合函数count筛选出只选了一门的学生id
# 4 依旧id获取学生姓名
-- SELECT
--     student.sname 
-- FROM
--     student 
-- WHERE
--     student.sid IN (
--     SELECT
--         score.student_id 
--     FROM
--         score 
--     WHERE
--         score.course_id IN ( SELECT course.cid FROM course WHERE course.cname IN ( '物理', '体育' ) ) 
--     GROUP BY
--         score.student_id 
--     HAVING
--         COUNT( score.course_id ) = 1 
--     );

-- 5、 查询挂科超过两门(包括两门)的学生姓名和班级
# 1 先筛选出所有分数小于60的数据
# 2 按照学生分组 对数据进行计数获取大于等于2的数据
SELECT
    class.caption,
    student.sname 
FROM
    class
    INNER JOIN student ON class.cid = student.class_id 
WHERE
    student.sid IN (
    SELECT
        score.student_id 
    FROM
        score 
    WHERE
        score.num < 60 GROUP BY score.student_id HAVING COUNT( score.course_id ) >= 2 
    );
"""

 

posted @ 2020-05-07 14:19  耗油炒白菜  阅读(197)  评论(0编辑  收藏  举报