设为首页 收藏本站
查看: 695|回复: 0

[经验分享] python_day16_DB_SQL

[复制链接]

尚未签到

发表于 2018-8-5 13:09:58 | 显示全部楼层 |阅读模式
// 查看老师对应的学生   内连接inner join  
MariaDB [hellodb]> select * from students inner join teachers on students.TeacherID=teachers.TID;
  
    +-------+-------------+-----+--------+---------+-----------+-----+---------------+-----+--------+
  
    | StuID | Name        | Age | Gender | ClassID | TeacherID | TID | Name          | Age | Gender |
  
    +-------+-------------+-----+--------+---------+-----------+-----+---------------+-----+--------+
  
    |     5 | Yu Yutong   |  26 | M      |       3 |         1 |   1 | Song Jiang    |  45 | M      |
  
    |     1 | Shi Zhongyu |  22 | M      |       2 |         3 |   3 | Miejue Shitai |  77 | F      |
  
    |     4 | Ding Dian   |  32 | M      |       4 |         4 |   4 | Lin Chaoying  |  93 | F      |
  
    +-------+-------------+-----+--------+---------+-----------+-----+---------------+-----+--------+
  
    3 rows in set (0.00 sec)
  

  

  
// 只显示老师学生姓名
  
MariaDB [hellodb]> select students.Name as 学生姓名,teachers.Name as 老师姓名 from students inner join teachers on students.TeacherID=teachers.TID;
  
    +-------------+---------------+
  
    | 学生姓名    | 老师姓名      |
  
    +-------------+---------------+
  
    | Yu Yutong   | Song Jiang    |
  
    | Shi Zhongyu | Miejue Shitai |
  
    | Ding Dian   | Lin Chaoying  |
  
    +-------------+---------------+
  
    3 rows in set (0.00 sec)
  

  
// 显示班级对应的学生人数
  
    group_concat()  -- 将重复的显示在一行,
  
    group by classid将班级id进行分组查询
  

  
MariaDB [hellodb]> select classes.ClassID as 班级id, classes.Class as 班级,group_concat(students.Name) as 学生姓名 from students inner join classes on students.ClassID = classes.ClassID group by classes.ClassID;
  
    +--------+----------------+------------------------------------------------------+
  
    | 班级id | 班级           | 学生姓名                                             |
  
    +--------+----------------+------------------------------------------------------+
  
    |      1 | Shaolin Pai    | Xiao Qiao,Wen Qingqing,Xu Zhu,Shi Potian             |
  
    |      2 | Emei Pai       | Shi Zhongyu,Tian Boguang,Xie Yanke                   |
  
    |      3 | QingCheng Pai  | Yue Lingshan,Yu Yutong,Lu Wushuang,Xi Ren            |
  
    |      4 | Wudang Pai     | Duan Yu,Ma Chao,Ding Dian,Lin Chong                  |
  
    |      5 | Riyue Shenjiao | Shi Qing                                             |
  
    |      6 | Lianshan Pai   | Xue Baochai,Ren Yingying,Huang Yueying,Yuan Chengzhi |
  
    |      7 | Ming Jiao      | Diao Chan,Hua Rong,Lin Daiyu                         |
  
    +--------+----------------+------------------------------------------------------+
  

  
// 查看每个课程对应的分数
  
MariaDB [hellodb]> select courses.courseid as 课程编号, courses.course as 课程名称,group_concat(scores.score) as 课程分数 from courses inner join scores on courses.courseid = scores.courseid group by courses.courseid;
  
    +----------+----------------+-------------+
  
    | 课程编号 | 课程名称       | 课程分数    |
  
    +----------+----------------+-------------+
  
    |        1 | Hamo Gong      | 39,96,86    |
  
    |        2 | Kuihua Baodian | 89,88,77,47 |
  
    |        3 | Jinshe Jianfa  | 93          |
  
    |        4 | Taiji Quan     | 57          |
  
    |        5 | Daiyu Zanghua  | 97,71       |
  
    |        6 | Weituo Zhang   | 75,93       |
  
    |        7 | Dagou Bangfa   | 83,63       |
  
    +----------+----------------+-------------+
  
    7 rows in set (0.00 sec)
  

  
// 查看每个课程的总分数
  
MariaDB [hellodb]> select courses.courseid as 课程编号, courses.course as 课程名称,sum(scores.score) as 课程分数 from courses inner join scores on courses.courseid = scores.courseid group by courses.courseid;
  
    +----------+----------------+----------+
  
    | 课程编号 | 课程名称       | 课程分数 |
  
    +----------+----------------+----------+
  
    |        1 | Hamo Gong      |      221 |
  
    |        2 | Kuihua Baodian |      301 |
  
    |        3 | Jinshe Jianfa  |       93 |
  
    |        4 | Taiji Quan     |       57 |
  
    |        5 | Daiyu Zanghua  |      168 |
  
    |        6 | Weituo Zhang   |      168 |
  
    |        7 | Dagou Bangfa   |      146 |
  
    +----------+----------------+----------+
  
    7 rows in set (0.00 sec)
  

  
// 接上面,找出分数大于100的班级
  
    having 条件 可以直接使用as name
  
MariaDB [hellodb]> select courses.courseid as 课程编号, courses.course as 课程名称,sum(scores.score) as 课程分数 from courses inner join scores on courses.courseid = scores.courseid  group by courses.courseid having 课程分数>100;
  
    +----------+----------------+----------+
  
    | 课程编号 | 课程名称       | 课程分数 |
  
    +----------+----------------+----------+
  
    |        1 | Hamo Gong      |      221 |
  
    |        2 | Kuihua Baodian |      301 |
  
    |        5 | Daiyu Zanghua  |      168 |
  
    |        6 | Weituo Zhang   |      168 |
  
    |        7 | Dagou Bangfa   |      146 |
  
    +----------+----------------+----------+
  
    5 rows in set (0.00 sec)
  

  
// 查找出学生对应的班级以及对应班级的分数
  
    多表left join 连接查询
  

  
MariaDB [hellodb]> select courses.courseid,courses.course,students.Name,scores.score from scores left join students on scores.StuID = students.stuid left join courses on scores.courseid = courses.courseid;
  
    +----------+----------------+-------------+-------+
  
    | courseid | course         | Name        | score |
  
    +----------+----------------+-------------+-------+
  
    |        2 | Kuihua Baodian | Shi Zhongyu |    77 |
  
    |        6 | Weituo Zhang   | Shi Zhongyu |    93 |
  
    |        2 | Kuihua Baodian | Shi Potian  |    47 |
  
    |        5 | Daiyu Zanghua  | Shi Potian  |    97 |
  
    |        2 | Kuihua Baodian | Xie Yanke   |    88 |
  
    |        6 | Weituo Zhang   | Xie Yanke   |    75 |
  
    |        5 | Daiyu Zanghua  | Ding Dian   |    71 |
  
    |        2 | Kuihua Baodian | Ding Dian   |    89 |
  
    |        1 | Hamo Gong      | Yu Yutong   |    39 |
  
    |        7 | Dagou Bangfa   | Yu Yutong   |    63 |
  
    |        1 | Hamo Gong      | Shi Qing    |    96 |
  
    |        1 | Hamo Gong      | Xi Ren      |    86 |
  
    |        7 | Dagou Bangfa   | Xi Ren      |    83 |
  
    |        4 | Taiji Quan     | Lin Daiyu   |    57 |
  
    |        3 | Jinshe Jianfa  | Lin Daiyu   |    93 |
  
    +----------+----------------+-------------+-------+
  
    15 rows in set (0.00 sec)
  

  
// 查看学生对应班级,以及分数
  
select group_concat(courses.course) as 班级名称,students.Name as 学生姓名,group_concat(scores.score) as 分数 from scores
  
    left join students on scores.StuID = students.stuid
  
    left join courses on scores.courseid= courses.courseid group by Name;
  

  
    +------------------------------+-------------+-------+
  
    | 班级名称                     | 学生姓名    | 分数  |
  
    +------------------------------+-------------+-------+
  
    | Kuihua Baodian,Daiyu Zanghua | Ding Dian   | 89,71 |
  
    | Jinshe Jianfa,Taiji Quan     | Lin Daiyu   | 93,57 |
  
    | Daiyu Zanghua,Kuihua Baodian | Shi Potian  | 97,47 |
  
    | Hamo Gong                    | Shi Qing    | 96    |
  
    | Weituo Zhang,Kuihua Baodian  | Shi Zhongyu | 93,77 |
  
    | Dagou Bangfa,Hamo Gong       | Xi Ren      | 83,86 |
  
    | Weituo Zhang,Kuihua Baodian  | Xie Yanke   | 75,88 |
  
    | Dagou Bangfa,Hamo Gong       | Yu Yutong   | 63,39 |
  
    +------------------------------+-------------+-------+
  
    8 rows in set (0.00 sec)
  

  
// 接上,查看总分
  
select group_concat(courses.course) as 班级名称,students.Name as 学生姓名,sum(scores.score) as 分数 from scores
  
    left join students on scores.StuID = students.stuid
  
    left join courses on scores.courseid= courses.courseid group by Name;
  

  
    +------------------------------+-------------+------+
  
    | 班级名称                     | 学生姓名    | 分数 |
  
    +------------------------------+-------------+------+
  
    | Kuihua Baodian,Daiyu Zanghua | Ding Dian   |  160 |
  
    | Jinshe Jianfa,Taiji Quan     | Lin Daiyu   |  150 |
  
    | Daiyu Zanghua,Kuihua Baodian | Shi Potian  |  144 |
  
    | Hamo Gong                    | Shi Qing    |   96 |
  
    | Weituo Zhang,Kuihua Baodian  | Shi Zhongyu |  170 |
  
    | Dagou Bangfa,Hamo Gong       | Xi Ren      |  169 |
  
    | Weituo Zhang,Kuihua Baodian  | Xie Yanke   |  163 |
  
    | Dagou Bangfa,Hamo Gong       | Yu Yutong   |  102 |
  
    +------------------------------+-------------+------+
  

  
// 接上,查看总分大于120分以上的
  
select group_concat(courses.course) as 班级名称,students.Name as 学生姓名,sum(scores.score) as 分数 from scores
  
    left join students on scores.StuID = students.stuid
  
    left join courses on scores.courseid= courses.courseid group by Name
  
    HAVING 分数>120;
  

  
    +------------------------------+-------------+------+
  
    | 班级名称                     | 学生姓名    | 分数 |
  
    +------------------------------+-------------+------+
  
    | Kuihua Baodian,Daiyu Zanghua | Ding Dian   |  160 |
  
    | Jinshe Jianfa,Taiji Quan     | Lin Daiyu   |  150 |
  
    | Daiyu Zanghua,Kuihua Baodian | Shi Potian  |  144 |
  
    | Weituo Zhang,Kuihua Baodian  | Shi Zhongyu |  170 |
  
    | Dagou Bangfa,Hamo Gong       | Xi Ren      |  169 |
  
    | Weituo Zhang,Kuihua Baodian  | Xie Yanke   |  163 |
  
    +------------------------------+-------------+------+
  
    6 rows in set (0.00 sec)
  

  
// 右连接,以右边为主
  
select students.name as 学生姓名,teachers.name as 老师姓名 from teachers
  
  RIGHT join students on  teachers.tid = students.teacherid;
  
      +---------------+---------------+
  
    | 学生姓名      | 老师姓名      |
  
    +---------------+---------------+
  
    | Shi Zhongyu   | Miejue Shitai |
  
    | Shi Potian    | NULL          |
  
    | Xie Yanke     | NULL          |
  
    | Ding Dian     | Lin Chaoying  |
  
    | Yu Yutong     | Song Jiang    |
  
    | Shi Qing      | NULL          |
  
    | Xi Ren        | NULL          |
  
    | Lin Daiyu     | NULL          |
  
    | Ren Yingying  | NULL          |
  
    | Yue Lingshan  | NULL          |
  
    | Yuan Chengzhi | NULL          |
  
    | Wen Qingqing  | NULL          |
  
    | Tian Boguang  | NULL          |
  
    ......
  

  
    // 如有更多问题,请留言

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-547039-1-1.html 上篇帖子: python模块讲解 下篇帖子: python -- 飞机大战(实验)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表