• MySql数据库_06


    2019年12月17日 星期二 CQCET

    复杂数据查询-内部查询(子查询)

    子查询效率相对多表连接查询效率更高,
    子查询就是一个select中在包含一个select,外层select叫外部查询,内部的叫内内部查询或子查询

    语法:
    在这里插入图片描述

    内部查询支持运算符查询
    比如:列表运算符 IN ;比较运算符 大于 小于等…

    比较运算符:
    在这里插入图片描述

    • IN的内部查询与应用

    kc和xs_kc两个表应用in查询。
    在这里插入图片描述
    根据xs_kc来查询kc里的选修情况,查询那些课程被选修过了。

    select 课程名,授课教师,学分 from kc where 课程号 in (select 课程号 from xs_kc);
    

    在这里插入图片描述

    根据xs_kc表里的课程号来查的
    在这里插入图片描述

    反之

    select 课程名,授课教师,学分 from kc where 课程号 not in (select 课程号 from xs_kc);
    

    在这里插入图片描述

    • 使用ANY的内部查询

    ANY子查询表示,只要查询中一行为真,则主查询where结果为真
    any有三种表达方式

    =ANY;>ANY(>=ANY)和<ANY(<=ANY)
    其中=any和in子查询一样;>any表示返回记录中最大值;<any表示返回记录着最小值。

     select * from xs_kc where 成绩>any (select 成绩 from xs_kc where 学号=2016110101 and 课程号 =101);
    

    在这里插入图片描述

    select * from xs_kc where 课程号=101 and 成绩<any (select 成绩 from xs_kc where 课程号=101 and 学号=2016110101);
    

    在这里插入图片描述

    • EXISTS子查询与应用
      exists是一个布尔类型,返回True或 False,作用是检查查询是否有返回值。

    在这里插入图片描述

    • ALL的子查询

    all查询有两种模式>all(>=all)和<all(<=all)
    其中>all表示返回记录最大值要大,<any表示返回记录最小值要小。

    它与any的不同点
    Any:>Any 表示至少大于一个值,即大于最小值。

    All: >All 表示大于每一个值。换句话说,它表示大于最大值

     select * from xs_kc where 课程号=102 and  成绩>all (select 成绩 from xs_kc where 课程号 = 102 and 学号=2016110101);
    

    在这里插入图片描述

    • 合并查询
      sql注入常用
      语法:
    select 列名 from 表名 union select 列名 from 表名2
    

    在这里插入图片描述
    union 会去掉同行
    union all 不会去掉同行

    在这里插入图片描述

    • 查询结果输出到其他表

    输出后它保持原有数据类型,属性保留非空属性和默认值属性。

    语法:

    create table 新表 select 列名 from 原表 where 条件;
    

    在这里插入图片描述

    备份xs_kc表

    在这里插入图片描述

    这种输出并不会保持原表的主键,外键约束等其它属性。

    在这里插入图片描述

  • 相关阅读:
    sql 内链接
    使用python 写一个自动windows桌面壁纸的程序
    在windows使用pyinstall 打包 flask 再使用nsis软件打包成安装包
    超微主板ibm密码
    jenkins邮件模板
    gp集群常用命令
    shell小知识
    Linux配置免密
    文件基础命令
    华为初识命令
  • 原文地址:https://www.cnblogs.com/cqnswp/p/12568876.html
Copyright © 2020-2023  润新知