• 数据库部分---高级查询;


    例子;


    1.链接查询(查询多张表的数据,有外键关系的),是对查询后列的扩展

    select * from 表名1,表名2;  #会形成笛卡尔积,几张表的数据挨个匹配,数据的数量是每张的数量相乘,会产生冗余;


    select * from 表名1,表名2 where 表名1.列名=表名2.列名;这样就去掉了冗余的数据;


    上边的两个表结合后,有title和code重复的列,去掉多余的列:select 表1.列1,表1.列2,表1.列3....表2.列2.. from 表名1,表名2 where 表名1.列名=表名2.列名;


    select * from 表1 join 表2 on 表1.列名=表2.列名;

    上边的两个表结合后,有title和code重复的列,去掉多余的列:select 表1.列1,表1.列2,表1.列3....表2.列2.. from 表名1 join 表名2 on表名1.列名=表名2.列名;


    2.联合查询,对查询后行的扩展,把多张表的数据放到一起显示,查询的列的数量要相同

    select name,firm from family

    union

    select code,name from title

    3.子查询   

    父查询:外层查询

    子查询:里层查询

    子查询先执行,子查询的结果作为父查询的条件

    (1)无关子查询

    子查询在执行的时候和父查询没有关系子查询可以单独执行

    1.查询民族为汉族的所有人员信息

    父查询:select * from info where nation=()

    子查询:select code from nation where name='汉族'    nation与code是有外键关系的列

    把子查询的语句放到父查询的括号内

    结合起来:select * from info where nation=(select code from nation where name='汉族')        相当于nation=(code)

     2.查询系列名为宝马5的所有汽车信息

    (2)相关子查询

    子查询在执行的时候和父查询有关系,子查询不可以单独执行

    1.查询汽车表中油耗小于该系列平均油耗的所有汽车信息

    父查询:select * from car where oil<(该系列平均油耗)

    子查询:select avg(oil) from car where brand=该系列

    select * from car where oil<(select avg(oil) from car where brand=该系列)

    由于父查询和子查询都是查询的一张表,所以我们给父查询查询的表名,子查询查询的表名进行命名,

    select * from car as aa where oil<(select avg(oil) from car as bb where brand=该系列)

    然后再确定‘该系列’,

    select * from car as aa where oil<(select avg(oil) from car as bb where bb.brand=aa.brand)

  • 相关阅读:
    [SUCTF 2019]Pythonginx
    Buuctf-RSA1
    [网鼎杯 2020 朱雀组]phpweb
    [BJDCTF2020]ZJCTF,不过如此
    CTFHub-信息泄露
    vaex读取和处理大型文件的方法
    "生猪数据统计分析系统"----帮助文档
    法治理论1
    很短暂,很喜欢,很遗憾
    「CF1513E Cost Equilibrium」
  • 原文地址:https://www.cnblogs.com/xingyue1988/p/6130409.html
Copyright © 2020-2023  润新知