美文网首页
mysql常用命令(4)高级查询

mysql常用命令(4)高级查询

作者: Yossef | 来源:发表于2018-02-08 19:39 被阅读0次

    嵌套子查询:

    查询工资比张学友高的人的信息:

    select * from wages where uwages>(select uwages from wages where name="张学友");

    查询工资高于50000的人的信息  用嵌套来示范 in是包含 not in 是不包含:

    select * from wages where uwages in (select uwages from wages where uwages>50000);

    查询因为加班得到奖金的人:

    select * from wages where name in (select name from bonus where breason="加班");

    any:满足查询出来的数据任何一个即可

    all: 必须满足所有

    查询奖金比奖金表里“某一”人奖金低的信息:

    用any:

    select * from wages where name in (select name from bonus where howmuch from bonus));

    用聚合函数 max 最大值:

    select * from wages where name in (select name from bonus where howmuch<(select max(howmuch) from bonus));    //推荐用这个

    查询奖金比所有加班人员的奖金都少的人员的个人工资信息:

    select * from wages where name in(select name from bonus where howmuch from bonus where breason="加班"));

    内连接:

    查询员工表与奖金表姓名相对应的信息:

    select * from wages join bonus on wages.name=bonus.name;

    内链接会查出两个表共有的数据

    外连接:

    左外连接:

    查询员工表所有信息以及奖金表与员工表姓名相对应的信息:

    select * from wages left join bonus on wages.name=bonus.name;

    这时候左边的表会显示所有信息 右边的表根据左边的来 左边比他多 他就会显示几行null 左边比他少 他就会少显示几行

    右外连接:

    查询奖金表所有信息 员工表与奖金表姓名相同的信息:

    select * from wages right join bonus on bonus.name=wages.name;

    这时候会根据右边的表来查询 右边的表数据全部显示出来 左边依着右边来

    交叉连接:

    交叉联接也叫非限制联接,它将两个表不加任何约束的组合起来。在数学上,就是两个表的笛卡尔积。交叉联接后得到的行数是两个被联接表的行数的乘积。

    查询员工表和奖金的数据 并且每一个条数据相比:

    select * from wages cross join bonus;

    相关文章

      网友评论

          本文标题:mysql常用命令(4)高级查询

          本文链接:https://www.haomeiwen.com/subject/nxfxtftx.html