• mysql 查询 (二)


    带 any/all 谓词的子查询

    例子:

    1. 查询出成绩比1号学生或3号学生高的其他学生的 的信息(stu)

    查看 stu 表

    方法1:使用 any 谓词

    方法2:使用聚合函数 min()

    2. 查询出成绩比1号学生和3号学生都高的其他学生的 的信息(stu)

    使用 all 谓词

     使用聚合函数 max()


    带有 exists 谓词的子查询

    例子:

    1. 查询未选课程的学生信息(stu中有,而stu_score中没有的学号)

    查看 stu, stu_score表

    使用 not exists

    2. 查询既选修了1号课程又选修了4号课程的学生的学号(stu_score)


    基于派生表的查询(from 型子查询)

    例子:

    1. 用from型子查询实现 select * from stu where sex = 'f' and grade <60:(性别女,分数低于60)


    连接查询

    多表连接查询原理:

    1. 先确定数据要用到哪些表。

    2. 将多个表先通过笛卡尔积变成一个表。

    3. 然后去除不符合逻辑的数据(根据where后的条件)。

     

    1. 不带谓词的连接(很少使用)

    例如:

    连接 stu 和 stu_score

    select stu.*, stu_score.* from stu,stu_score;

    2. 等值连接

    例子:

    (1) 查询选修了1号课程的所有学生的基本信息

    (2) 查询出所有学生的学号,姓名,课程名及各门功课的成绩 (stu,score,course)

    stu,score,course三表如下所示:

    查询:

     

    ---------------------------------------------------------------------------------------------------------------------

    自身连接

    例子

    查询既选修了1号课程又选修了2号课程的学生的学号(score)

    ----------------------------------------------------------------------------------------------------------------------------

    外连接

    例子

    查询出所有学生的学号,姓名,课程号,及各门功课的成绩 (stu,stu_score)包括没有选修任何课程的学生

    stu, stu_score 表

    stu 左连接 stu_score

    stu 右连接 stu_score

     


    集合查询

    1. 并操作:union

    例子:

    (1): 合并 A 和 B,id 对应的 num 求和

    A, B:

    合并:

  • 相关阅读:
    【MYSQL】SQL 的join 区别
    【Django】Django model与数据库操作对应关系(转)
    【Mysql】复制表结构+数据(转)
    【Django】Python web开发:几个模板系统的性能对比(转)
    【Mysql】Mysql关键字
    【Mysql】MySQL与Oracle的大小写问题
    Linux常用操作
    执行程序的两种方式
    Django框架的安装与使用
    web介绍
  • 原文地址:https://www.cnblogs.com/ZZG-GANGAN/p/13925171.html
Copyright © 2020-2023  润新知